Zobacz na ai.google.dev | Uruchom w Google Colab | Otwórz w Vertex AI | Wyświetl źródło na GitHubie |
Z tego samouczka dowiesz się, jak zacząć korzystać z Gemmy przy użyciu KerasNLP. Gemma to rodzina lekkich, nowoczesnych otwartych modeli stworzonych na podstawie tych samych badań i technologii, które są wykorzystywane do tworzenia modeli Gemini. KerasNLP to zbiór modeli przetwarzania języka naturalnego (NLP) zaimplementowanych w Keras i uruchamianych w JAX, PyTorch i TensorFlow.
W tym samouczku będziesz używać Gemma do generowania odpowiedzi tekstowych na kilka promptów. Jeśli dopiero zaczynasz korzystać z Keras, możesz najpierw przeczytać artykuł Wprowadzenie do Keras, ale nie musisz. W trakcie tego samouczka dowiesz się więcej o Keras.
Konfiguracja
Konfiguracja Gemma
Aby ukończyć ten samouczek, najpierw musisz wykonać instrukcje konfiguracji opisane w artykule Konfiguracja Gemma. Instrukcje konfiguracji Gemma pokazują, jak:
- Uzyskaj dostęp do Gemma na kaggle.com.
- Wybierz środowisko wykonawcze Colab z wystarczającą ilością zasobów, by uruchomić model Gemma 2B.
- Wygeneruj i skonfiguruj nazwę użytkownika i klucz interfejsu API Kaggle.
Po zakończeniu konfigurowania Gemma przejdź do następnej sekcji, w której skonfigurujesz zmienne środowiskowe dla środowiska Colab.
Ustawianie zmiennych środowiskowych
Ustaw zmienne środowiskowe dla KAGGLE_USERNAME
i KAGGLE_KEY
.
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')
Instalowanie zależności
Instalowanie Keras i KerasNLP.
# 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
Wybierz backend
Keras to interfejs API do deep learningu z wieloma ramkami zaprojektowany z myślą o łatwości obsługi. W Keras 3 możesz wybrać backend: TensorFlow, JAX lub PyTorch. W tym samouczku będą działać wszystkie trzy.
import os
os.environ["KERAS_BACKEND"] = "jax" # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"
Importowanie pakietów
Importuj Keras i KerasNLP.
import keras
import keras_nlp
Tworzenie modelu
KerasNLP udostępnia implementacje wielu popularnych architektur modeli. W tym samouczku utworzysz model przy użyciu GemmaCausalLM
, czyli kompleksowego modelu Gemma do modelowania językowego przyczynowo-skutkowego. przyczynowy model językowy przewiduje następny token na podstawie poprzednich tokenów,
Utwórz model, korzystając z metody from_preset
:
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
tworzy instancję modelu na podstawie gotowej architektury i wag. W powyższym kodzie ciąg "gemma_2b_en"
określa gotową architekturę – model Gemma z 2 miliardami parametrów.
Użyj narzędzia summary
, aby uzyskać więcej informacji o modelu:
gemma_lm.summary()
Jak widać w podsumowaniu, model zawiera 2,5 miliarda parametrów do trenowania.
Generowanie tekstu
Teraz czas wygenerować tekst. Model zawiera metodę generate
, która generuje tekst na podstawie promptu. Opcjonalny argument max_length
określa maksymalną długość wygenerowanej sekwencji.
Wypróbuj, wykonując polecenie "What is the meaning of life?"
.
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'
Spróbuj ponownie zadzwonić pod numer generate
, używając innego promptu.
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'
Jeśli używasz backendów JAX lub TensorFlow, drugie wywołanie generate
zwraca niemal natychmiast. Wynika to z faktu, że każde wywołanie generate
dla danego rozmiaru wsadu i max_length
jest kompilowane w środowisku XLA. Pierwsze uruchomienie jest kosztowne, ale kolejne są znacznie szybsze.
Możesz też przesyłać zbiorcze prompty, korzystając z listy jako danych wejściowych:
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']
Opcjonalnie: wypróbuj inny kompilator
Możesz kontrolować strategię generowania elementu GemmaCausalLM
, ustawiając argument sampler
w kolumnie compile()
. Domyślnie używane jest próbkowanie "greedy"
.
W ramach eksperymentu spróbuj ustawić strategię "top_k"
:
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'
Domyślny algorytm zachłanności zawsze wybiera token o największym prawdopodobieństwie, a algorytm górnego K losowo wybiera następny token spośród tokenów o najwyższym prawdopodobieństwie K.
Nie musisz określać kodu próbkowania i możesz zignorować ostatni fragment kodu, jeśli nie jest przydatny w Twoim przypadku. Jeśli chcesz dowiedzieć się więcej o dostępnych próbkach, przeczytaj artykuł Sample.
Co dalej
Z tego samouczka dowiesz się, jak generować tekst za pomocą narzędzi KerasNLP i Gemma. Oto kilka sugestii, o których warto przeczytać:
- Dowiedz się, jak dostroić model Gemma.
- Dowiedz się, jak wykonać dostrajanie i wnioskowanie w modelu Gemma.
- Dowiedz się więcej o integracji Gemma z Vertex AI.
- Dowiedz się, jak używać modeli Gemma z Vertex AI.