API de réglage

Le réglage de modèle est un processus essentiel pour adapter Gemini afin d'effectuer des tâches spécifiques avec plus de précision. Pour affiner les réglages d'un modèle, fournissez-lui un ensemble de données d'entraînement contenant un ensemble d'exemples de tâches en aval spécifiques.

Utilisez l'API de réglage Gemini pour les cas d'utilisation suivants :

Modèles compatibles :

Vous pouvez utiliser les réglages supervisés sur les modèles Gemini suivants :

Modèle Version
Gemini 1.0 Pro gemini-1.0-pro-002

Exemple de syntaxe

Syntaxe permettant de régler un modèle.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs \
-d '{
  "baseModel": "...",
  "supervisedTuningSpec" : {
    ...
      "hyper_parameters": {
        ...
      },
  },
  "tunedModelDisplayName": "",
}'

Liste des paramètres

Consultez des exemples pour en savoir plus sur l'implémentation.

Corps de la requête

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

Paramètres

source_model

Facultatif : string.

Nom du modèle de fondation en cours de réglage. Les valeurs compatibles sont : gemini-1.0-pro-002.

tunedModelDisplayName

string

Nom à afficher de TunedModel. Le nom peut comporter jusqu'à 128 caractères et inclure n'importe quel caractère UTF-8.

supervisedTuningSpec

Paramètres

training_dataset

string

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 des résultats optimaux, fournissez au moins 100 à 500 exemples. Pour en savoir plus, consultez la page À propos des ensembles de données de réglage supervisé.

validation_dataset

Facultatif : string.

URI Cloud Storage de votre ensemble de données de validation. Votre ensemble de données doit être mis en forme en tant que fichier JSONL. Un ensemble de données peut contenir jusqu'à 256 exemples. Si vous fournissez ce fichier, les données sont utilisées pour générer régulièrement des métriques de validation lors du réglage. Pour en savoir plus, consultez la page À propos des ensembles de données de réglage supervisé.

epoch_count

Facultatif : int.

Nombre de passes complètes que le modèle effectue sur la totalité de l'ensemble de données d'entraînement pendant l'entraînement.

learning_rate_multiplier

Facultatif : float.

Multiplicateur permettant d'ajuster le taux d'apprentissage par défaut.

adapter_size

Facultatif : AdapterSize.

Taille de l'adaptateur pour le réglage.

tuned_model_display_name

Facultatif : string.

Nom à afficher de TunedModel. Le nom peut comporter jusqu'à 128 caractères et inclure n'importe quel caractère UTF-8.

AdapterSize

Taille de l'adaptateur pour la tâche de réglage.

Paramètres

ADAPTER_SIZE_UNSPECIFIED

Taille de l'adaptateur non spécifiée.

ADAPTER_SIZE_ONE

Taille d'adaptateur 1.

ADAPTER_SIZE_FOUR

Taille d'adaptateur 4.

ADAPTER_SIZE_EIGHT

Taille d'adaptateur 8.

ADAPTER_SIZE_SIXTEEN

Taille d'adaptateur 16.

AdapterSize par défaut si aucune valeur n'est spécifiée :

Modèle Version AdapterSize par défaut
Gemini 1.0 Pro gemini-1.0-pro-002 ADAPTER_SIZE_ONE

Examples

Créer un job de réglage supervisé

Vous pouvez créer un job de réglage d'un modèle de texte supervisé à l'aide du SDK Vertex AI pour Python ou en envoyant une requête POST.

Cas d'utilisation de base

Le cas d'utilisation de base ne définit que les valeurs pour baseModel et training_dataset_uri. Tous les autres paramètres utilisent les valeurs par défaut.

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.

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"
  },
}

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.

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.0-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)

Cas d'utilisation avancé

Le cas d'utilisation avancé étend le cas d'utilisation de base, mais définit également des valeurs pour les hyper_parameters facultatifs, tels que epoch_count, learning_rate_multiplier et adapter_size.

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.

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.0-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
    # The following parameters are optional
    validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl",
    epochs=4,
    learning_rate_multiplier=1.0,
    tuned_model_display_name="tuned_gemini_pro",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)

Répertorier les tâches de réglage

Vous pouvez afficher la liste des tâches de réglage dans votre projet actuel à l'aide du SDK Vertex AI pour Python ou en envoyant une requête GET.

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é.

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

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)

Obtenir les détails d'un job de réglage

Vous pouvez obtenir les détails d'un job de réglage à l'aide du SDK Vertex AI pour Python ou en envoyant une requête GET.

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

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project, location
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
response = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)

print(response)

Annuler un job de réglage

Vous pouvez annuler un job de réglage à l'aide du SDK Vertex AI pour Python ou en envoyant une requête POST.

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

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project, location
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
job = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)
job.cancel()

Étapes suivantes

Pour obtenir une documentation détaillée, consultez les pages suivantes :