En este instructivo, se muestra cómo comenzar a usar Gemma con KerasNLP. Gemma es una familia de modelos abiertos, livianos y de vanguardia creados a partir de la misma investigación y tecnología que se utilizaron para crear los modelos Gemini. KerasNLP es una colección de modelos de procesamiento de lenguaje natural (PLN) implementados en Keras y ejecutables en JAX, PyTorch y TensorFlow.
En este instructivo, usarás Gemma para generar respuestas de texto a varias indicaciones. Si es la primera vez que usas Keras, te recomendamos que leas Cómo comenzar a usar Keras antes de empezar, pero no es obligatorio. Aprenderás más sobre Keras a medida que avances en este instructivo.
Configuración
Configuración de Gemma
Para completar este instructivo, primero debes completar las instrucciones de configuración en Configuración de Gemma. En las instrucciones de configuración de Gemma, se muestra cómo hacer lo siguiente:
- Obtén acceso a Gemma en kaggle.com.
- Selecciona un entorno de ejecución de Colab con recursos suficientes para ejecutar el modelo Gemma 2B.
- Genera y configura un nombre de usuario y una clave de API de Kaggle.
Después de completar la configuración de Gemma, continúa con la siguiente sección, en la que establecerás variables de entorno para tu entorno de Colab.
Configure las variables de entorno
Configura las variables de entorno para KAGGLE_USERNAME
y 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')
Instala dependencias
Instala Keras y 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"
Seleccionar un backend
Keras es una API de aprendizaje profundo de alto nivel y varios frameworks diseñada para brindar simplicidad y facilidad de uso. Keras 3 te permite elegir el backend: TensorFlow, JAX o PyTorch. Los tres funcionarán para este instructivo.
import os
os.environ["KERAS_BACKEND"] = "jax" # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"
Importa paquetes
Importa Keras y KerasNLP.
import keras
import keras_nlp
Crear un modelo
KerasNLP proporciona implementaciones de muchas arquitecturas de modelos populares. En este instructivo, crearás un modelo con GemmaCausalLM
, un modelo de Gemma de extremo a extremo para el modelado de lenguaje causal. Un modelo de lenguaje causal predice el siguiente token según los tokens anteriores.
Crea el modelo con el método from_preset
:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
La función GemmaCausalLM.from_preset()
crea una instancia del modelo a partir de una arquitectura y ponderaciones predeterminadas. En el código anterior, la cadena "gemma2_2b_en"
especifica el modelo predeterminado Gemma 2 2B con 2,000 millones de parámetros. También están disponibles los modelos Gemma con parámetros de 7B, 9B y 27B. Puedes encontrar las cadenas de código de los modelos de Gemma en sus fichas de Model Variation en Kaggle.
Usa summary
para obtener más información sobre el modelo:
gemma_lm.summary()
Como puedes ver en el resumen, el modelo tiene 2,600 millones de parámetros entrenables.
Generar texto
Ahora es momento de generar texto. El modelo tiene un método generate
que genera texto basado en una instrucción. El argumento opcional max_length
especifica la longitud máxima de la secuencia generada.
Pruébalo con la instrucción "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'
Vuelve a llamar a generate
con una instrucción diferente.
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 ejecutas en backends de JAX o TensorFlow, notarás que la segunda llamada a generate
se muestra casi de inmediato. Esto se debe a que cada llamada a generate
para un tamaño de lote determinado y max_length
se compila con XLA. La primera ejecución es costosa, pero las ejecuciones posteriores son mucho más rápidas.
También puedes proporcionar instrucciones por lotes con una lista como entrada:
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']
Opcional: Prueba un sampler diferente
Para controlar la estrategia de generación de GemmaCausalLM
, establece el argumento sampler
en compile()
. De forma predeterminada, se usará el muestreo de "greedy"
.
Como experimento, intenta configurar una estrategia de "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.'
Mientras que el algoritmo codicioso predeterminado siempre elige el token con la probabilidad más alta, el algoritmo Top-K elige de forma aleatoria el siguiente token de los tokens de la probabilidad Top-K.
No es necesario que especifiques un sampler, y puedes ignorar el último fragmento de código si no es útil para tu caso de uso. Si deseas obtener más información sobre los samplers disponibles, consulta Samplers.
¿Qué sigue?
En este instructivo, aprendiste a generar texto con KerasNLP y Gemma. Estas son algunas sugerencias sobre qué aprender a continuación:
- Obtén información para ajustar un modelo de Gemma.
- Obtén información para realizar ajustes y una inferencia distribuidos en un modelo de Gemma.
- Obtén información sobre la integración de Gemma con Vertex AI
- Obtén información para usar modelos de Gemma con Vertex AI.