Erste Schritte mit Gemma und KerasNLP

In dieser Anleitung erfahren Sie, wie Sie mit KerasNLP erste Schritte mit Gemma machen. Gemma ist eine Familie leichter, hochmoderner offener Modelle, die auf derselben Forschung und Technologie basieren wie die Gemini-Modelle. KerasNLP ist eine Sammlung von NLP-Modellen (Natural Language Processing), die in Keras implementiert und in JAX, PyTorch und TensorFlow ausgeführt werden können.

In dieser Anleitung verwenden Sie Gemma, um Textantworten auf mehrere Prompts zu generieren. Wenn Sie Keras noch nicht kennen, sollten Sie sich vor Beginn den Artikel Erste Schritte mit Keras durchlesen. Im Verlauf dieses Tutorials erfahren Sie mehr über Keras.

Einrichtung

Gemma einrichten

Bevor Sie mit dieser Anleitung fortfahren können, müssen Sie zuerst die Einrichtungsanleitung unter Gemma einrichten durchgehen. In der Anleitung zur Einrichtung von Gemma erfahren Sie Folgendes:

  • Sie benötigen Zugriff auf Gemma auf kaggle.com.
  • Wählen Sie eine Colab-Laufzeit mit ausreichenden Ressourcen für die Ausführung des Gemma 2B-Modells aus.
  • Erstellen 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, in dem Sie Umgebungsvariablen für Ihre Colab-Umgebung festlegen.

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 allgemeine Deep-Learning-API für mehrere Frameworks, die für Einfachheit und Nutzerfreundlichkeit entwickelt wurde. In Keras 3 können Sie das Backend auswählen: TensorFlow, JAX oder PyTorch. Alle drei funktionieren für diese 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 die kausale Sprachmodellierung. Ein kausales Sprachmodell sagt das nächste Token anhand der 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() erstellt das Modell anhand einer voreingestellten Architektur und Gewichtung. Im obigen Code gibt der String "gemma2_2b_en" die Voreinstellung für das Gemma 2 2B-Modell mit 2 Milliarden Parametern an. Gemma-Modelle mit 7B-, 9B- und 27B-Parametern sind ebenfalls verfügbar. Die Codestrings für Gemma-Modelle finden Sie in den Einträgen Modellvariante auf Kaggle.

Mit summary können Sie weitere Informationen zum Modell abrufen:

gemma_lm.summary()

Wie Sie in der Zusammenfassung sehen, hat das Modell 2,6 Milliarden trainierbare Parameter.

Text generieren

Jetzt ist es an der Zeit, Text zu generieren. Das Modell verfügt über eine generate-Methode, die Text anhand eines Prompts 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'

Versuchen Sie es noch einmal mit einem anderen Prompt.generate

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-Backends verwenden, wird der zweite generate-Aufruf fast sofort zurückgegeben. 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, aber nachfolgende Durchläufe sind viel schneller.

Sie können auch mehrere Prompts gleichzeitig mit einer Liste als Eingabe angeben:

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: Einen anderen Sampler ausprobieren

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

Testen Sie zum Beispiel eine "top_k"-Strategie:

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 standardmäßige gierige Algorithmus immer das Token mit der höchsten Wahrscheinlichkeit auswählt, wählt der Top-K-Algorithmus das nächste Token nach dem Zufallsprinzip aus den Tokens mit der höchsten 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 unter Sampler.

Nächste Schritte

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