Ce document explique comment régler un modèle Gemini à l'aide de l'affinage supervisé.
Avant de commencer
- Découvrez le fonctionnement de l'affinage supervisé et ses avantages.
- Découvrez comment préparer un ensemble de données d'affinage supervisé.
- Choisissez une région d'affinage supervisé pour exécuter des jobs de réglage.
Créer un job de réglage
Vous pouvez créer un job d'affinage supervisé à l'aide de la console Google Cloud, de l'API ou du SDK Vertex AI pour Python. Pour obtenir des conseils sur les configurations de réglage, consultez la page Configurations recommandées.
REST
Pour créer un job de réglage de modèle, envoyez une requête POST à l'aide de la méthode tuningJobs.create
.
Notez que certains paramètres ne sont pas compatibles avec tous les modèles. Veillez à n'inclure que les paramètres applicables au modèle que vous réglez.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- TUNING_JOB_REGION : région dans laquelle le job de réglage est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé.
- BASE_MODEL : nom du modèle de base à régler. Valeurs autorisées :
gemini-1.0-pro-002
- TRAINING_DATASET_URI : URI Cloud Storage de votre ensemble de données d'entraînement. L'ensemble de données doit être mis en forme en tant que fichier JSONL. Pour de meilleurs résultats, fournissez au moins 100 à 500 exemples. Pour en savoir plus, consultez la page À propos du réglage supervisé des ensembles de données.
- VALIDATION_DATASET_URI (facultatif) : URI Cloud Storage du fichier de votre ensemble de données de validation.
- EPOCH_COUNT (facultatif) : nombre d'époques à entraîner. Laissez cette valeur non définie pour utiliser la valeur recommandée.
- ADAPTER_SIZEFacultatif : taille de l'adaptateur à utiliser pour la tâche d'affinage.
- LEARNING_RATE_MULTIPLIER (facultatif) : un multiplicateur à appliquer au taux d'apprentissage recommandé. Laissez cette valeur non définie pour utiliser la valeur recommandée.
- TUNED_MODEL_DISPLAYNAME (facultatif) : nom à afficher pour le modèle réglé. Si ce paramètre n'est pas défini, un nom aléatoire est généré.
Méthode HTTP et URL :
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Corps JSON de la requête :
{ "baseModel": "BASE_MODEL", "supervisedTuningSpec" : { "training_dataset_uri": "TRAINING_DATASET_URI", "validation_dataset_uri": "VALIDATION_DATASET_URI", "hyper_parameters": { "epoch_count": EPOCH_COUNT, "adapter_size": ADAPTER_SIZE, "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER }, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME, }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Exemple de commande curl
PROJECT_ID=myproject
LOCATION=us-central1
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
"baseModel": "gemini-1.0-pro-002",
"supervisedTuningSpec" : {
"training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_gemini_pro"
}'
Python
Console
Pour régler un modèle de texte avec affinage supervisé à l'aide de la console Google Cloud, procédez comme suit :
Dans la section "Vertex AI" de la console Google Cloud, accédez à la page Vertex AI Studio.
Cliquez sur Créer un modèle réglé.
Sous Méthode de réglage, sélectionnez la case d'option Réglage supervisé.
Sous Informations sur le modèle, configurez les éléments suivants :
- Dans le champ Nom du modèle réglé, saisissez un nom pour votre nouveau modèle réglé, d'une longueur maximale de 128 caractères.
- Dans le champ Modèle de base, sélectionnez
gemini-1.0-pro-002
. - Dans le menu déroulant Région, sélectionnez la région où le job de réglage de pipeline s'exécute et où le modèle réglé est déployé.
Facultatif : développez la flèche du menu déroulant Options avancées et configurez les éléments suivants :
- Dans le champ Nombre d'époques, saisissez le nombre d'étapes à exécuter pour le réglage du modèle.
- Dans le champ Taille de l'adaptateur, saisissez la taille de l'adaptateur à utiliser pour le réglage du modèle.
- Dans le champ Multiplicateur de taux d'apprentissage, saisissez la taille de pas à chaque itération. La valeur par défaut est de 1.
Cliquez sur Continuer.
La page Régler l'ensemble de données s'affiche.
Pour importer un fichier d'ensemble de données, sélectionnez l'une des options suivantes :
- Si vous n'avez pas encore importé d'ensemble de données, sélectionnez la case d'option Importer un fichier dans Cloud Storage.
- Dans le champ Sélectionner un fichier JSONL, cliquez sur Parcourir et sélectionnez votre fichier d'ensemble de données.
- Dans le champ Emplacement de l'ensemble de données, cliquez sur Parcourir et sélectionnez le bucket Cloud Storage dans lequel vous souhaitez stocker le fichier de votre ensemble de données.
- Si le fichier de votre ensemble de données se trouve déjà dans un bucket Cloud Storage, cochez la case d'option Fichier existant dans Cloud Storage.
- Dans le champ Chemin d'accès du fichier Cloud Storage, cliquez sur Parcourir et sélectionnez le bucket Cloud Storage où se trouve le fichier de votre ensemble de données.
(Facultatif) Pour obtenir des métriques de validation pendant l'entraînement, cliquez sur le bouton Activer la validation du modèle.
- Dans le fichier Ensemble de données de validation, saisissez le chemin d'accès Cloud Storage de votre ensemble de données de validation.
Cliquez sur Commencer le réglage.
Votre nouveau modèle s'affiche sous la section Modèles réglés Gemini Pro sur la Page "Régler et distiller". Une fois le réglage du modèle terminé, l'état indique Réussite.
Configurations recommandées
Le tableau suivant présente les configurations recommandées pour le réglage d'un modèle de base par tâche :
Tâche | Nombre d'exemples dans l'ensemble de données | Nombre d'époques |
---|---|---|
Classification | 500+ | 2-4 |
Synthèse | + de 1 000 | 2-4 |
Questions-réponses extractives | 500+ | 2-4 |
Chat | + de 1 000 | 2-4 |
Pour le nombre d'époques, nous vous suggérons d'essayer plusieurs valeurs pour obtenir les meilleures performances sur un ensemble de données particulier. L'augmentation du nombre d'époques peut fournir de meilleurs résultats. Toutefois, vous devez éviter le surapprentissage, en particulier lorsque votre ensemble de données est petit, et réduire le nombre d'époques, le cas échéant.
Pour les tâches de classification, la complexité de la tâche augmente avec le nombre de classes. Pour un grand nombre de classes, vous aurez peut-être besoin d'ensembles de données plus volumineux.
Afficher la liste des jobs de réglage
Vous pouvez afficher la liste des jobs de réglage dans votre projet actuel à l'aide de la console Google Cloud ou du SDK Vertex AI pour Python, ou en envoyant une requête GET à l'aide de la méthode tuningJobs
.
REST
Pour afficher la liste des jobs de réglage de modèle, envoyez une requête GET à l'aide de la méthode tuningJobs.list
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- TUNING_JOB_REGION : région dans laquelle le job de réglage est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé.
Méthode HTTP et URL :
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Python
Console
Pour afficher vos jobs de réglage dans la console Google Cloud, accédez à la page Vertex AI Studio.
Vos jobs de réglage Gemini sont répertoriées dans le tableau de la section Modèles réglés Gemini Pro.
Obtenir les détails d'un job de réglage
Vous pouvez obtenir les détails d'un job de réglage dans votre projet actuel en utilisant la console Google Cloud ou le SDK Vertex AI pour Python, ou en envoyant une requête GET à l'aide de la méthode tuningJobs
.
REST
Pour afficher la liste des jobs de réglage de modèle, envoyez une requête GET à l'aide de la méthode tuningJobs.get
et spécifiez TuningJob_ID
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- TUNING_JOB_REGION : région dans laquelle le job de réglage est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé.
- TUNING_JOB_ID : ID du job de réglage.
Méthode HTTP et URL :
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Python
Console
Pour afficher les détails d'un modèle réglé dans la console Google Cloud, accédez à la page Vertex AI Studio.
Dans le tableau Modèles réglés Gemini Pro, recherchez votre modèle et cliquez sur Détails.
Les détails de votre modèle s'affichent.
Annuler un job de réglage
Vous pouvez annuler un job de réglage dans votre projet actuel à l'aide de la console Google Cloud ou du SDK Vertex AI pour Python, ou en envoyant une requête POST à l'aide de la méthode tuningJobs
.
REST
Pour afficher la liste des jobs de réglage de modèle, envoyez une requête GET à l'aide de la méthode tuningJobs.cancel
et spécifiez TuningJob_ID
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- TUNING_JOB_REGION : région dans laquelle le job de réglage est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé.
- TUNING_JOB_ID : ID du job de réglage.
Méthode HTTP et URL :
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Python
Console
Pour annuler un job de réglage dans la console Google Cloud, accédez à la page Vertex AI Studio.
Dans le tableau Modèles réglés Gemini Pro, cliquez sur
Gérer l'exécution.Cliquez sur Annuler.
Tester le modèle réglé à l'aide d'une requête
REST
Pour tester un modèle réglé avec une requête, envoyez une requête POST et spécifiez le paramètre TUNED_ENDPOINT_ID
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- TUNING_JOB_REGION : région dans laquelle le job de réglage est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé.
- ENDPOINT_ID : ID du point de terminaison du modèle réglé provenant de l'API GET.
- TEMPERATURE : La température est utilisée pour l'échantillonnage pendant la génération des réponses, qui se produit lorsque
topP
ettopK
sont appliqués. La température permet de contrôler le degré de hasard dans la sélection des jetons. Les températures inférieures sont idéales pour les requêtes qui nécessitent une réponse moins ouverte ou créative, tandis que des températures plus élevées peuvent conduire à des résultats plus diversifiés ou créatifs. Une température de0
signifie que les jetons de probabilité les plus élevés sont toujours sélectionnés. Dans ce cas, les réponses pour une requête donnée sont principalement déterministes, mais une petite quantité de variation est toujours possible.Si le modèle renvoie une réponse trop générique ou trop courte, ou s'il renvoie une réponse de remplacement, essayez d'augmenter la température.
- TOP_P : top P modifie la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés de la valeur la plus élevée (voir top-K) à la moins probable jusqu'à ce que la somme de leurs probabilités soit égale à la valeur top-P. Par exemple, si les jetons A, B et C ont une probabilité de 0,3, 0,2 et 0,1 et que la valeur de top-P est supérieure à
0.5
, le modèle sélectionne A ou B comme jeton suivant en utilisant la température et exclut C comme candidat.Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires.
- TOP_K : top K modifie la façon dont le modèle sélectionne les jetons pour la sortie. Un top-K de
1
signifie que le prochain jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (également appelé décodage gourmand), tandis que le top-K de3
signifie que le jeton suivant est sélectionné parmi les trois jetons les plus probables en utilisant la température.Pour chaque étape de sélection du jeton, les jetons top-K avec les probabilités les plus élevées sont échantillonnés. Les jetons sont ensuite filtrés en fonction du top-P avec le jeton final sélectionné à l'aide de l'échantillonnage de température.
Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires.
- MAX_OUTPUT_TOKENS : nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à quatre caractères. 100 jetons correspondent à environ 60-80 mots.
Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.
Méthode HTTP et URL :
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent
Corps JSON de la requête :
{ "contents": [ { "role": "USER", "parts": { "text" : "Why is sky blue?" } } ], "generation_config": { "temperature":TEMPERATURE, "top_p": TOP_P, "top_k": TOP_K, "max_output_tokens": MAX_OUTPUT_TOKENS } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent"
PowerShell
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Python
from vertexai.preview.generative_models import GenerativeModel
from vertexai.preview import tuning
from vertexai.preview.tuning import sft
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))
Console
Pour afficher les détails d'un modèle réglé dans la console Google Cloud, accédez à la page Vertex AI Studio.
Dans le tableau Modèles réglés Gemini Pro, sélectionnez Test.
Cela ouvre une page sur laquelle vous pouvez créer une conversation avec le modèle réglé.
Métriques de réglage et de validation
Vous pouvez configurer un job de réglage de modèle pour collecter et signaler les métriques de réglage de modèle et d'évaluation du modèle, qui peuvent ensuite être visualisées dans Vertex AI Studio.
Pour afficher les détails d'un modèle réglé dans la console Google Cloud, accédez à la page Vertex AI Studio.
Dans le tableau Régler et distiller, cliquez sur le nom du modèle réglé dont vous souhaitez afficher les métriques.
Les métriques de réglage s'affichent dans l'onglet Surveiller.
Métriques de réglage du modèle
Le job de réglage de modèle collecte automatiquement les métriques de réglage suivantes pour gemini-1.0-pro-002
.
/train_total_loss
: perte de l'ensemble de données de réglage à une étape d'entraînement./train_fraction_of_correct_next_step_preds
: justesse du jeton à un pas d'entraînement. Une prédiction unique consiste en une séquence de jetons. Cette métrique mesure la précision des jetons prévus par rapport à la vérité terrain dans l'ensemble de données de réglage./train_num_predictions:
Nombre de jetons prévus à une étape d'évaluation.
Métriques de validation de modèle :
Vous pouvez configurer un job de réglage de modèle pour collecter les métriques de validation suivantes pour gemini-1.0-pro-002
.
/eval_total_loss
: pertes de l'ensemble de données de validation à une étape de validation./eval_fraction_of_correct_next_step_preds
: justesse du jeton à une étape de validation. Une prédiction unique consiste en une séquence de jetons. Cette métrique mesure la précision des jetons prévus par rapport à la vérité terrain dans l'ensemble de données de validation./eval_num_predictions
: Nombre de jetons prévus à une étape d'évaluation.
Les visualisations des métriques sont disponibles une fois le job de réglage du modèle terminé. Si vous ne spécifiez pas d'ensemble de données de validation lorsque vous créez le job de réglage, seules les visualisations des métriques de réglage sont disponibles.
Étapes suivantes
- Pour savoir comment utiliser le réglage supervisé dans une solution qui crée une base de connaissances d'IA générative, consultez la page Solution de démarrage rapide : base de connaissances d'IA générative.