Keras CodeGemma Hızlı Başlangıç Kılavuzu

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:

  1. Colab penceresinin sağ üst kısmından ▾ (Ek bağlantı seçenekleri) öğesini seçin.
  2. Çalışma zamanı türünü değiştir'i seçin.
  3. 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.