ai.google.dev'de görüntüleyin | Google Colab'de çalıştır | Kaynağı GitHub'da görüntüle |
CodeGemma, Gemini modellerini oluşturmak için kullanılan araştırma ve teknolojiyle geliştirilmiş hafif, son teknoloji ürünü açık modeller ailesidir.
CodeGemma modelleri temel olarak 500 milyardan fazla kodla eğitilir. Bu jetonlar model ailesi ile aynı mimarilere sahip. Sonuç olarak, CodeGemma modelleri hem tamamlama hem de işlem tamamlamada ve ürün oluşturmak için kullanacağınız, anlama ve akıl yürütme becerileridir.
CodeGemma'nın 3 varyantı vardır:
- Önceden eğitilmiş 7B kodlu model
- Talimat ayarlı 7B kod modeli
- Kod doldurma ve açık uçlu oluşturma için özel olarak eğitilmiş 2B model.
Bu kılavuzda, bir kod tamamlama görevi için KerasNLP ile CodeGemma 2B modelini kullanma konusunda yol gösterici bilgiler verilmektedir.
Kurulum
CodeGemma'ya erişim elde etme
Bu eğiticiyi tamamlamak için önce Gemma kurulumu sayfasındaki kurulum talimatlarını tamamlamanız gerekir. Gemma kurulum talimatları, aşağıdakileri nasıl yapacağınızı gösterir:
- kaggle.com adresinden Gemma'ya erişin.
- Çalıştırmak için yeterli kaynağa sahip bir Colab çalışma zamanı seçin Gemma 2B modeli.
- Kaggle kullanıcı adı ve API anahtarı oluşturup yapılandırın.
Gemma kurulumunu tamamladıktan sonra bir sonraki bölüme geçin. Burada, Colab ortamınız için ortam değişkenlerini ayarlayabilirsiniz.
Çalışma zamanını seçin
Bu eğiticiyi tamamlamak için, CodeGemma 2B modelini çalıştırmak üzere yeterli kaynaklara sahip bir Colab çalışma zamanınızın olması gerekir. Bu durumda T4 GPU kullanabilirsiniz:
- Colab penceresinin sağ üst kısmından ▾ (Ek bağlantı seçenekleri) öğesini seçin.
- Çalışma zamanı türünü değiştir'i seçin.
- Donanım hızlandırıcı altında T4 GPU'yu seçin.
API anahtarınızı yapılandırma
Gemma'yı kullanmak için Kaggle kullanıcı adınızı ve bir Kaggle API anahtarı girmeniz gerekir.
Kaggle API anahtarı oluşturmak için Kaggle kullanıcı profilinizin Account sekmesine gidin ve Create New Token'ı (Yeni Jeton Oluştur) seçin. Bu işlem, API kimlik bilgilerinizi içeren bir kaggle.json
dosyasının indirilmesini tetikler.
Colab'de sol bölmeden Sırlar'ı (🔑) seçip Kaggle kullanıcı adınızı ve Kaggle API anahtarınızı ekleyin. Kullanıcı adınızı KAGGLE_USERNAME
adı, API anahtarınızı ise KAGGLE_KEY
adı ile saklayın.
Ortam değişkenlerini ayarlama
KAGGLE_USERNAME
ve KAGGLE_KEY
için ortam değişkenlerini ayarlayın.
import os
from google.colab import userdata
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 keras-nlp
Arka uç seçin
Keras, basitlik ve kullanım kolaylığı için tasarlanmış üst düzey, çok çerçeveli bir derin öğrenme API'sidir. Keras 3'ü kullanarak iş akışlarını üç arka uçtan birinde çalıştırabilirsiniz: TensorFlow, JAX veya PyTorch.
Bu eğitim için TensorFlow'un arka ucunu yapılandırın.
os.environ["KERAS_BACKEND"] = "tensorflow" # Or "jax" or "torch".
Paketleri içe aktarma
Keras ve KerasNLP'yi içe aktarın.
import keras_nlp
import keras
# Run at half precision.
keras.config.set_floatx("bfloat16")
Modeli Yükle
KerasNLP, birçok popüler model mimarisinin uygulanmasını sağlar. Bu eğiticide, nedensel dil modelleme için uçtan uca Gemma modeli olan GemmaCausalLM
'i kullanarak bir model oluşturacaksınız. Nedensel dil modeli, önceki jetonlara dayanarak bir sonraki jetonu tahmin eder.
from_preset
yöntemini kullanarak modeli oluşturun:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("code_gemma_2b_en")
gemma_lm.summary()
Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/config.json... 100%|██████████| 554/554 [00:00<00:00, 1.41MB/s] Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/model.weights.h5... 100%|██████████| 4.67G/4.67G [05:06<00:00, 16.4MB/s] Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/tokenizer.json... 100%|██████████| 401/401 [00:00<00:00, 382kB/s] Downloading from https://www.kaggle.com/api/v1/models/keras/codegemma/keras/code_gemma_2b_en/1/download/assets/tokenizer/vocabulary.spm... 100%|██████████| 4.04M/4.04M [00:01<00:00, 2.41MB/s]
from_preset
yöntemi, modeli önceden ayarlanmış mimariden ve ağırlıklardan örneklendirir. Yukarıdaki kodda code_gemma_2b_en
dizesi, önceden ayarlanmış mimariyi (2 milyar parametreye sahip bir CodeGemma modeli) belirtir.
Ortayı doldur kod tamamlama
Bu örnekte, etrafındaki bağlama göre kodu tamamlamak için CodeGemma'nın ortayı doldurma (FIM) özelliği kullanılmaktadır. Bu, özellikle metin imlecinin çevresindeki koda dayalı olduğu (imleçten önce ve sonra) kod eklenmesi için kod düzenleyici uygulamalarında yararlı olur.
CodeGemma, FIM için 3 ve çoklu dosya bağlam desteği için bir <|file_separator|>
olmak üzere, kullanıcı tanımlı 4 jeton kullanmanıza olanak tanır. Sabit değerleri tanımlamak için bunları kullanın.
BEFORE_CURSOR = "<|fim_prefix|>"
AFTER_CURSOR = "<|fim_suffix|>"
AT_CURSOR = "<|fim_middle|>"
FILE_SEPARATOR = "<|file_separator|>"
Model için durdurma jetonlarını tanımlayın.
END_TOKEN = gemma_lm.preprocessor.tokenizer.end_token
stop_tokens = (BEFORE_CURSOR, AFTER_CURSOR, AT_CURSOR, FILE_SEPARATOR, END_TOKEN)
stop_token_ids = tuple(gemma_lm.preprocessor.tokenizer.token_to_id(x) for x in stop_tokens)
Kod tamamlama için istemi biçimlendirin. Unutmayın:
- FIM jetonları ile önek ve sonek arasında boşluk olmamalıdır
- FIM orta jetonu, modeli doldurmaya devam etmesini sağlamak için en sonda olmalıdır
- Önek veya sonek, imlecin dosyada o anda bulunduğu yere veya modele ne kadar bağlam sağlamak istediğinize bağlı olarak boş olabilir.
İstemi biçimlendirmek için bir yardımcı işlev kullanın.
def format_completion_prompt(before, after):
return f"{BEFORE_CURSOR}{before}{AFTER_CURSOR}{after}{AT_CURSOR}"
before = "import "
after = """if __name__ == "__main__":\n sys.exit(0)"""
prompt = format_completion_prompt(before, after)
print(prompt)
<|fim_prefix|>import <|fim_suffix|>if __name__ == "__main__": sys.exit(0)<|fim_middle|>
İstemi çalıştırın. Yanıt jetonlarının akışı yapılması önerilir. Kullanıcı tarafından tanımlanan veya dönüş/senetence jetonlarından herhangi biriyle karşılaştığınızda akışı durdurarak kodun tamamlanmasını sağlayın.
gemma_lm.generate(prompt, stop_token_ids=stop_token_ids, max_length=128)
'<|fim_prefix|>import <|fim_suffix|>if __name__ == "__main__":\n sys.exit(0)<|fim_middle|>sys\n<|file_separator|>'
Model, önerilen kod tamamlama olarak sys
sağlar.
Özet
Bu eğitim, çevresindeki bağlama göre kod doldurmak için CodeGemma'yı kullanma konusunda size yol göstermiştir. Şimdi, CodeGemma'yı nasıl kullanabileceğinize dair daha fazla örnek için CodeGemma ve KerasNLP not defteri ile AI Destekli Programlama başlıklı makaleye göz atın.
CodeGemma modellerinin teknik özellikleri için CodeGemma model kartı'na da bakın.