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 notebook su GitHub

Limitazioni

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

Set di dati di ottimizzazione fine

La definizione fine 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.

from google import genai
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable

for model_info in client.models.list():
    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.

# create tuning model
training_dataset =  [
    ["1", "2"],
    ["3", "4"],
    ["-3", "-2"],
    ["twenty two", "twenty three"],
    ["two hundred", "two hundred one"],
    ["ninety nine", "one hundred"],
    ["8", "9"],
    ["-98", "-97"],
    ["1,000", "1,001"],
    ["10,100,000", "10,100,001"],
    ["thirteen", "fourteen"],
    ["eighty", "eighty one"],
    ["one", "two"],
    ["three", "four"],
    ["seven", "eight"],
]
training_dataset=types.TuningDataset(
        examples=[
            types.TuningExample(
                text_input=i,
                output=o,
            )
            for i,o in training_dataset
        ],
    )
tuning_job = client.tunings.tune(
    base_model='models/gemini-1.0-pro-001',
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count= 5,
        batch_size=4,
        learning_rate=0.001,
        tuned_model_display_name="test tuned model"
    )
)

# generate content with the tuned model
response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III',
)

print(response.text)

I valori ottimali per il conteggio delle 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.

Prova il modello

Puoi utilizzare il metodo tunedModels.generateContent e specificare il nome del modello ottimizzato per testarne le prestazioni.

response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III'
)

Non implementata

Alcune funzionalità (report sullo stato di avanzamento, aggiornamento della descrizione ed eliminazione dei modelli ottimizzati) non sono ancora state implementate nel nuovo SDK.