Afficher sur ai.google.dev | Exécuter dans Google Colab | Ouvrir dans Vertex AI | Consulter le code source sur GitHub |
Ce tutoriel vous explique comment débuter avec Gemma à l'aide de KerasNLP. Gemma est une famille de modèles ouverts légers et de pointe, élaborés à partir des recherches et des technologies utilisées pour créer les modèles Gemini. KerasNLP est un ensemble de modèles de traitement du langage naturel (TLN) implémentés dans Keras et exécutables sur JAX, PyTorch et TensorFlow.
Dans ce tutoriel, vous allez utiliser Gemma pour générer des réponses textuelles à plusieurs requêtes. Si vous débutez avec Keras, vous pouvez consulter la page Premiers pas avec Keras avant de commencer, mais ce n'est pas obligatoire. Vous en apprendrez davantage sur Keras tout au long de ce tutoriel.
Configuration
Configuration de Gemma
Pour suivre ce tutoriel, vous devez d'abord suivre les instructions de configuration de Gemma. Les instructions de configuration de Gemma vous expliquent comment:
- Accédez à Gemma sur kaggle.com.
- Sélectionnez un environnement d'exécution Colab avec suffisamment de ressources pour s'exécuter le modèle Gemma 2B.
- Générez et configurez un nom d'utilisateur et une clé API Kaggle.
Une fois la configuration de Gemma terminée, passez à la section suivante, dans laquelle vous allez définir des variables d'environnement pour votre environnement Colab.
Définir des variables d'environnement
Définissez les variables d'environnement pour KAGGLE_USERNAME
et 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')
Installer des dépendances
installer Keras et 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"
Sélectionnez un backend
Keras est une API de deep learning multi-framework de haut niveau, conçue pour être simple et facile à utiliser. Keras 3 vous permet de choisir le backend: TensorFlow, JAX ou PyTorch. Les trois fonctionnent pour ce tutoriel.
import os
os.environ["KERAS_BACKEND"] = "jax" # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"
Importer des packages
Importer Keras et KerasNLP
import keras
import keras_nlp
Créer un modèle
KerasNLP fournit des implémentations de nombreuses architectures de modèles courantes. Dans ce tutoriel, vous allez créer un modèle à l'aide de GemmaCausalLM
, un modèle Gemma de bout en bout destiné à la modélisation du langage causale. Un modèle de langage causal prédit le jeton suivant en fonction des jetons précédents.
Créez le modèle à l'aide de la méthode from_preset
:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
La fonction GemmaCausalLM.from_preset()
instancie le modèle à partir d'une architecture et de pondérations prédéfinies. Dans le code ci-dessus, la chaîne "gemma2_2b_en"
spécifie le préréglage du modèle Gemma 2 2B avec deux milliards de paramètres. Des modèles Gemma avec des paramètres 7B, 9B et 27B sont également disponibles. Vous trouverez les chaînes de code des modèles Gemma dans les listes des variantes de modèle sur Kaggle.
Utilisez summary
pour obtenir plus d'informations sur le modèle:
gemma_lm.summary()
Comme vous pouvez le voir dans le résumé, le modèle comporte 2,6 milliards de paramètres pouvant être entraînés.
Générer du texte
Il est maintenant temps de générer du texte ! Le modèle dispose d'une méthode generate
qui génère du texte en fonction d'une requête. L'argument facultatif max_length
spécifie la longueur maximale de la séquence générée.
Essayez avec l'invite "what is keras in 3 bullet points?"
.
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'
Réessayez d'appeler generate
avec une autre requête.
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'
Si vous exécutez l'application sur des backends JAX ou TensorFlow, vous remarquerez que le deuxième appel generate
est renvoyé presque instantanément. En effet, chaque appel à generate
pour une taille de lot donnée et max_length
est compilé avec XLA. La première exécution est coûteuse, mais les exécutions suivantes sont beaucoup plus rapides.
Vous pouvez également fournir des requêtes par lot en utilisant une liste en entrée:
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']
Facultatif: Essayer un autre échantillonneur
Vous pouvez contrôler la stratégie de génération pour GemmaCausalLM
en définissant l'argument sampler
sur compile()
. Par défaut, l'échantillonnage "greedy"
est utilisé.
Pour effectuer un test, essayez de définir une stratégie "top_k"
:
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.'
Alors que l'algorithme gourmand par défaut choisit toujours le jeton avec la probabilité la plus élevée, l'algorithme top-K choisit au hasard le jeton suivant parmi les jetons de probabilité supérieure de K.
Vous n'avez pas besoin de spécifier d'échantillonneur, et vous pouvez ignorer le dernier extrait de code s'il n'est pas utile à votre cas d'utilisation. Pour en savoir plus sur les échantillonneurs disponibles, consultez la section Échantillonneurs.
Étape suivante
Dans ce tutoriel, vous avez appris à générer du texte à l'aide de KerasNLP et Gemma. Voici quelques suggestions pour la suite:
- Découvrez comment affiner un modèle Gemma.
- Découvrez comment effectuer des affinages distribués et des inférences sur un modèle Gemma.
- Découvrez l'intégration de Gemma à Vertex AI.
- Découvrez comment utiliser des modèles Gemma avec Vertex AI.