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