Questo tutorial ti aiuterà a iniziare a utilizzare il servizio di ottimizzazione dell'API Gemini utilizzando l'SDK Python o l'API REST curl. Gli esempi mostrano come ottimizzare il modello di testo alla base il servizio di generazione di testo dell'API Gemini.
Visualizza su ai.google.dev | Prova un blocco note di Colab | Visualizza blocco note su GitHub |
Limitazioni
Prima di ottimizzare un modello, tieni presente le seguenti limitazioni:
Set di dati di ottimizzazione fine
I set di dati di ottimizzazione per Gemini 1.5 Flash presentano le seguenti limitazioni:
- La dimensione massima di input per esempio è di 40.000 caratteri.
- La dimensione massima dell'output per esempio è di 5000 caratteri.
- Sono supportati solo gli esempi di coppie input-output. Le conversazioni con più turni in stile chat non sono supportate.
Modelli ottimizzati
I modelli ottimizzati presentano le seguenti limitazioni:
- Il limite di input di un modello Gemini 1.5 Flash ottimizzato è di 40.000 caratteri.
- La modalità JSON non è supportata con i modelli ottimizzati.
- È supportato solo l'inserimento di testo.
Prima di iniziare: configura il progetto e la chiave API
Prima di chiamare l'API Gemini, devi impostare il tuo progetto la chiave API.
Elenco modelli ottimizzati
Puoi controllare i tuoi modelli ottimizzati esistenti con
tunedModels.list
.
import google.generativeai as genai
for model_info in genai.list_tuned_models():
print(model_info.name)
Crea un modello ottimizzato
Per creare un modello ottimizzato, devi passare il tuo dataset a
il modello nella tunedModels.create
.
In questo esempio, ottimizzerai un modello per generare il numero successivo nella
sequenza. Ad esempio, se l'input è 1
, il modello dovrebbe restituire 2
. Se
l'input è one hundred
, l'output dovrebbe essere one hundred one
.
import google.generativeai as genai
import time
base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
{"text_input": "1", "output": "2"},
# ... more examples ...
# ...
{"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
# You can use a tuned model here too. Set `source_model="tunedModels/..."`
display_name="increment",
source_model=base_model,
epoch_count=20,
batch_size=4,
learning_rate=0.001,
training_data=training_data,
)
for status in operation.wait_bar():
time.sleep(10)
result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')
model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text) # IV
I valori ottimali per il conteggio delle epoche, la dimensione del batch e il tasso di apprendimento dipendono del set di dati e di altri vincoli del tuo caso d'uso. Per scoprire di più su questi valori, consulta le impostazioni di ottimizzazione avanzata e gli iperparametri.
Poiché l'ottimizzazione di un modello può richiedere molto tempo, questa API non attende il completamento dell'ottimizzazione. Restituisce invece un google.api_core.operation.Operation
che consente di controllare lo stato del job di ottimizzazione o di attendere che
completa e controlla il risultato.
Il modello ottimizzato viene aggiunto immediatamente all'elenco dei modelli ottimizzati, ma stato impostato su "creazione in corso" mentre il modello è ottimizzato.
Controlla l'avanzamento dell'ottimizzazione
Puoi controllare l'avanzamento dell'operazione di ottimizzazione utilizzando il wait_bar()
:
for status in operation.wait_bar():
time.sleep(10)
Puoi anche utilizzare operation.metadata
per controllare il numero totale di passaggi di ottimizzazione
e operation.update()
per aggiornare lo stato dell'operazione.
Puoi annullare l'operazione di ottimizzazione in qualsiasi momento utilizzando il metodo cancel()
.
operation.cancel()
Prova il modello
Puoi utilizzare il metodo
tunedModels.generateContent
e specificare il nome del modello ottimizzato per testarne le prestazioni.
import google.generativeai as genai
model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text) # "IV"
Aggiorna la descrizione
Puoi aggiornare la descrizione del modello ottimizzato in qualsiasi momento utilizzando il metodo genai.update_tuned_model
.
genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})
Elimina il modello
Puoi ripulire l'elenco dei modelli ottimizzati eliminando quelli che non ti servono più.
Utilizza il metodo tunedModels.delete
per eliminare un modello. Se hai annullato job di ottimizzazione, ti consigliamo di eliminarli come
il loro rendimento potrebbe essere imprevedibile.
genai.delete_tuned_model("tunedModels/my-increment-model")