Tutoriel d'optimisation

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.

import google.generativeai as genai

for model_info in genai.list_tuned_models():
    print(model_info.name)

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 régler un modèle afin de générer le nombre suivant dans la séquence. Par exemple, si l'entrée est 1, le modèle doit renvoyer 2. Si le l'entrée est one hundred, la sortie doit être 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

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.

Étant donné que le réglage d'un modèle peut prendre beaucoup de temps, cette API n'attend pas la fin du réglage. À la place, il renvoie un objet google.api_core.operation.Operation qui vous permet de vérifier l'état de la tâche de réglage, ou d'attendre qu'elle se termine et de vérifier le résultat.

Votre modèle ajusté est immédiatement ajouté à la liste des modèles ajustés, mais son état est défini sur "création" pendant l'ajustement.

Vérifier la progression du réglage

Vous pouvez vérifier la progression de l'opération de réglage à l'aide de la méthode wait_bar() :

for status in operation.wait_bar():
    time.sleep(10)

Vous pouvez également utiliser operation.metadata pour vérifier le nombre total d'étapes de réglage et operation.update() pour actualiser l'état de l'opération.

Vous pouvez annuler votre job de réglage à tout moment à l'aide de la méthode cancel().

operation.cancel()

Essayer le modèle

Vous pouvez utiliser la méthode tunedModels.generateContent et spécifier le nom du modèle optimisé pour tester ses performances.

import google.generativeai as genai

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

Mettre à jour la description

Vous pouvez mettre à jour la description de votre modèle affiné à tout moment à l'aide de la méthode genai.update_tuned_model.

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

Supprimer le modèle

Vous pouvez nettoyer votre liste de modèles réglés en supprimant ceux 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.

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