Ce tutoriel vous aidera à vous familiariser avec le service de réglage de l'API Gemini à l'aide du SDK Python ou de l'API REST avec curl. Les exemples montrent comment régler le modèle de texte derrière le service de génération de texte de l'API Gemini.
Afficher sur ai.google.dev | Essayer un notebook Colab | Afficher le notebook sur GitHub |
Limites
Avant d'ajuster un modèle, vous devez prendre en compte les limites suivantes :
Ensembles de données d'ajustement
Les ensembles de données d'affinage pour Flash Gemini 1.5 présentent les limites suivantes:
- La taille d'entrée maximale par exemple est de 40 000 caractères.
- La taille de sortie maximale par exemple est de 5 000 caractères.
- Seuls les exemples de paires entrée/sortie sont acceptés. Les conversations multitours de type chat ne sont pas acceptées.
Modèles réglés
Les modèles réglés présentent les limites suivantes:
- La limite d'entrée d'un modèle Flash Gemini 1.5 réglé est de 40 000 caractères.
- Le mode JSON n'est pas compatible avec les modèles réglés.
- Seule la saisie de texte est acceptée.
Avant de commencer : configurez votre projet et votre clé API
Avant d'appeler l'API Gemini, vous devez configurer votre projet et votre clé API.
Répertorier les modèles réglés
Vous pouvez vérifier vos modèles réglés existants avec la
tunedModels.list
.
# Sending a page_size is optional
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${access_token}" \
-H "x-goog-user-project: ${project_id}" > tuned_models.json
jq .tunedModels[].name < tuned_models.json
# Send the nextPageToken to get the next page.
page_token=$(jq .nextPageToken < tuned_models.json | tr -d '"')
if [[ "$page_token" != "null"" ]]; then
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5\&page_token=${page_token}?key=$GOOGLE_API_KEY \
-H "Content-Type: application/json" > tuned_models2.json
jq .tunedModels[].name < tuned_models.json
fi
Créer un modèle réglé
Pour créer un modèle affiné, vous devez transmettre votre ensemble de données au modèle dans la méthode tunedModels.create
.
Dans cet exemple, vous allez optimiser un modèle pour générer le prochain nombre de la séquence. Par exemple, si l'entrée est 1
, le modèle doit générer 2
. Si le
l'entrée est one hundred
, la sortie doit être one hundred one
.
curl -X POST "https://generativelanguage.googleapis.com/v1beta/tunedModels?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '
{
"display_name": "number generator model",
"base_model": "models/gemini-1.5-flash-001-tuning",
"tuning_task": {
"hyperparameters": {
"batch_size": 2,
"learning_rate": 0.001,
"epoch_count":5,
},
"training_data": {
"examples": {
"examples": [
{
"text_input": "1",
"output": "2",
},{
"text_input": "3",
"output": "4",
},{
"text_input": "-3",
"output": "-2",
},{
"text_input": "twenty two",
"output": "twenty three",
},{
"text_input": "two hundred",
"output": "two hundred one",
},{
"text_input": "ninety nine",
"output": "one hundred",
},{
"text_input": "8",
"output": "9",
},{
"text_input": "-98",
"output": "-97",
},{
"text_input": "1,000",
"output": "1,001",
},{
"text_input": "10,100,000",
"output": "10,100,001",
},{
"text_input": "thirteen",
"output": "fourteen",
},{
"text_input": "eighty",
"output": "eighty one",
},{
"text_input": "one",
"output": "two",
},{
"text_input": "three",
"output": "four",
},{
"text_input": "seven",
"output": "eight",
}
]
}
}
}
}' | tee tunemodel.json
# Check the operation for status updates during training.
# Note: you can only check the operation on v1/
operation=$(cat tunemodel.json | jq ".name" | tr -d '"')
tuning_done=false
while [[ "$tuning_done" != "true" ]];
do
sleep 5
curl -X GET "https://generativelanguage.googleapis.com/v1/${operation}?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
2> /dev/null > tuning_operation.json
complete=$(jq .metadata.completedPercent < tuning_operation.json)
tput cuu1
tput el
echo "Tuning...${complete}%"
tuning_done=$(jq .done < tuning_operation.json)
done
# Or get the TunedModel and check it's state. The model is ready to use if the state is active.
modelname=$(cat tunemodel.json | jq ".metadata.tunedModel" | tr -d '"')
curl -X GET https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' > tuned_model.json
cat tuned_model.json | jq ".state"
Les valeurs optimales pour le nombre d'époques, la taille de lot et le taux d'apprentissage dépendent de votre ensemble de données et des autres contraintes de votre cas d'utilisation. Pour en savoir plus sur ces valeurs, consultez les sections Paramètres de réglage avancés et Hyperparamètres.
Votre modèle réglé est immédiatement ajouté à la liste des modèles réglés, mais son est défini sur "création" pendant que le modèle est réglé.
Essayer le modèle
Vous pouvez utiliser la méthode tunedModels.generateContent
et spécifier le nom du modèle affiné pour tester ses performances.
curl -X POST https://generativelanguage.googleapis.com/v1beta/$modelname:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"parts": [{
"text": "LXIII"
}]
}]
}' 2> /dev/null
Supprimer le modèle
Vous pouvez nettoyer la liste des modèles optimisés en supprimant les modèles dont vous n'avez plus besoin.
Utilisez la méthode tunedModels.delete
pour
supprimer un modèle. Si vous avez annulé des tâches de réglage, vous pouvez les supprimer, car leurs performances peuvent être imprévisibles.
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json'