Tutorial sul perfezionamento

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