Questo tutorial ti aiuterà a iniziare a ottimizzare l'API Gemini utilizzando l'SDK Python o l'API REST utilizzando 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 |
Configura l'autenticazione
L'API Gemini ti consente di ottimizzare i modelli in base ai tuoi dati. Poiché si tratta dei tuoi dati per i tuoi modelli ottimizzati, ciò richiede controlli di accesso più rigidi rispetto a quelli forniti dalle chiavi API.
Prima di poter eseguire questo tutorial, dovrai configurare OAuth per progetto.
Elenco modelli ottimizzati
Puoi controllare i tuoi modelli ottimizzati esistenti con il genai.list_tuned_models
.
for model_info in genai.list_tuned_models():
print(model_info.name)
Crea un modello ottimizzato
Per creare un modello ottimizzato, devi passare il set di dati al modello
genai.create_tuned_model
. Puoi farlo definendo direttamente
i valori di input e output nella chiamata o l'importazione da un file in un dataframe
al metodo.
Per 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 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, vedi Impostazioni di ottimizzazione avanzate e Iperparametri.
Poiché l'ottimizzazione di un modello può richiedere molto tempo, questa API non attende
l'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 il job di ottimizzazione in qualsiasi momento utilizzando il metodo cancel()
.
operation.cancel()
Prova il modello
Puoi utilizzare il metodo genai.generate_text
e specificare il nome del
del modello per testarne le prestazioni.
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
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 ottimizzato eliminando i modelli che non ti servono più.
Utilizza il metodo genai.delete_tuned_model
per eliminare un modello. Se hai annullato uno o più
di job di ottimizzazione, ti consigliamo di eliminarli poiché potrebbero essere le relative prestazioni
sono imprevedibili.
genai.delete_tuned_model("tunedModels/my-increment-model")