![]() |
![]() |
|
![]() |
Questo tutorial mostra come iniziare a utilizzare Gemma con KerasNLP. Gemma è una famiglia di modelli aperti leggeri e all'avanguardia creati sulla base della stessa ricerca e tecnologia utilizzata per creare i modelli Gemini. KerasNLP è una raccolta di modelli di elaborazione del linguaggio naturale (NLP) implementati in Keras ed eseguibili su JAX, PyTorch e TensorFlow.
In questo tutorial utilizzerai Gemma per generare risposte di testo a diversi prompt. Se non hai mai utilizzato Keras, ti consigliamo di leggere l'articolo Introduzione a Keras prima di iniziare, ma non è obbligatorio. Scoprirai di più su Keras man mano che svolgi questo tutorial.
Configurazione
Configurazione di Gemma
Per completare questo tutorial, devi prima seguire le istruzioni di configurazione riportate nella pagina Configurazione di Gemma. Le istruzioni di configurazione di Gemma mostrano come:
- Accedi a Gemma su kaggle.com.
- Seleziona un runtime Colab con risorse sufficienti per eseguire il modello Gemma 2B.
- Genera e configura un nome utente e una chiave API Kaggle.
Dopo aver completato la configurazione di Gemma, vai alla sezione successiva, dove imposterai le variabili di ambiente per il tuo ambiente Colab.
Imposta le variabili di ambiente
Imposta le variabili di ambiente per KAGGLE_USERNAME
e 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')
Installa le dipendenze
Installa Keras e 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"
Seleziona un servizio di backend
Keras è un'API di deep learning multi-framework ad alto livello progettata per la semplicità e la facilità d'uso. Keras 3 ti consente di scegliere il backend: TensorFlow, JAX o PyTorch. Tutti e tre sono adatti per questo tutorial.
import os
os.environ["KERAS_BACKEND"] = "jax" # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"
Importare i pacchetti
Importa Keras e KerasNLP.
import keras
import keras_nlp
Creare un modello
KerasNLP fornisce implementazioni di molte architetture di modelli molto diffuse. In questo tutorial creerai un modello utilizzando GemmaCausalLM
, un modello Gemma end-to-end per la creazione di modelli linguistici causali. Un modello linguistico causale prevede il token successivo in base ai token precedenti.
Crea il modello utilizzando il metodo from_preset
:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
La funzione GemmaCausalLM.from_preset()
esegue l'inizializzazione del modello da un'architettura e da pesi preimpostati. Nel codice precedente, la stringa "gemma2_2b_en"
specifica il modello Gemma 2 2B preimpostato con 2 miliardi di parametri. Sono disponibili anche i modelli Gemma con parametri 7B, 9B e 27B. Puoi trovare le stringhe di codice per i modelli Gemma nelle relative schede Model Variation su Kaggle.
Utilizza summary
per visualizzare ulteriori informazioni sul modello:
gemma_lm.summary()
Come puoi vedere dal riepilogo, il modello ha 2,6 miliardi di parametri addestrabili.
Genera testo
Ora è il momento di generare del testo. Il modello ha un metodo generate
che genera testo in base a un prompt. L'argomento facoltativo max_length
specifica la lunghezza massima della sequenza generata.
Prova con il prompt "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'
Prova a chiamare di nuovo generate
con un altro prompt.
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'
Se esegui l'esecuzione su backend JAX o TensorFlow, noterai che la seconda chiamata generate
viene restituita quasi istantaneamente. Questo perché ogni chiamata a generate
per una determinata dimensione del batch e max_length
viene compilata con XLA. La prima esecuzione è costosa, ma quelle successive sono molto più veloci.
Puoi anche fornire prompt raggruppati utilizzando un elenco come input:
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']
(Facoltativo) Prova un altro campionatore
Puoi controllare la strategia di generazione per GemmaCausalLM
impostando l'argomento sampler
su compile()
. Per impostazione predefinita, verrà utilizzato il campionamento "greedy"
.
Come esperimento, prova a impostare una strategia "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.'
Mentre l'algoritmo greedy predefinito sceglie sempre il token con la probabilità più alta, l'algoritmo Top-K sceglie in modo casuale il token successivo tra i token con le prime K probabilità.
Non è necessario specificare un campionatore e puoi ignorare l'ultimo snippet di codice se non è utile per il tuo caso d'uso. Per scoprire di più sui sampler disponibili, consulta Sampler.
Passaggi successivi
In questo tutorial hai imparato a generare testo utilizzando KerasNLP e Gemma. Ecco alcuni suggerimenti su cosa imparare dopo:
- Scopri come ottimizzare un modello Gemma.
- Scopri come eseguire ottimizzazione e inferenza distribuite su un modello Gemma.
- Scopri di più sull'integrazione di Gemma con Vertex AI
- Scopri come utilizzare i modelli Gemma con Vertex AI.