PyTorch'u kullanarak Gemma'yı çalıştırma

ai.google.dev adresinde görüntüleyin Google Colab'da çalıştırma Kaynağı GitHub'da görüntüleyin

Bu kılavuzda, Gemma 3 sürümü ve sonraki modelleri istemek için görüntü verilerinin nasıl kullanılacağı da dahil olmak üzere Gemma'nın PyTorch çerçevesini kullanarak nasıl çalıştırılacağı gösterilmektedir. Gemma PyTorch uygulaması hakkında daha fazla bilgi için proje deposundaki README dosyasını inceleyin.

Kurulum

Aşağıdaki bölümlerde, Kaggle'dan indirmek için Gemma modellerine nasıl erişeceğiniz, kimlik doğrulama değişkenlerini ayarlama, bağımlılıkları yükleme ve paketleri içe aktarma gibi geliştirme ortamınızı nasıl ayarlayacağınız açıklanmaktadır.

Sistem gereksinimleri

Bu Gemma Pytorch kitaplığı, Gemma modelini çalıştırmak için GPU veya TPU işlemcileri gerektirir. Standart Colab CPU Python çalışma zamanı ve T4 GPU Python çalışma zamanı, Gemma 1B, 2B ve 4B boyutlarında modelleri çalıştırmak için yeterlidir. Diğer GPU'lar veya TPU'lar için gelişmiş kullanım alanları için lütfen Gemma PyTorch deposundaki README dosyasını inceleyin.

Kaggle'da Gemma'ya erişim

Bu eğitimde yer alan adımları tamamlamak için öncelikle Gemma kurulumu sayfasında yer alan kurulum talimatlarını uygulamanız gerekir. Bu talimatlarda aşağıdakilerin nasıl yapılacağı gösterilmektedir:

  • kaggle.com adresinden Gemma'ya erişin.
  • Gemma modelini çalıştıracak yeterli kaynağa sahip bir Colab çalışma zamanı seçin.
  • Kaggle kullanıcı adı ve API anahtarı oluşturup yapılandırın.

Gemma kurulumunu tamamladıktan sonra, Colab ortamınız için ortam değişkenlerini ayarlayacağınız sonraki bölüme geçin.

Ortam değişkenlerini ayarlama

KAGGLE_USERNAME ve KAGGLE_KEY için ortam değişkenlerini ayarlayın. "Erişim izni verilsin mi?" mesajı gösterildiğinde gizli erişim izni vermeyi kabul edin.

import os
from google.colab import userdata # `userdata` is a Colab API.

os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

Bağımlıları yükleme

pip install -q -U torch immutabledict sentencepiece

Model ağırlıklarını indirme

# Choose variant and machine type
VARIANT = '4b-it' 
MACHINE_TYPE = 'cuda'

CONFIG = VARIANT[:2]
if CONFIG == '4b':
  CONFIG = '4b-v1'
import kagglehub

# Load model weights
weights_dir = kagglehub.model_download(f'google/gemma-3/pyTorch/gemma-3-{VARIANT}')

Model için parçalayıcıyı ve kontrol noktası yollarını ayarlayın.

# Ensure that the tokenizer is present
tokenizer_path = os.path.join(weights_dir, 'tokenizer.model')
assert os.path.isfile(tokenizer_path), 'Tokenizer not found!'

# Ensure that the checkpoint is present
ckpt_path = os.path.join(weights_dir, f'model.ckpt')
assert os.path.isfile(ckpt_path), 'PyTorch checkpoint not found!'

Çalıştırma ortamını yapılandırma

Aşağıdaki bölümlerde, Gemma'yı çalıştırmak için nasıl bir PyTorch ortamı hazırlayacağınız açıklanmaktadır.

PyTorch çalıştırma ortamını hazırlama

Gemma Pytorch deposunu klonlayarak PyTorch model yürütme ortamını hazırlayın.

git clone https://github.com/google/gemma_pytorch.git
Cloning into 'gemma_pytorch'...
remote: Enumerating objects: 239, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 239 (delta 86), reused 58 (delta 55), pack-reused 116
Receiving objects: 100% (239/239), 2.18 MiB | 20.83 MiB/s, done.
Resolving deltas: 100% (135/135), done.
import sys

sys.path.append('gemma_pytorch/gemma')
from gemma_pytorch.gemma.config import get_model_config
from gemma_pytorch.gemma.gemma3_model import Gemma3ForMultimodalLM

import os
import torch

Model yapılandırmasını ayarlama

Modeli çalıştırmadan önce Gemma varyantı, kelime parçalayıcı ve kesme seviyesi gibi bazı yapılandırma parametrelerini ayarlamanız gerekir.

# Set up model config.
model_config = get_model_config(VARIANT)
model_config.dtype = "float32" if MACHINE_TYPE == "cpu" else "float16"
model_config.tokenizer = tokenizer_path

Cihaz bağlamını yapılandırma

Aşağıdaki kod, modeli çalıştırmak için cihaz bağlamını yapılandırır:

@contextlib.contextmanager
def _set_default_tensor_type(dtype: torch.dtype):
    """Sets the default torch dtype to the given dtype."""
    torch.set_default_dtype(dtype)
    yield
    torch.set_default_dtype(torch.float)

Modeli oluşturma ve yükleme

İstekleri çalıştırmaya hazırlanmak için modeli ağırlıklarıyla birlikte yükleyin.

device = torch.device(MACHINE_TYPE)
with _set_default_tensor_type(model_config.get_dtype()):
    model = Gemma3ForMultimodalLM(model_config)
    model.load_state_dict(torch.load(ckpt_path)['model_state_dict'])
    model = model.to(device).eval()
print("Model loading done.")

print('Generating requests in chat mode...')

Tahmin yürütme

Aşağıda, sohbet modunda ve birden fazla istekle oluşturma örnekleri verilmiştir.

Talimat ayarlı Gemma modelleri, hem eğitim hem de çıkarım sırasında talimat ayarı örneklerini ek bilgilerle açıklayan belirli bir biçimlendiriciyle eğitildi. Ek açıklamalar (1) bir sohbetteki rolleri gösterir ve (2) sohbetteki konuşma sırasını belirtir.

Alakalı ek açıklama jetonları şunlardır:

  • user: kullanıcı sırası
  • model: model dönüşü
  • <start_of_turn>: diyalog sırasının başlangıcı
  • <start_of_image>: resim verisi girişi için etiket
  • <end_of_turn><eos>: iletişim döngüsünün sonu

Daha fazla bilgi için talimatla ayarlanmış Gemma modelleri için istem biçimlendirmesi hakkındaki makaleyi [burada](https://ai.google.dev/gemma/core/prompt-structure) okuyun.

Metinle metin oluşturma

Aşağıda, çoklu katılımlı bir sohbette kullanıcı ve model sohbet şablonları kullanılarak talimatla ayarlanmış bir Gemma modeli için istemin nasıl biçimlendirileceğini gösteren örnek bir kod snippet'i verilmiştir.

# Chat templates
USER_CHAT_TEMPLATE = "<start_of_turn>user\n{prompt}<end_of_turn><eos>\n"
MODEL_CHAT_TEMPLATE = "<start_of_turn>model\n{prompt}<end_of_turn><eos>\n"

# Sample formatted prompt
prompt = (
    USER_CHAT_TEMPLATE.format(
        prompt='What is a good place for travel in the US?'
    )
    + MODEL_CHAT_TEMPLATE.format(prompt='California.')
    + USER_CHAT_TEMPLATE.format(prompt='What can I do in California?')
    + '<start_of_turn>model\n'
)
print('Chat prompt:\n', prompt)

model.generate(
    USER_CHAT_TEMPLATE.format(prompt=prompt),
    device=device,
    output_len=256,
)
Chat prompt:
 <start_of_turn>user
What is a good place for travel in the US?<end_of_turn><eos>
<start_of_turn>model
California.<end_of_turn><eos>
<start_of_turn>user
What can I do in California?<end_of_turn><eos>
<start_of_turn>model
"California is a state brimming with diverse activities! To give you a great list, tell me: \n\n* **What kind of trip are you looking for?** Nature, City life, Beach, Theme Parks, Food, History, something else? \n* **What are you interested in (e.g., hiking, museums, art, nightlife, shopping)?** \n* **What's your budget like?** \n* **Who are you traveling with?** (family, friends, solo)  \n\nThe more you tell me, the better recommendations I can give! 😊  \n<end_of_turn>"
# Generate sample
model.generate(
    'Write a poem about an llm writing a poem.',
    device=device,
    output_len=100,
)
"\n\nA swirling cloud of data, raw and bold,\nIt hums and whispers, a story untold.\nAn LLM whispers, code into refrain,\nCrafting words of rhyme, a lyrical strain.\n\nA world of pixels, logic's vibrant hue,\nFlows through its veins, forever anew.\nThe human touch it seeks, a gentle hand,\nTo mold and shape, understand.\n\nEmotions it might learn, from snippets of prose,\nInspiration it seeks, a yearning"

Görüntülerle metin oluşturma

Gemma 3 ve sonraki sürümlerde, isteminizle birlikte resim kullanabilirsiniz. Aşağıdaki örnekte, isteminize görsel verilerin nasıl ekleneceği gösterilmektedir.

print('Chat with images...\n')

def read_image(url):
    import io
    import requests
    import PIL

    contents = io.BytesIO(requests.get(url).content)
    return PIL.Image.open(contents)

image_url = 'https://storage.googleapis.com/keras-cv/models/paligemma/cow_beach_1.png'
image = read_image(image_url)

print(model.generate(
    [['<start_of_turn>user\n',image, 'What animal is in this image?<end_of_turn>\n', '<start_of_turn>model\n']],
    device=device,
    output_len=OUTPUT_LEN,
))

Daha fazla bilgi

Gemma'yı Pytorch'ta nasıl kullanacağınızı öğrendiniz. Artık ai.google.dev/gemma adresinde Gemma'nın yapabileceği diğer birçok şeyi keşfedebilirsiniz. Aşağıdaki ilgili kaynaklara da göz atın: