Tutorial sul perfezionamento

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")