ai.google.dev'de görüntüleyin | Google Colab'de çalıştır | Vertex AI'da aç | Kaynağı GitHub'da görüntüleyin |
Genel bakış
Gemma, Google DeepMind Gemini araştırmasına ve teknolojisine dayanan, hafif ve son teknoloji ürünü açık büyük dil modellerinden oluşan bir ailedir. Bu eğitimde, JAX (yüksek performanslı sayısal bilgi işlem kitaplığı), Flax (JAX tabanlı nöral ağ kitaplığı), Orbax (JAX tabanlı nöral ağ kitaplığı), Orbax (kontrol noktası gibi eğitim yardımcı programları için JAX-tabanlı bir kitaplık){/11SenterPatoken kitaplığıyla yazılmış Google DeepMind'ın gemma
kitaplığını kullanarak Gemma 2B Talimatlar modeliyle nasıl temel örnekleme/çıkarım yapılacağı gösterilmektedir.SentencePiece Bu not defterinde doğrudan kullanılmasa da, Gemma'yı oluşturmak için Flax kullanıldı.
Bu not defteri, ücretsiz T4 GPU ile Google Colab'de çalışabilir (Düzenle > Not defteri ayarları'na gidin > Donanım hızlandırıcı'nın altında T4 GPU'yu seçin).
Kurulum
1. Gemma için Kaggle erişimini ayarlama
Bu eğiticiyi tamamlamak için önce Gemma kurulumu sayfasındaki kurulum talimatlarını uygulamanız gerekir. Bu talimatlarda, aşağıdakilerin nasıl yapılacağı gösterilir:
- kaggle.com adresinden Gemma'ya erişin.
- Gemma modelini çalıştırmak için yeterli kaynağa sahip bir Colab çalışma zamanı seçin.
- Bir Kaggle kullanıcı adı ve API anahtarı oluşturun ve yapılandırın.
Gemma kurulumunu tamamladıktan sonra, Colab ortamınız için ortam değişkenlerini belirleyeceğiniz bir sonraki bölüme geçin.
2. Ortam değişkenlerini ayarlama
KAGGLE_USERNAME
ve KAGGLE_KEY
için ortam değişkenlerini ayarlayın. "Erişim izni verilsin mi?" iletileriyle karşılaştığınızda gizli erişim sağlamayı 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')
3. gemma
kitaplığını yükle
Bu not defteri, ücretsiz bir Colab GPU kullanmaya odaklanmıştır. Donanım hızlandırmayı etkinleştirmek için Düzenle > Not defteri ayarları'nı tıklayın > T4 GPU > Kaydet'i seçin.
Ardından, github.com/google-deepmind/gemma
kaynağından Google DeepMind gemma
kitaplığını yüklemeniz gerekir. "pip'in bağımlılık çözümleyicisi" ile ilgili bir hata alırsanız genellikle bu hatayı yoksayabilirsiniz.
pip install -q git+https://github.com/google-deepmind/gemma.git
Gemma modelini yükleme ve hazırlama
- Üç bağımsız değişken alan
kagglehub.model_download
ile Gemma modelini yükleyin:
handle
: Kaggle'daki model herkese açık kullanıcı adıpath
: (İsteğe bağlı dize) Yerel yolforce_download
: (İsteğe bağlı boole) Modeli yeniden indirmeye zorlar
GEMMA_VARIANT = '2b-it' # @param ['2b', '2b-it'] {type:"string"}
import kagglehub
GEMMA_PATH = kagglehub.model_download(f'google/gemma/flax/{GEMMA_VARIANT}')
Downloading from https://www.kaggle.com/api/v1/models/google/gemma/flax/2b-it/2/download... 100%|██████████| 3.67G/3.67G [00:35<00:00, 110MB/s] Extracting model files...
print('GEMMA_PATH:', GEMMA_PATH)
GEMMA_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2
- Model ağırlıklarının ve belirteçleştiricinin konumunu kontrol edin, ardından yol değişkenlerini ayarlayın. Jeton oluşturucu dizini, modeli indirdiğiniz ana dizindeyken, model ağırlıkları bir alt dizinde yer alır. Örneğin:
tokenizer.model
dosyası/LOCAL/PATH/TO/gemma/flax/2b-it/2
içinde olacaktır).- Model kontrol noktası
/LOCAL/PATH/TO/gemma/flax/2b-it/2/2b-it
içinde olacaktır).
CKPT_PATH = os.path.join(GEMMA_PATH, GEMMA_VARIANT)
TOKENIZER_PATH = os.path.join(GEMMA_PATH, 'tokenizer.model')
print('CKPT_PATH:', CKPT_PATH)
print('TOKENIZER_PATH:', TOKENIZER_PATH)
CKPT_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2/2b-it TOKENIZER_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2/tokenizer.model
Örnekleme/çıkarım yapma
- Gemma modeli kontrol noktasını
gemma.params.load_and_format_params
yöntemiyle yükleme ve biçimlendirme:
from gemma import params as params_lib
params = params_lib.load_and_format_params(CKPT_PATH)
sentencepiece.SentencePieceProcessor
kullanılarak oluşturulan Gemma belirteç oluşturucuyu yükleyin:
import sentencepiece as spm
vocab = spm.SentencePieceProcessor()
vocab.Load(TOKENIZER_PATH)
True
- Gemma modeli kontrol noktasından doğru yapılandırmayı otomatik olarak yüklemek için
gemma.transformer.TransformerConfig
değerini kullanın.cache_size
bağımsız değişkeni, GemmaTransformer
önbelleğindeki adım sayısıdır. Daha sonra, Gemma modelinigemma.transformer.Transformer
iletransformer
olarak örnekleyin (flax.linen.Module
öğesinden devralır).
from gemma import transformer as transformer_lib
transformer_config = transformer_lib.TransformerConfig.from_params(
params=params,
cache_size=1024
)
transformer = transformer_lib.Transformer(transformer_config)
- Gemma modeli kontrol noktası/ağırlıklarının ve jeton oluşturucunun üzerinde
gemma.sampler.Sampler
ile birsampler
oluşturun:
from gemma import sampler as sampler_lib
sampler = sampler_lib.Sampler(
transformer=transformer,
vocab=vocab,
params=params['transformer'],
)
input_batch
dilinde bir istem yazın ve çıkarım yapın.total_generation_steps
üzerinde ince ayar yapabilirsiniz (bir yanıt oluşturulurken gerçekleştirilen adım sayısı). Bu örnekte, ana makine belleğini korumak için100
kullanılmaktadır.
prompt = [
"\n# What is the meaning of life?",
]
reply = sampler(input_strings=prompt,
total_generation_steps=100,
)
for input_string, out_string in zip(prompt, reply.text):
print(f"Prompt:\n{input_string}\nOutput:\n{out_string}")
Prompt: # What is the meaning of life? Output: The question of what the meaning of life is one that has occupied the minds of philosophers, theologians, and individuals for centuries. There is no single, universally accepted answer, but there are many different perspectives on this complex and multifaceted question. **Some common perspectives on the meaning of life include:** * **Biological perspective:** From a biological standpoint, the meaning of life is to survive and reproduce. * **Existential perspective:** Existentialists believe that life is not inherently meaningful and that
- (İsteğe bağlı) Not defterini tamamladıysanız ve başka bir istem denemek istiyorsanız bellekte yer açmak için bu hücreyi çalıştırın. Ardından, 3. adımda
sampler
örneğini tekrar oluşturabilir ve 4. adımdaki istemi özelleştirip çalıştırabilirsiniz.
del sampler
Daha fazla bilgi
- Bu eğitimde kullandığınız
gemma.params
,gemma.transformer
vegemma.sampler
gibi modüllerin doküman dizelerini içeren Google DeepMindgemma
kitaplığını GitHub'da bulabilirsiniz. - Şu kitaplıkların kendi doküman siteleri vardır: core JAX, Flax ve Orbax.
sentencepiece
tokenizleyici/detokenizer belgeleri için Google'ınsentencepiece
GitHub deposuna göz atın.kagglehub
dokümanları için Kaggle'ınkagglehub
GitHub deposundakiREADME.md
koleksiyonuna göz atın.- Gemma modellerini Google Cloud Vertex AI ile nasıl kullanacağınızı öğrenin.