Préparer les données d'affinage supervisé pour les modèles Gemini

Ce document explique comment définir un ensemble de données d'affinage supervisé pour un modèle Gemini. Vous pouvez ajuster les types de données texte, image, audio et document.

À propos des ensembles de données d'affinage supervisé

Un ensemble de données d'affinage supervisé permet d'affiner un modèle pré-entraîné pour une tâche ou un domaine spécifique. Les données d'entrée doivent être semblables à celles que le modèle est susceptible de rencontrer dans un contexte réel. Les libellés de sortie doivent représenter les bonnes réponses ou les résultats pour chaque entrée.

Ensemble de données d'entraînement

Pour affiner un modèle, vous devez fournir un ensemble de données d'entraînement. Pour obtenir de meilleurs résultats, nous vous recommandons de commencer avec 100 exemples. Vous pouvez augmenter le nombre d'exemples jusqu'à plusieurs milliers si nécessaire. La qualité de l'ensemble de données est bien plus importante que sa quantité.

Limites :

  • Nombre maximal de jetons d'entrée et de sortie par exemple : 32 000
  • Taille de fichier maximale de l'ensemble de données d'entraînement : jusqu'à 1 Go pour JSONL.

Ensemble de données de validation

Nous vous recommandons vivement de fournir un ensemble de données de validation. Un ensemble de données de validation vous aide à mesurer l'efficacité d'une tâche de réglage.

Limites :

  • Nombre maximal de jetons d'entrée et de sortie par exemple : 32 000
  • Nombre maximal d'exemples dans l'ensemble de données de validation : 256
  • Taille de fichier maximale de l'ensemble de données d'entraînement : jusqu'à 1 Go pour JSONL.

Format de l'ensemble de données

Votre ensemble de données de réglage de modèle doit être au format JSON Lines (JSONL), où chaque ligne contient un seul exemple de réglage. Avant de régler le modèle, vous devez importer l'ensemble de données dans un bucket Cloud Storage.

Exemple d'ensemble de données pour gemini-1.5-pro et gemini-1.5-flash

{
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "fileData": {
            "mimeType": string,
            "fileUri": string
          }
        }
      ]
    }
  ]
}

Paramètres

Le corps de la requête contient des données avec les paramètres suivants :

Paramètres

contents

Requis : Content

Contenu de la conversation en cours avec le modèle.

Pour les requêtes à un seul tour, il s'agit d'une instance unique. Pour les requêtes multitours, il s'agit d'un champ répété contenant l'historique de la conversation et la dernière requête.

systemInstruction

Facultatif : Content.

Disponible pour gemini-1.5-flash, gemini-1.5-pro et gemini-1.0-pro-002.

Instructions permettant au modèle de l'orienter vers de meilleures performances. Par exemple, "répondez de manière aussi concise que possible" ou "N'utilisez pas de termes techniques dans votre réponse".

Les chaînes text sont comptabilisées dans la limite de jetons.

Le champ role de systemInstruction est ignoré et n'affecte pas les performances du modèle.

Sommaire

Type de données structurées de base comportant un contenu en plusieurs parties d'un message.

Cette classe comprend deux propriétés principales : role et parts. La propriété role indique l'individu qui produit le contenu, tandis que la propriété parts contient plusieurs éléments, chacun représentant un segment de données au sein d'un message.

Paramètres

role

Facultatif : string.

Identité de l'entité qui crée le message. Les valeurs suivantes sont acceptées :

  • user : indique que le message est envoyé par une personne réelle, généralement un message généré par un utilisateur.
  • model : indique que le message est généré par le modèle.

La valeur model permet d'insérer des messages du modèle dans la conversation lors de conversations multitours.

Pour les conversations non multitours, ce champ peut être vide ou non défini.

parts

part

Une liste de parties ordonnées qui composent un seul message. Chaque partie peut avoir des types MIME IANA différents.

Pour connaître les limites concernant les entrées, comme le nombre maximal de jetons ou d'images, consultez les spécifications du modèle sur la page Modèles Google.

Pour calculer le nombre de jetons dans votre requête, consultez Obtenir le nombre de jetons.

Parties

Type de données contenant du contenu multimédia faisant partie d'un message Content en plusieurs parties.

Paramètres

text

Facultatif : string.

Requête de texte ou extrait de code.

fileData

Facultatif : fileData.

Données stockées dans un fichier.

Exemple d'ensemble de données pour Gemini 1.0 Pro

Chaque exemple de conversation d'un ensemble de données de réglage se compose d'un champ "messages" obligatoire.

Le champ messages est constitué d'un tableau de paires rôle-contenu. Le champ role fait référence à l'auteur du message et est défini sur system, user ou model. Le rôle system est facultatif et ne peut se produire qu'au premier élément de la liste des messages. Les rôles user ou model sont obligatoires et peuvent se répéter de manière alternée.

Le champ content correspond au content du message.

Pour chaque exemple, la longueur maximale de jeton pour context et messages combinés est de 32 768 jetons. De plus, chaque champ de contenu du champ du modèle ne doit pas dépasser 8 192 jetons.

{
  "messages": [
    {
      "role": string,
      "content": string
    }
  ]
}

Assurer la cohérence des données de production

Les exemples de vos ensembles 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 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 reconnaît pas le modèle, même si la question exacte figurait dans un exemple de l'ensemble de données.

Importer les ensembles de données de réglage dans Cloud Storage

Pour exécuter un job de réglage, vous devez importer un ou plusieurs ensembles de données dans un bucket Cloud Storage. Vous pouvez créer un bucket Cloud Storage ou utiliser un bucket existant pour stocker les fichiers des ensembles de données. La région du bucket n'a pas d'importance, mais nous vous recommandons d'utiliser un bucket situé dans le même projet Google Cloud que celui où vous prévoyez de régler votre modèle.

Une fois votre bucket prêt, importez-y le fichier de votre ensemble de données.

Suivre les bonnes pratiques de conception des requêtes

Une fois que vous avez votre ensemble de données d'entraînement et que vous avez entraîné le modèle, il est temps de concevoir des requêtes. Il est important de suivre les bonnes pratiques de conception des requêtes dans votre ensemble de données d'entraînement pour fournir une description détaillée de la tâche à effectuer et de l'apparence de la sortie.

Étape suivante