Affiner avec l'API Gemini

Les stratégies de conception de requêtes, comme les requêtes de plans peu nombreuses, ne produisent pas toujours les résultats dont vous avez besoin. Le réglage fin est un processus qui peut améliorer les performances de votre modèle sur des tâches spécifiques ou l'aider à respecter des exigences de sortie spécifiques lorsque les instructions ne sont pas suffisantes et que vous disposez d'un ensemble d'exemples illustrant les résultats souhaités.

Cette page présente une présentation conceptuelle du réglage fin du modèle de texte derrière le service de texte de l'API Gemini. Lorsque vous êtes prêt à commencer à affiner, essayez le tutoriel d'ajustement précis. Pour une présentation plus générale de la personnalisation des LLM pour des cas d'utilisation spécifiques, consultez LLM: réglage fin, distillation et ingénierie des requêtes dans le Cours d'initiation au machine learning.

Fonctionnement du paramétrage

L'objectif de l'affinage est d'améliorer davantage les performances du modèle pour une tâche spécifique. Pour affiner les réglages d'un modèle, fournissez-lui un ensemble de données d'entraînement contenant de nombreux exemples de la tâche. Pour les tâches de niche, vous pouvez obtenir des améliorations significatives des performances du modèle en ajustant le modèle sur un petit nombre d'exemples. Ce type d'ajustement de modèle est parfois appelé ajustement supervisé pour le distinguer des autres types d'ajustement.

Vos données d'entraînement doivent être structurées en exemples avec des entrées d'invite et des sorties de réponse attendues. Vous pouvez également ajuster des modèles à l'aide d'exemples de données directement dans Google AI Studio. L'objectif est d'apprendre au modèle à simuler le comportement ou la tâche souhaité en lui fournissant de nombreux exemples illustrant ce comportement ou cette tâche.

Lorsque vous exécutez une tâche de réglage, le modèle apprend des paramètres supplémentaires qui lui permettent d'encoder les informations nécessaires pour effectuer la tâche souhaitée ou apprendre le comportement souhaité. Ces paramètres peuvent ensuite être utilisés au moment de l'inférence. Le résultat de la tâche de réglage est un nouveau modèle, qui est une combinaison des paramètres nouvellement appris et du modèle d'origine.

Préparer votre ensemble de données

Avant de pouvoir commencer le réglage fin, vous devez disposer d'un ensemble de données pour régler le modèle. Pour obtenir des performances optimales, les exemples de l'ensemble de données doivent être de haute qualité, diversifiés et représentatifs d'entrées et de sorties réelles.

Format

Les exemples de votre ensemble de données doivent correspondre au trafic de production attendu. Si votre ensemble de données contient une mise en forme, des mots clés, des instructions ou des informations spécifiques, les données de production doivent utiliser le même format et contenir les mêmes instructions.

Par exemple, si les exemples de votre ensemble de données incluent "question:" et "context:", le trafic de production doit également être mis en forme de manière à inclure "question:" et "context:" dans le même ordre que les exemples de l'ensembles de données. Si vous excluez le contexte, le modèle ne peut pas reconnaître le modèle, même si la question exacte figurait dans un exemple de l'ensemble de données.

Voici un autre exemple de données d'entraînement Python pour une application qui génère le nombre suivant d'une séquence:

training_data = [
  {"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"},
]

Ajouter une requête ou un préambule à chaque exemple de votre ensemble de données peut également contribuer à améliorer les performances du modèle affiné. Notez que si une requête ou un préambule est inclus dans votre ensemble de données, il doit également être inclus dans la requête adressée au modèle affiné au moment de l'inférence.

Limites

Remarque:Les ensembles de données d'optimisation 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.

Taille des données d'entraînement

Vous pouvez affiner un modèle avec seulement 20 exemples. Les données supplémentaires améliorent généralement la qualité des réponses. Vous devez cibler entre 100 et 500 exemples, en fonction de votre application. Le tableau suivant présente les tailles d'ensemble de données recommandées pour affiner un modèle de texte pour diverses tâches courantes:

Tâche Nombre d'exemples dans l'ensemble de données
Classification 100+
Synthèse 100-500+
Rechercher des documents 100+

Importer votre ensemble de données de réglage

Les données sont transmises en ligne à l'aide de l'API ou via des fichiers importés dans Google AI Studio.

Pour utiliser la bibliothèque cliente, fournissez le fichier de données dans l'appel createTunedModel. La taille du fichier ne doit pas dépasser 4 Mo. Pour commencer, consultez le guide de démarrage rapide de l'ajustement avec Python.

Pour appeler l'API REST à l'aide de cURL, fournissez des exemples d'entraînement au format JSON à l'argument training_data. Pour commencer, consultez le guide de démarrage rapide de réglage avec cURL.

Paramètres de réglage avancés

Lorsque vous créez une tâche de réglage, vous pouvez spécifier les paramètres avancés suivants:

  • Époques:cycle d'entraînement complet sur l'ensemble de données d'entraînement complet, de sorte que chaque exemple ait été traité une fois.
  • Taille de lot:ensemble d'exemples utilisés dans une itération d'entraînement. La taille de lot détermine le nombre d'exemples dans un lot.
  • Taux d'apprentissage:nombre à virgule flottante qui indique à l'algorithme l'intensité avec laquelle ajuster les paramètres du modèle à chaque itération. Par exemple, un taux d'apprentissage de 0,3 ajusterait les poids et les biais trois fois plus efficacement qu'un taux d'apprentissage de 0,1. Les taux d'apprentissage élevés et faibles présentent leurs propres compromis et doivent être ajustés en fonction de votre cas d'utilisation.
  • Multiplicateur du taux d'apprentissage:le multiplicateur du taux d'apprentissage modifie le taux d'apprentissage d'origine du modèle. Une valeur de 1 utilise le taux d'apprentissage d'origine du modèle. Les valeurs supérieures à 1 augmentent le taux d'apprentissage, tandis que les valeurs comprises entre 1 et 0 le réduisent.

Le tableau suivant présente les configurations recommandées pour affiner un modèle de fondation:

Hyperparamètre Valeur par défaut Ajustements recommandés
Époque 5

Si la perte commence à plafonner avant cinq épopées, utilisez une valeur plus faible.

Si la perte converge et ne semble pas atteindre un plateau, utilisez une valeur plus élevée.

Taille de lot 4
Taux d'apprentissage 0,001 Utilisez une valeur plus faible pour les ensembles de données plus petits.

La courbe de perte indique dans quelle mesure la prédiction du modèle s'écarte des prédictions idéales dans les exemples d'entraînement après chaque époque. Idéalement, vous devez arrêter l'entraînement au point le plus bas de la courbe juste avant qu'elle ne plafonne. Par exemple, le graphique ci-dessous montre que la courbe de perte atteint un plateau vers les époques 4 à 6, ce qui signifie que vous pouvez définir le paramètre Epoch sur 4 tout en obtenant les mêmes performances.

Graphique en courbes montrant la courbe de perte du modèle. La ligne atteint un pic entre la première et la deuxième époque, puis diminue fortement pour atteindre presque 0 et se stabiliser après trois époques.

Vérifier l'état de la tâche de réglage

Vous pouvez vérifier l'état de votre tâche de réglage dans Google AI Studio sous l'onglet My Library (Ma bibliothèque) ou à l'aide de la propriété metadata du modèle affiné dans l'API Gemini.

Résoudre les erreurs

Cette section inclut des conseils pour résoudre les erreurs que vous pouvez rencontrer lors de la création de votre modèle optimisé.

Authentification

L'ajustement à l'aide de l'API et de la bibliothèque cliente nécessite une authentification. Vous pouvez configurer l'authentification à l'aide d'une clé API (recommandé) ou d'identifiants OAuth. Pour en savoir plus sur la configuration d'une clé API, consultez la page Configurer une clé API.

Si une erreur 'PermissionDenied: 403 Request had insufficient authentication scopes' s'affiche, vous devrez peut-être configurer l'authentification des utilisateurs à l'aide d'identifiants OAuth. Pour configurer des identifiants OAuth pour Python, consultez notre tutoriel de configuration OAuth.

Modèles annulés

Vous pouvez annuler une tâche d'ajustement à tout moment avant qu'elle ne soit terminée. Toutefois, les performances d'inférence d'un modèle annulé sont imprévisibles, en particulier si la tâche de réglage est annulée au début de l'entraînement. Si vous avez annulé l'entraînement, car vous souhaitez l'arrêter à une époque antérieure, vous devez créer un nouveau job de réglage et définir l'époque sur une valeur inférieure.

Limites des modèles ajustés

Remarque: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.
  • Les instructions système ne sont pas compatibles avec les modèles optimisés.
  • Seule la saisie de texte est acceptée.

Étape suivante

Pour commencer, suivez les tutoriels de réglage: