Keras'ı kullanarak Gemma ile çıkarım yapma

ai.google.dev'de görüntüleyin Google Colab'de çalıştır Vertex AI'da aç Kaynağı GitHub'da görüntüle

Bu eğiticide, çıkarım yapmak ve metin oluşturmak için Gemma'nın KerasNLP ile nasıl kullanılacağı gösterilmektedir. Gemma, Gemini modellerini oluşturmak için kullanılan araştırma ve teknolojiyle geliştirilmiş hafif, son teknoloji ürünü açık modeller ailesidir. 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 başlıklı makaleyi okuyabilirsiniz ancak bu zorunlu değildir. Bu eğiticide ilerledikçe Keras hakkında daha fazla bilgi edineceksiniz.

Kurulum

Gemma kurulumu

Bu eğiticiyi tamamlamak için önce Gemma kurulumu bölümündeki 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.
  • Gemma 2B modelini çalıştırmak için 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 bir sonraki bölüme geçin. Burada, Colab ortamınız için ortam değişkenlerini ayarlayabilirsiniz.

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. Bu eğitimde üçü de kullanılabilir.

import os

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

Paketleri içe aktarma

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 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("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...

GemmaCausalLM.from_preset() işlevi, modeli önceden ayarlanmış mimariden ve ağırlıklardan örneklendirir. Yukarıdaki kodda "gemma_2b_en" dizesi, 2 milyar parametreyle Gemma 2B modeli için hazır ayarı belirtir. 7B, 9B ve 27B parametrelerine sahip Gemma modelleri de mevcuttur. Gemma modellerinin kod dizelerini kaggle.com'daki Model Varyasyonu girişlerinde bulabilirsiniz.

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

gemma_lm.summary()

Özetten görebileceğiniz gibi, modelin 2,5 milyar eğitilebilir parametresi vardır.

Metin oluşturun

Şimdi biraz metin oluşturmaya geldi. Modelde, isteme göre metin oluşturan bir generate yöntemi bulunuyor. İsteğe bağlı max_length bağımsız değişkeni, oluşturulan adım sırasının 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'

Farklı bir istemle generate numaralı telefonu 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ışıyorsanız ikinci generate çağrısının neredeyse anında döndürüldüğünü fark edeceksiniz. Bunun nedeni, belirli bir toplu boyut ve max_length için yapılan 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 tanıtım 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 oluşturmayı 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 ilk K algoritması, en yüksek K olasılığına ait jetonlardan bir sonraki jetonu rastgele seçer.

Örnekleyici belirtmeniz gerekmez. Kullanım alanınız için faydalı değilse son kod snippet'ini göz ardı edebilirsiniz. Kullanılabilir örnekler hakkında daha fazla bilgi edinmek için Örnekleyiciler sayfasına bakın.

Sırada ne var?

Bu eğiticide KerasNLP ve Gemma'yı kullanarak nasıl metin oluşturacağınızı öğrendiniz. Aşağıda, neler öğrenebileceğinize dair birkaç öneri verilmiştir: