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'affinage

Les ensembles de données de réglage fin pour Gemini 1.5 Flash sont soumis aux limites suivantes:

  • La taille d'entrée maximale par exemple est de 40 000 caractères.
  • La taille maximale de sortie par exemple est de 5 000 caractères.
  • Seuls les exemples de paires d'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 optimisés présentent les limites suivantes:

  • La limite d'entrée d'un modèle Flash Gemini 1.5 affiné est de 40 000 caractères.
  • Le mode JSON n'est pas compatible avec les modèles optimisé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 affinés existants à l'aide de la méthode 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)

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 renvoyer 2. Si l'entrée est one hundred, le résultat doit être 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)

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.

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.

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

Non implémentée

Certaines fonctionnalités (rapports sur la progression, mise à jour de la description et suppression des modèles optimisés) n'ont pas encore été implémentées dans le nouveau SDK.