Erste Schritte mit Gemma und KerasNLP

Auf ai.google.dev ansehen In Google Colab ausführen In Vertex AI öffnen Quelle auf GitHub ansehen

In dieser Anleitung werden die ersten Schritte mit Gemma mithilfe von KerasNLP beschrieben. Gemma ist eine Familie von leichten, hochmodernen offenen Modellen, die auf derselben Forschung und Technologie basieren, die auch für die Erstellung der Gemini-Modelle verwendet wurden. KerasNLP ist eine Sammlung von NLP-Modellen (Natural Language Processing), die in Keras implementiert und auf JAX, PyTorch und TensorFlow ausführbar sind.

In dieser Anleitung verwenden Sie Gemma, um Textantworten auf mehrere Prompts zu generieren. Wenn Sie Keras zum ersten Mal verwenden, sollten Sie den Artikel Erste Schritte mit Keras lesen. Dies ist jedoch nicht zwingend erforderlich. Im Verlauf dieses Tutorials erfahren Sie mehr über Keras.

Einrichtung

Gemma-Einrichtung

Um diese Anleitung abzuschließen, müssen Sie zuerst die Schritte unter Gemma-Einrichtung ausführen. In der Anleitung zur Einrichtung von Gemma erfahren Sie, wie Sie Folgendes tun können:

  • Auf kaggle.com erhältst du Zugriff auf Gemma.
  • Colab-Laufzeit mit ausreichenden Ressourcen zum Ausführen auswählen das Modell Gemma 2B.
  • Generieren und konfigurieren Sie einen Kaggle-Nutzernamen und einen API-Schlüssel.

Nachdem Sie die Gemma-Einrichtung abgeschlossen haben, fahren Sie mit dem nächsten Abschnitt fort. Dort legen Sie Umgebungsvariablen für Ihre Colab-Umgebung fest.

Umgebungsvariablen festlegen

Legen Sie Umgebungsvariablen für KAGGLE_USERNAME und KAGGLE_KEY fest.

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')

Abhängigkeiten installieren

Installieren Sie Keras und 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"

Backend auswählen

Keras ist eine Deep-Learning-API mit mehreren Frameworks, die auf einfache und nutzerfreundliche Weise entwickelt wurde. Mit Keras 3 können Sie das Back-End auswählen: TensorFlow, JAX oder PyTorch. Alle drei funktionieren in dieser Anleitung.

import os

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

Pakete importieren

Importieren Sie Keras und KerasNLP.

import keras
import keras_nlp

Modell erstellen

KerasNLP bietet Implementierungen vieler beliebter Modellarchitekturen. In dieser Anleitung erstellen Sie ein Modell mit GemmaCausalLM, einem End-to-End-Gemma-Modell für kausale Language Models. Ein kausales Sprachmodell sagt das nächste Token basierend auf vorherigen Tokens voraus.

Erstellen Sie das Modell mit der Methode from_preset:

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")

Die Funktion GemmaCausalLM.from_preset() instanziiert das Modell aus einer voreingestellten Architektur und Gewichtungen. Im Code oben gibt der String "gemma2_2b_en" die Voreinstellung für das Modell Gemma 2 2B mit 2 Milliarden Parametern an. Gemma-Modelle mit den Parametern 7B, 9B und 27B sind ebenfalls verfügbar. Sie finden die Codestrings für Gemma-Modelle in der Liste der Modellvarianten auf Kaggle.

Verwenden Sie summary, um weitere Informationen zum Modell zu erhalten:

gemma_lm.summary()

Wie Sie der Zusammenfassung entnehmen können, hat das Modell 2,6 Milliarden trainierbare Parameter.

Text generieren

Jetzt ist es an der Zeit, Text zu generieren. Das Modell hat eine generate-Methode, die Text basierend auf einem Prompt generiert. Das optionale Argument max_length gibt die maximale Länge der generierten Sequenz an.

Probieren Sie es mit dem Prompt "what is keras in 3 bullet points?" aus.

gemma_lm.generate("what is keras in 3 bullet points?", max_length=64)
'what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n'

Versuche, generate mit einem anderen Prompt noch einmal aufzurufen.

gemma_lm.generate("The universe is", max_length=64)
'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now'

Wenn Sie JAX- oder TensorFlow-Back-Ends verwenden, werden Sie feststellen, dass der zweite generate-Aufruf fast sofort zurückgegeben wird. Das liegt daran, dass jeder Aufruf von generate für eine bestimmte Batchgröße und max_length mit XLA kompiliert wird. Der erste Durchlauf ist teuer, nachfolgende Durchläufe sind jedoch viel schneller.

Sie können auch stapelweise Prompts mithilfe einer Liste als Eingabe bereitstellen:

gemma_lm.generate(
    ["what is keras in 3 bullet points?",
     "The universe is"],
    max_length=64)
['what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n',
 'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now']

Optional: Anderen Sampler ausprobieren

Sie können die Generierungsstrategie für GemmaCausalLM steuern, indem Sie das Argument sampler für compile() festlegen. Standardmäßig wird die Stichprobenerhebung "greedy" verwendet.

Legen Sie probeweise eine "top_k"-Strategie fest:

gemma_lm.compile(sampler="top_k")
gemma_lm.generate("The universe is", max_length=64)
'The universe is a big place, and there are so many things we do not know or understand about it.\n\nBut we can learn a lot about our world by studying what is known to us.\n\nFor example, if you look at the moon, it has many features that can be seen from the surface.'

Während der Standard-Gieredy-Algorithmus immer das Token mit der größten Wahrscheinlichkeit auswählt, wählt der Top-K-Algorithmus zufällig das nächste Token aus den Tokens mit der Top-K-Wahrscheinlichkeit aus.

Sie müssen keinen Sampler angeben und können das letzte Code-Snippet ignorieren, wenn es für Ihren Anwendungsfall nicht hilfreich ist. Weitere Informationen zu den verfügbaren Samplern finden Sie hier.

Nächste Schritte

In dieser Anleitung haben Sie gelernt, wie Sie mit KerasNLP und Gemma Text generieren. Hier ein paar Vorschläge, was Sie als Nächstes lernen können: