KerasNLP kullanarak Gemma'yı kullanmaya başlayın

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

Bu eğiticide, KerasNLP aracılığıyla Gemma'yı kullanmaya nasıl başlayacağınız gösterilmektedir. Gemma, Gemini modellerini oluştururken kullanılan araştırma ve teknolojiyle geliştirilmiş, hafif ve son teknoloji ürünü açık modellerden oluşan bir ailedir. KerasNLP, Keras'ta uygulanan ve JAX, PyTorch ve TensorFlow'da çalıştırılabilen bir doğal dil işleme (NLP) modelleri koleksiyonudur.

Bu eğiticide, çeşitli istemlere metin yanıtları oluşturmak için Gemma'yı kullanacaksınız. Keras'ı kullanmaya yeni başladıysanız başlamadan önce Keras'ı kullanmaya başlama makalesini okuyabilirsiniz ancak okumanız zorunlu değildir. Bu eğiticiyi incelerken Keras hakkında daha fazla bilgi edineceksiniz.

Kurulum

Gemma kurulumu

Bu eğiticiyi tamamlamak için önce Gemma kurulumundaki kurulum talimatlarını tamamlamanız gerekir. Gemma kurulum talimatları, aşağıdakilerin nasıl yapılacağını gösterir:

  • kaggle.com adresinden Gemma'ya erişin.
  • Gemma 2B 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.

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

# Note: `userdata.get` is a Colab API. If you're not using Colab, set the env
# vars as appropriate for your system.
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

Bağımlıları yükleme

Keras ve KerasNLP'yi yükleyin.

# Install Keras 3 last. See https://keras.io/getting_started/ for more details.
pip install -q -U keras-nlp
pip install -q -U keras>=3

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 arka ucu seçmenize olanak tanır: TensorFlow, JAX veya PyTorch. Her üçü de bu eğitimde işe yarayacaktır.

import os

os.environ["KERAS_BACKEND"] = "jax"  # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"

Paketleri içe aktar

Keras ve KerasNLP'yi içe aktarın.

import keras
import keras_nlp

Model oluşturma

KerasNLP, birçok popüler model mimarisinin uygulanmasını sağlar. Bu eğiticide, nedensel dil modellemesi için uçtan uca Gemma modeli olan GemmaCausalLM'i kullanarak bir model oluşturacaksınız. Nedensel dil modeli, önceki jetonları temel alarak bir sonraki jetonu tahmin eder.

from_preset yöntemini kullanarak modeli oluşturun:

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma_2b_en")
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'model.weights.h5' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'tokenizer.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'assets/tokenizer/vocabulary.spm' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...

from_preset, modeli önceden ayarlanmış bir mimariden ve ağırlıklardan somutlaştırır. Yukarıdaki kodda, "gemma_2b_en" dizesi önceden ayarlanmış mimariyi belirtir: 2 milyar parametreye sahip bir Gemma modeli.

Model hakkında daha fazla bilgi edinmek için summary öğesini kullanın:

gemma_lm.summary()

Özetten görebileceğiniz gibi modelde 2, 5 milyar eğitilebilir parametre bulunuyor.

Metin oluştur

Şimdi metin oluşturma zamanı! Modelde, isteme göre metin oluşturan bir generate yöntemi bulunur. İsteğe bağlı max_length bağımsız değişkeni, oluşturulan dizinin maksimum uzunluğunu belirtir.

"What is the meaning of life?" istemiyle deneyin.

gemma_lm.generate("What is the meaning of life?", max_length=64)
'What is the meaning of life?\n\nThe question is one of the most important questions in the world.\n\nIt’s the question that has been asked by philosophers, theologians, and scientists for centuries.\n\nAnd it’s the question that has been asked by people who are looking for answers to their own lives'

generate numaralı telefonu farklı bir istemle tekrar aramayı deneyin.

gemma_lm.generate("How does the brain work?", max_length=64)
'How does the brain work?\n\nThe brain is the most complex organ in the human body. It is responsible for controlling all of the body’s functions, including breathing, heart rate, digestion, and more. The brain is also responsible for thinking, feeling, and making decisions.\n\nThe brain is made up'

JAX veya TensorFlow arka uçlarında çalıştırıyorsanız ikinci generate çağrısının neredeyse anında geri döndüğünü fark edeceksiniz. Bunun nedeni, belirli bir grup boyutu ve max_length için her generate çağrısının XLA ile derlenmesidir. İlk çalıştırma pahalı olsa da sonraki çalıştırmalar çok daha hızlıdır.

Giriş olarak bir liste kullanarak toplu istemler de sağlayabilirsiniz:

gemma_lm.generate(
    ["What is the meaning of life?",
     "How does the brain work?"],
    max_length=64)
['What is the meaning of life?\n\nThe question is one of the most important questions in the world.\n\nIt’s the question that has been asked by philosophers, theologians, and scientists for centuries.\n\nAnd it’s the question that has been asked by people who are looking for answers to their own lives',
 'How does the brain work?\n\nThe brain is the most complex organ in the human body. It is responsible for controlling all of the body’s functions, including breathing, heart rate, digestion, and more. The brain is also responsible for thinking, feeling, and making decisions.\n\nThe brain is made up']

İsteğe bağlı: Farklı bir örnekleyici deneyin

compile() üzerinde sampler bağımsız değişkenini ayarlayarak GemmaCausalLM için oluşturma stratejisini kontrol edebilirsiniz. Varsayılan olarak "greedy" örnekleme kullanılır.

Deneme olarak bir "top_k" stratejisi belirlemeyi deneyin:

gemma_lm.compile(sampler="top_k")
gemma_lm.generate("What is the meaning of life?", max_length=64)
'What is the meaning of life? That was a question I asked myself as I was driving home from work one night in 2012. I was driving through the city of San Bernardino, and all I could think was, “What the heck am I doing?”\n\nMy life was completely different. I'

Varsayılan açgözlü algoritma her zaman en yüksek olasılığa sahip jetonu seçerken, üst-K algoritması üst K olasılık jetonları arasından bir sonraki jetonu rastgele seçer.

Örnekleyici belirtmeniz gerekmez ve kullanım alanınız için faydalı olmazsa son kod snippet'ini yoksayabilirsiniz. Kullanılabilen örnekleyiciler hakkında daha fazla bilgi edinmek için Örnekleyiciler sayfasını inceleyebilirsiniz.

Sırada ne var?

Bu eğiticide, KerasNLP ve Gemma kullanarak metin oluşturmayı öğrendiniz. Bundan sonra neler öğrenebileceğinize ilişkin birkaç öneri aşağıda verilmiştir: