Tutorial sul perfezionamento

Questo tutorial ti aiuterà a iniziare a utilizzare il servizio di ottimizzazione dell'API Gemini con l'SDK Python o l'API REST utilizzando curl. Gli esempi mostrano come ottimizzare il modello di testo alla base del servizio di generazione di testo dell'API Gemini.

Visualizza su ai.google.dev Provare un notebook di Colab Visualizzare il blocco note su GitHub

Limitazioni

Prima di ottimizzare un modello, tieni presente le seguenti limitazioni:

Set di dati di ottimizzazione fine

La messa a punto dei set di dati per Gemini 1.5 Flash presenta le seguenti limitazioni:

  • La dimensione massima dell'input per esempio è 40.000 caratteri.
  • La dimensione massima dell'output per esempio è di 5000 caratteri.
  • Sono supportati solo 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 è 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 configurare il progetto e la chiave API.

Elenco dei modelli ottimizzati

Puoi controllare i modelli ottimizzati esistenti con il metodo 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 set di dati al modello nel metodo tunedModels.create.

Per questo esempio, ottimizzerai un modello per generare il numero successivo nella sequenza. Ad esempio, se l'input è 1, il modello deve produrre 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 numero di epoche, la dimensione del batch e il tasso di apprendimento dipendono dal set di dati e da altri vincoli del 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 oggetto google.api_core.operation.Operation che ti consente di controllare lo stato del job di ottimizzazione o di attendere il suo completamento e controllare il risultato.

Il modello ottimizzato viene aggiunto immediatamente all'elenco dei modelli ottimizzati, ma il suo stato viene impostato su "creazione" mentre il modello viene ottimizzato.

Controllare l'avanzamento dell'ottimizzazione

Puoi controllare l'avanzamento dell'operazione di ottimizzazione utilizzando il metodo 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 dei job di ottimizzazione, ti consigliamo di eliminarli perché il loro rendimento potrebbe essere imprevedibile.

genai.delete_tuned_model("tunedModels/my-increment-model")