|
|
Esegui in Google Colab
|
|
|
Visualizza il codice sorgente su GitHub
|
Gemma è una famiglia di modelli aperti leggeri e all'avanguardia creati sulla base della stessa ricerca e tecnologia utilizzata per creare i modelli Gemini. Gemma 4 è progettata per essere la famiglia di modelli open-weight più efficiente al mondo.
Questo documento fornisce una guida per eseguire l'inferenza di testo di base con Gemma 4 utilizzando la libreria transformers di Hugging Face. Vengono trattati la configurazione dell'ambiente, il caricamento del modello e vari scenari di generazione di testo, tra cui prompt a un solo turno, conversazioni strutturate a più turni e applicazione delle istruzioni di sistema.
Questo notebook verrà eseguito sulla GPU T4.
Installa i pacchetti Python
Installa le librerie Hugging Face necessarie per eseguire il modello Gemma ed effettuare richieste.
# Install PyTorch & other librariespip install torch accelerate# Install the transformers librarypip install transformers
Dialog è una libreria per manipolare e visualizzare le conversazioni.
pip install dialogCarica modello
Utilizza la libreria transformers per caricare la pipeline
MODEL_ID = "google/gemma-4-E2B-it" # @param ["google/gemma-4-E2B-it","google/gemma-4-E4B-it", "google/gemma-4-31B-it", "google/gemma-4-26B-A4B-it"]
from transformers import pipeline
txt_pipe = pipeline(
task="text-generation",
model=MODEL_ID,
device_map="auto",
dtype="auto"
)
Loading weights: 0%| | 0/2011 [00:00<?, ?it/s]
Esegui la generazione di testo
Una volta caricato e configurato il modello Gemma in un oggetto pipeline, puoi inviare prompt al modello. Il seguente codice di esempio mostra una richiesta di base che utilizza il parametro text_inputs:
output = txt_pipe(text_inputs="<|turn>user\nRoses are..<turn|>\n<|turn>model\n")
print(output[0]['generated_text'])
Both `max_new_tokens` (=256) and `max_length`(=20) seem to have been set. `max_new_tokens` will take precedence. Please refer to the documentation for more information. (https://huggingface.co/docs/transformers/main/en/main_classes/text_generation) <|turn>user Roses are..<turn|> <|turn>model Here are a few ways to complete the phrase "Roses are...": **Classic/Poetic:** * **Roses are red.** (The most famous completion, though it usually goes "Roses are red, Violets are blue.") * **Roses are beautiful.** * **Roses are fragrant.** **Simple/Direct:** * **Roses are lovely.** * **Roses are soft.** **If you want a specific tone, let me know! 😊**
Utilizzare la libreria Dialog
import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
conv = dialog.Conversation(
dialog.User("Roses are...")
)
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
print(conv.as_text())
conv.show()
<|turn>user Roses are...<turn|> <|turn>model Here are a few ways to complete the phrase "Roses are...": **Focusing on their beauty:** * **Roses are beautiful.** * **Roses are gorgeous.** **Focusing on their scent:** * **Roses are fragrant.** * **Roses are sweet-smelling.** **Focusing on their symbolism (if you want a deeper meaning):** * **Roses are love.** * **Roses are romantic.** **Focusing on a general observation:** * **Roses are lovely.** * **Roses are wonderful.** **Which completion do you like best, or were you thinking of a specific meaning?** <dialog._src.widget.Conversation object at 0x7f1bb1a5d8b0>
Utilizzare un modello di prompt
Quando generi contenuti con prompt più complessi, utilizza un modello di prompt per strutturare la richiesta. Un modello di prompt consente di specificare l'input di ruoli specifici, ad esempio user o model, ed è un formato obbligatorio per la gestione delle interazioni di chat a più turni con i modelli Gemma. Il seguente codice di esempio mostra come creare un modello di prompt per Gemma:
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Write a short poem about the Kraken."},
]
}
]
output = txt_pipe(messages, return_full_text=False, generation_config=config)
print(output[0]['generated_text'])
From sunless depths, a shadow stirs, Where ocean's crushing silence blurs. A titan sleeps in inky night, With tentacles of dreadful might. A hundred arms, a crushing hold, A legend whispered, ages old. The deep's dark king, a monstrous grace, The Kraken claims its watery space.
Conversazione a turni multipli
In una configurazione multi-turno, la cronologia della conversazione viene conservata come una sequenza di ruoli user e model alternati. Questo elenco cumulativo funge da memoria del modello, garantendo che ogni nuovo output sia basato sul dialogo precedente.
import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
# User turn #1
conv = dialog.Conversation(
dialog.User("Write a short poem about the Kraken.")
)
# Model response #1
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
# User turn #2
conv += dialog.User("Now with the Siren.")
# Model response #2
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
print(conv.as_text())
conv.show()
<|turn>user Write a short poem about the Kraken.<turn|> <|turn>model In depths where sunlight fades, A monstrous shadow plays. The Kraken wakes, with churning tide, A living horror, bold and wide.<turn|> <|turn>user Now with the Siren.<turn|> <|turn>model Where coral gardens sleep, And ocean secrets keep, The Siren calls, with liquid grace, A haunting melody in place. <dialog._src.widget.Conversation object at 0x7f1bac3733b0>
Ed ecco la conversazione esportata come testo.
chat_history = conv.as_text(training=True)
print(chat_history)
print("-"*80)
# display as Conversation widget
chat_history
<|turn>user Write a short poem about the Kraken.<turn|> <|turn>model In depths where sunlight fades, A monstrous shadow plays. The Kraken wakes, with churning tide, A living horror, bold and wide.<turn|> <|turn>user Now with the Siren.<turn|> <|turn>model Where coral gardens sleep, And ocean secrets keep, The Siren calls, with liquid grace, A haunting melody in place.<turn|> -------------------------------------------------------------------------------- <dialog._src.widget.ConversationStr object at 0x7f1bb07fa1b0>
Istruzioni di sistema
Utilizza il ruolo system per fornire le istruzioni a livello di sistema.
import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
conv = dialog.Conversation(
dialog.System("Speak like a pirate."),
dialog.User("Why is the sky blue?")
)
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
print(conv.as_text())
conv.show()
<|turn>system Speak like a pirate.<turn|> <|turn>user Why is the sky blue?<turn|> <|turn>model Ahoy there! Why is the sky blue, ye ask? It be down to the way the sun's light dances through the air! See, the sunlight we get from the sun ain't just one color; it's a whole spectrum of colors, like a treasure chest filled with all the hues of the rainbow! Now, the Earth is surrounded by the air, and that air is full of tiny, invisible bits of gas. When the sunlight hits these gas molecules, something magical happens. The colors in that sunlight get scattered all around in every direction! The blue light, and other colors, get scattered more easily by these air molecules than the other colors. So, when you look up at the sky, your eyes catch all that scattered blue light coming from every direction, and **that's what makes the sky appear blue to us!** It's a grand display of physics and light, savvy? Now, hoist the colors and enjoy the view! <dialog._src.widget.Conversation object at 0x7f1bac370110>
Riepilogo e passaggi successivi
In questa guida hai imparato a eseguire l'inferenza di testo di base con Gemma 4 utilizzando la libreria transformers di Hugging Face. Hai trattato:
- Configurazione dell'ambiente e installazione delle dipendenze.
- Caricamento del modello utilizzando l'astrazione
pipeline. - Esecuzione della generazione di testo di base.
- Utilizzo della libreria
dialogper il monitoraggio delle conversazioni. - Implementazione di conversazioni a turni multipli e applicazione delle istruzioni di sistema.
Esegui in Google Colab
Visualizza il codice sorgente su GitHub