Régler des modèles de code

Les modèles de code peuvent être réglés à l'aide du réglage supervisé. Le réglage supervisé utilise des exemples étiquetés qui illustrent le type de sortie que vous souhaitez obtenir de votre modèle de génération de code ou de chat de code lors de l'inférence. Les modèles de code ne sont pas compatibles avec le réglage en utilisant l'apprentissage automatique par renforcement qui utilise le feedback humain (RLHF).

Scénarios d'utilisation du réglage d'un modèle de code

Un réglage est nécessaire lorsque vous souhaitez qu'un modèle apprenne quelque chose de spécifique ou de spécialisé qui s'écarte des modèles généraux de langage et de code. Voici des exemples de ce que vous pouvez enseigner aux modèles code-bison et codechat-bison :

  • Découvrez comment générer du code pour des bibliothèques personnalisées. En entraînant un modèle de code avec des exemples étiquetés d'une bibliothèque personnalisée, vous pouvez générer ou discuter du code spécifique à cette bibliothèque personnalisée.
  • Comment utiliser votre code base. En entraînant un modèle avec des échantillons étiquetés de votre code base, vous pouvez générer du code ou discuter du code qui utilise des qualités uniques dans votre code base.
  • Générer du code à l'aide de variantes d'un langage de programmation En entraînant un modèle de code avec des échantillons étiquetés d'une variante de langage, vous pouvez générer ou discuter du code qui utilise les conventions et les normes de cette variante de langage.

Ces scénarios incluent des exigences de code difficiles à capturer seulement avec des instructions de requête. Voici quelques exemples :

Génération de code

  • Cet exemple de requête et de réponse permet d'ajuster code-bison pour qu'il fonctionne avec un ensemble de données spécifique.

     :

  • Cet exemple de requête et de réponse permet d'entraîner code-bison à créer un produit à l'aide de Python.

     :

Chat de code

  • Cet exemple de requête et de réponse permet d'ajuster codechat-bison pour aider un utilisateur à apprendre à travailler avec un ensemble de données spécifique.

     :

  • Cet exemple de requête et de réponse permet d'ajuster codechat-bison pour aider un utilisateur à apprendre à créer un produit à l'aide de Python au cours d'une session de chat.

     :

Préparer l'ensemble de données pour le réglage d'un modèle de code

L'ensemble de données permettant d'affiner les réglages d'un modèle de code inclut des exemples correspondant à la tâche que le modèle doit effectuer. Votre ensemble de données doit comporter au moins 10 exemples, mais nous vous recommandons d'utiliser au moins 500 exemples pour obtenir de bons résultats. Plus vous fournirez d'exemples, plus les résultats seront pertinents.

Format d'ensemble de données pour le réglage d'un modèle de code

L'ensemble de données pour le réglage d'un modèle de génération de code et d'un modèle de chat de code doit être au format JSON Lines (JSONL). Vous trouverez ci-dessous des détails sur le format de l'ensemble de données et des exemples pour chaque modèle :

Génération de code

Votre ensemble de données pour le réglage d'un modèle de génération de code doit être au format JSON Lines (JSONL), où chaque ligne contient un seul exemple de réglage. Chaque exemple est composé d'un champ input_text contenant la requête vers le modèle, et d'un champ output_text contenant un exemple de réponse que le modèle réglé doit produire.

Un ensemble de données peut contenir 10 000 exemples au maximum pour un modèle de génération de texte.

Exemples d'ensemble de données pour le réglage d'un modèle de génération de code

Cet article présente deux exemples d'ensembles de données pour le réglage d'un modèle de génération de code. Voici le premier exemple d'un ensemble de données de réglage de génération de code :

{"input_text": "How to create a product in Python with the Cloud Vision API?", "output_text": "Use this
Python code sample to learn how to create a
product with the Cloud Vision API:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom google.cloud import
vision\r\nfrom google.protobuf import field_mask_pb2 as field_mask\r\n\r\ndef
create_product(\r\n project_id, location, product_id, product_display_name,\r\n
product_category):\r\n \"\"\"Create one product.\r\n Args:\r\n project_id: Id of
the project.\r\n location: A compute region name.\r\n product_id: Id of the
product.\r\n product_display_name: Display name of the product.\r\n
product_category: Category of the product.\r\n \"\"\"\r\n client =
vision.ProductSearchClient()\r\n\r\n # A resource that represents Google Cloud
Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}

Voici le deuxième exemple d'un ensemble de données de réglage de la génération de code :

{"input_text": "python to retrieve the labels of a dataset for a given dataset
ID in BigQuery", "output_text": "Here is a Python code sample to retrieve the labels of a
dataset for a given dataset ID in BigQuery.\n\n```python\n\n from google.cloud import
bigquery\n\n # Construct a BigQuery client object.\n client =
bigquery.Client()\n\n # TODO(developer): Set dataset_id to the ID of the dataset
to fetch.\n # dataset_id = \"your-project.your_dataset\"\n\n dataset =
client.get_dataset(dataset_id) # Make an API request.\n\n # View dataset
labels.\n print(\"Dataset ID: {}\".format(dataset_id))\n print(\"Labels:\")\n if
dataset.labels:\n for label, value in dataset.labels.items():\n print(\"\\t{}:
{}\".format(label, value))\n else:\n print(\"\\tDataset has no labels
defined.\")\n```"}

Chat de code

Votre ensemble de données pour le réglage d'un modèle de chat de code doit être au format JSON Lines (JSONL), où chaque ligne contient un seul exemple de réglage. Chaque exemple est composé d'un champ messages contenant des exemples de requêtes de chat et de réponses que le modèle réglé doit produire.

Les exemples de l'ensemble de données d'un modèle de chat de code peuvent contenir au maximum 10 000 champs author. Cette valeur maximale s'applique à la somme de tous les champs author de tous les messages de tous les exemples.

Exemples d'ensemble de données pour le réglage d'un modèle de chat de code

Cet article présente deux exemples d'ensembles de données pour le réglage d'un modèle de chat de code. Voici le premier exemple d'un ensemble de données pour le réglage de génération de chat de code :

{"messages": [{"author":"user", "content": "How to create a product in
Python with Cloud Vision?"}, {"author": "assistant", "content": "Use this Python code sample to
learn how to create a product with Cloud Vision:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom
google.cloud import vision\r\nfrom google.protobuf import field_mask_pb2 as
field_mask\r\n\r\ndef create_product(\r\n project_id, location, product_id,
product_display_name,\r\n product_category):\r\n \"\"\"Create one product.\r\n
Args:\r\n project_id: Id of the project.\r\n location: A compute region
name.\r\n product_id: Id of the product.\r\n product_display_name: Display name
of the product.\r\n product_category: Category of the product.\r\n \"\"\"\r\n
client = vision.ProductSearchClient()\r\n\r\n # A resource that represents
Google Cloud Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}]}

Voici le deuxième exemple d'un ensemble de données pour le réglage de la génération de chat de code :

{"messages": [{"author":"user", "content": "Python to retrieve the labels of a
dataset for a given dataset ID in BigQuery"}, {"author": "assistant", "content": "Here is a
Python code sample to retrieve the labels of a dataset for a given dataset
ID in BigQuery.\n\n```python\n\n from google.cloud import bigquery\n\n # Construct a
BigQuery client object.\n client = bigquery.Client()\n\n # TODO(developer): Set
dataset_id to the ID of the dataset to fetch.\n # dataset_id =
\"your-project.your_dataset\"\n\n dataset = client.get_dataset(dataset_id) #
Make an API request.\n\n # View dataset labels.\n print(\"Dataset ID:
{}\".format(dataset_id))\n print(\"Labels:\")\n if dataset.labels:\n for label,
value in dataset.labels.items():\n print(\"\\t{}: {}\".format(label, value))\n
else:\n print(\"\\tDataset has no labels defined.\")\n```"}]}

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.

Inclure des instructions dans les exemples

Pour les tâches telles que la génération de code, vous pouvez créer un ensemble de données d'exemples ne contenant pas d'instructions. Toutefois, exclure les instructions des exemples dans l'ensemble de données entraîne de mauvaises performances après le réglage, en particulier pour les ensembles de données plus petits.

Instructions relatives à l'exclusion :

{
  "input_text": "Calculate the sum of a list of integers.",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

Instructions incluses :

{
  "input_text": "Write the code in Python: calculate the sum of a list of integers",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

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.

Paramètres de région des réglages supervisés

Vous pouvez spécifier trois paramètres de région Google Cloud lorsque vous configurez un job de réglage supervisé. Une région est l'emplacement du pipeline qui règle le modèle. L'autre région sert à exécuter le job de réglage du modèle et à importer le modèle réglé.

Région du job de pipeline

La région du job de pipeline est celle dans laquelle le job de pipeline est exécuté. Si la région d'importation du modèle n'est pas spécifiée, le modèle est importé et déployé dans la région du job de pipeline. Les données intermédiaires, telles que l'ensemble de données transformé, sont stockées dans la région du job de pipeline. Pour connaître les régions que vous pouvez utiliser pour les jobs de pipeline, consultez la page Régions de job et d'importation de modèles compatibles. Vous devez spécifier la région du job de pipeline à l'aide de l'une des méthodes suivantes :

  • Si vous utilisez le SDK Vertex AI, vous pouvez spécifier la région dans laquelle le job de pipeline est exécuté à l'aide du paramètre tuning_job_location de la méthode tune_model de l'objet représentant le modèle que vous réglez, par exemple, la méthode TextGenerationModel.tune_model.

  • Si vous créez un job de réglage supervisé en envoyant une requête POST à l'aide de pipelineJobs.create, vous utilisez l'URL pour spécifier la région dans laquelle le job de pipeline est exécuté. Dans l'URL suivante, remplacez les deux instances de PIPELINE_JOB_REGION par la région où le pipeline est exécuté :

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Si vous utilisez la console Google Cloud pour créer un job de réglage de modèle supervisé, spécifiez la région du job de pipeline dans le contrôle Région lors de la création du job de réglage. Dans la console Google Cloud, le contrôle Région spécifie à la fois la région du job de pipeline et la région d'importation du modèle. Lorsque vous utilisez la console Google Cloud pour créer un job de réglage de modèle supervisé, les deux régions sont toujours les mêmes.

Région d'importation du modèle

Vous utilisez le paramètre facultatif tuned_model_location pour spécifier l'emplacement d'importation du modèle réglé. Si la région d'importation du modèle n'est pas spécifiée, le modèle réglé est importé dans la région du job de pipeline.Vous pouvez utiliser l'une des régions de jobs de pipeline et d'importation de modèles compatibles. Vous pouvez spécifier la région d'importation du modèle à l'aide de l'une des méthodes suivantes :

  • Si vous utilisez le SDK Vertex AI, le paramètre tuned_model_location est spécifié dans la méthode tune_model de l'objet qui représente le modèle que vous réglez, par exemple, la méthode TextGenerationModel.tune_model.

  • Si vous créez un job de réglage de modèle supervisé en envoyant une requête POST à l'aide de la méthodepipelineJobs, vous pouvez utiliser la méthode location pour spécifier la région d'importation du modèle.

  • Si vous utilisez la console Google Cloud pour créer un job de réglage de modèle supervisé, spécifiez la région d'importation du modèle dans le contrôle Région lors de la création du job de réglage. Dans la console Google Cloud, le contrôle Région spécifie à la fois la région d'importation du modèle et la région du job de pipeline. Lorsque vous utilisez la console Google Cloud pour créer un job de réglage de modèle supervisé, les deux régions sont toujours les mêmes.

Région de réglage des modèles

La région de réglage du modèle est l'emplacement où s'effectue le calcul de réglage du modèle. Cette région est déterminée par le type d'accélérateur que vous choisissez. Si vous spécifiez TPU pour le type d'accélérateur, le calcul de réglage du modèle s'effectue dans europe-west4. Si vous spécifiez GPU pour le type d'accélérateur, le réglage du modèle s'effectue dans us-central1.

Régions compatibles avec les jobs de pipeline et l'importation de modèles

Vous pouvez utiliser l'une des régions suivantes pour spécifier la région d'importation du modèle et la région du job de pipeline :

  • us-central1
  • europe-west4
  • asia-southeast1
  • us-west1
  • europe-west3
  • europe-west2
  • asia-northeast1
  • us-east4
  • us-west4
  • northamerica-northeast1
  • europe-west9
  • europe-west1
  • asia-northeast3

Créer un job de réglage d'un modèle de code

Vous pouvez créer un job de réglage 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.

Créer un job de réglage d'un modèle de génération de code

Vous trouverez ci-dessous la procédure à suivre pour créer un job de réglage de modèle de génération de code à l'aide de la console Google Cloud ou des commandes de l'API REST.

REST

Pour créer un job de réglage d'un modèle de génération de code, envoyez une requête POST à l'aide de la méthode pipelineJobs.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • TUNINGPIPELINE_DISPLAYNAME : nom à afficher pour le job pipelineJob.
  • OUTPUT_DIR : URI du bucket dans lequel générer les artefacts de pipeline.
  • MODEL_DISPLAYNAME : nom à afficher pour le modèle importé (créé) par le TrainingPipeline.
  • DATASET_URI : URI du fichier de votre ensemble de données.
  • EVAL_DATASET_URI : (facultatif) URI du fichier JSONL contenant l'ensemble de données d'évaluation pour la prédiction par lot et l'évaluation. L'évaluation n'est pas compatible avec codechat-bison. Pour plus d'informations, consultez la page Format d'ensemble de données pour le réglage d'un modèle de code. L'ensemble de données d'évaluation nécessite entre 10 et 250 exemples.
  • EVAL_INTERVAL : (facultatif, valeur par défaut 20) nombre d'étapes de réglage entre chaque évaluation. Un intervalle d'évaluation n'est pas disponible pour les modèles de chat. Étant donné que l'évaluation s'exécute sur l'ensemble de données d'évaluation complet, un intervalle d'évaluation plus petit entraîne un temps de réglage plus long. Par exemple, si steps est égal à 200 et la valeur de EVAL_INTERVAL égale à 100, vous n'obtenez que deux points de données pour les métriques d'évaluation. Ce paramètre nécessite que evaluation_data_uri soit défini.
  • PIPELINE_JOB_REGION : région dans laquelle le job de réglage de pipeline est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé. Si vous souhaitez importer votre modèle dans une autre région, utilisez le paramètre location pour spécifier la région d'importation du modèle réglé. Pour en savoir plus, consultez la section Région du job de pipeline.
  • MODEL_UPLOAD_REGION : (facultatif) région dans laquelle le modèle réglé est importé. Si vous ne spécifiez pas de région d'importation du modèle, le modèle réglé est importé dans la même région que la tâche de pipeline. Pour en savoir plus, consultez la section Région d'importation du modèle.
  • ACCELERATOR_TYPE : (facultatif, valeur par défaut GPU) type d'accélérateur à utiliser pour le réglage du modèle. Les options valides sont les suivantes :
    • GPU : utilise 8 GPU A100 de 80 Go pour le réglage. Assurez-vous de disposer d'un quota suffisant. Si vous choisissez GPU, VPC-SC est compatible. CMEK est compatible si l'emplacement de réglage et d'importation du modèle est us-centra1. Pour en savoir plus, consultez la section Paramètres de région des réglages supervisés. Si vous choisissez GPU, les calculs de réglage de votre modèle s'effectuent dans la région us-central1.
    • TPU : utilise 64 cœurs du pod TPU v3 pour le réglage. Assurez-vous de disposer d'un quota suffisant. Les clés CMEK ne sont pas acceptées, mais VPC-SC l'est. Si vous choisissez TPU, les calculs de réglage de votre modèle s'effectuent dans la région europe-west4.
  • ENABLE_EARLY_STOPPING : (facultatif, valeur par défaut true) boolean qui, si la valeur est définie sur true, arrête le réglage avant d'effectuer toutes les étapes de réglage en cas de performances du modèle comme mesuré par la précision des jetons prévus, ne s'améliore pas suffisamment entre les exécutions d'évaluations. Si elle est définie sur false, le réglage se poursuit jusqu'à ce que toutes les étapes de réglage soient terminées. Ce paramètre nécessite que evaluation_data_uri soit défini. L'arrêt prématuré n'est pas disponible pour les modèles de chat.
  • ENABLE_CHECKPOINT_SELECTION : valeur de chaîne qui peut être true, false ou default. Lorsque ce paramètre est défini sur "true", Vertex AI sélectionne et renvoie le point de contrôle avec les meilleures performances d'évaluation de modèle par rapport à tous les points de contrôle créés lors de la tâche de réglage. Si défini sur "false", le point de contrôle final créé lors de la tâche de réglage est renvoyé. Chaque point de contrôle fait référence à un instantané du modèle lors d'une tâche de réglage.
  • TENSORBOARD_RESOURCE_ID : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois le job de réglage terminé. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
  • ENCRYPTION_KEY_NAME : (facultatif) nom complet d'une clé de chiffrement gérée par le client (CMEK) que vous souhaitez utiliser pour le chiffrement des données. Une clé CMEK n'est disponible que dans us-central1. Si vous utilisez us-central1 et ne spécifiez pas de CMEK, une clé de chiffrement gérée par Google est utilisée. Une clé de chiffrement gérée par Google est utilisée par défaut dans toutes les autres régions disponibles. Pour en savoir plus, consultez la page Présentation du chiffrement CMEK.
  • STEPS : Nombre d'étapes à exécuter pour le réglage du modèle. La valeur par défaut est 300. La taille de lot varie en fonction de l'emplacement de réglage et de la taille du modèle. Pour les modèles à 8 000, tels que text-bison@002, chat-bison@002, code-bison@002 et codechat-bison@002 :
    • us-central1 a une taille de lot de 8.
    • europe-west4 a une taille de lot de 24.
    Pour les modèles à 32 000, tels que text-bison-32k, chat-bison-32k, code-bison-32k et codechat-bison-32k :
    • us-central1 a une taille de lot de 8.
    • europe-west4 a une taille de lot de 8.

    Par exemple, si vous entraînez le modèle text-bison@002 dans la région europe-west4, vous allez disposer de 240 exemples dans un ensemble de données d'entraînement, et si vous définissez le paramètre steps sur 20, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 20 x 24 = 480 étapes d'entraînement. Dans ce cas, le processus d'entraînement comporte deux époques, car il parcourt les exemples deux fois. Dans la région us-central1, si un ensemble de données d'entraînement contient 240 exemples et si vous définissez le paramètre steps sur 15, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 15 x8 = 120 étapes d'entraînement. Dans ce cas, le processus d'entraînement ne va comporter que 0,5 époque, car le nombre d'étapes d'entraînement est inférieur de moitié au nombre d'exemples.

  • LEARNING_RATE_MULTIPLIER : Taille de pas à chaque itération. La valeur par défaut est de 1.

Méthode HTTP et URL :

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

Corps JSON de la requête :

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "evaluation_data_uri": "EVAL_DATASET_URI",
      "evaluation_interval": "EVAL_INTERVAL",
      "enable_early_stopping": "ENABLE_EARLY_STOPPING",
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "code-bison@002",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  }
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante. Notez que pipelineSpec a été tronqué pour économiser de l'espace.

Console

Pour régler un modèle de génération de code ou de chat de code avec le réglage supervisé à l'aide de la console Google Cloud, procédez comme suit :

  1. Dans la section "Vertex AI" de la console Google Cloud, accédez à la page Vertex AI Studio.

    Accéder à Vertex AI Studio

  2. Cliquez sur l'onglet Régler et distiller.
  3. Cliquez sur Créer un modèle réglé.
  4. Cliquez sur Réglage supervisé.
  5. Configurez les détails du modèle :
    • Nom du modèle réglé : saisissez un nom pour votre modèle réglé.
    • Modèle de base : sélectionnez le modèle que vous souhaitez régler.
    • 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é.
    • Répertoire de travail : saisissez l'emplacement Cloud Storage où sont stockés les artefacts lorsque votre modèle est réglé.
  6. Développez la section Options avancées pour configurer les paramètres avancés.
    • Étapes d'entraînement : saisissez le nombre d'étapes à exécuter pour le réglage du modèle. La valeur par défaut est 300. La taille de lot varie en fonction de l'emplacement de réglage et de la taille du modèle. Pour les modèles à 8 000, tels que text-bison@002, chat-bison@002, code-bison@002 et codechat-bison@002 :
      • us-central1 a une taille de lot de 8.
      • europe-west4 a une taille de lot de 24.
      Pour les modèles à 32 000, tels que text-bison-32k, chat-bison-32k, code-bison-32k et codechat-bison-32k :
      • us-central1 a une taille de lot de 8.
      • europe-west4 a une taille de lot de 8.

      Par exemple, si vous entraînez le modèle text-bison@002 dans la région europe-west4, vous allez disposer de 240 exemples dans un ensemble de données d'entraînement, et si vous définissez le paramètre steps sur 20, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 20 x 24 = 480 étapes d'entraînement. Dans ce cas, le processus d'entraînement comporte deux époques, car il parcourt les exemples deux fois. Dans la région us-central1, si un ensemble de données d'entraînement contient 240 exemples et si vous définissez le paramètre steps sur 15, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 15 x8 = 120 étapes d'entraînement. Dans ce cas, le processus d'entraînement ne va comporter que 0,5 époque, car le nombre d'étapes d'entraînement est inférieur de moitié au nombre d'exemples.

    • Multiplicateur du taux d'apprentissage : saisissez la taille de pas à chaque itération. La valeur par défaut est de 1.
    • Type d'accélérateur : (facultatif) saisissez le type d'accélérateur à utiliser pour le réglage du modèle. Les options valides sont les suivantes :
      • GPU : utilise 8 GPU A100 de 80 Go pour le réglage. Assurez-vous de disposer d'un quota suffisant. Si vous choisissez GPU, VPC-SC est compatible. CMEK est compatible si l'emplacement de réglage et d'importation du modèle est us-centra1. Pour en savoir plus, consultez la section Paramètres de région des réglages supervisés. Si vous choisissez GPU, les calculs de réglage du modèle s'effectuent dans la région us-central1.
      • TPU : utilise 64 cœurs du pod TPU v3 pour le réglage. Assurez-vous de disposer d'un quota suffisant. Les clés CMEK ne sont pas acceptées, mais VPC-SC l'est. Si vous choisissez TPU, les calculs de réglage de votre modèle s'effectuent dans la région europe-west4.
    • Ajouter une instance TensorBoard : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois le job de réglage terminé. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
    • Chiffrement : (facultatif) choisissez d'utiliser une clé de chiffrement gérée par Google ou une clé de chiffrement gérée par le client (CMEK). Les clés CMEK ne sont disponibles que pour le chiffrement dans la région us-central1. Dans toutes les autres régions disponibles, une clé de chiffrement gérée par Google est utilisée. Pour en savoir plus, consultez la page Présentation du chiffrement CMEK.
    • Compte de service (facultatif) Choisissez un compte de service géré par l'utilisateur. Un compte de service détermine les ressources Google Cloud auxquelles votre code de service peut accéder. Si vous ne choisissez pas de compte de service, un agent de service doté des autorisations appropriées pour la plupart des modèles est utilisé.
  7. Cliquez sur Continuer.
  8. Si vous souhaitez importer votre fichier d'ensemble de données, sélectionnez  Importer le fichier JSONL dans Cloud Storage. Si le fichier de votre ensemble de données se trouve déjà dans un bucket Cloud Storage, sélectionnez  Fichier JSONL existant dans Cloud Storage.

    Importer un fichier JSONL

    • Dans le champ Sélectionner un fichier JSONL, cliquez sur Parcourir et sélectionnez le fichier de votre 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.

    Utiliser un fichier JSONL existant

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

  9. (Facultatif) Pour évaluer votre modèle réglé, sélectionnez Activer l'évaluation du modèle et configurez votre évaluation du modèle :
    • Ensemble de données d'évaluation : (facultatif) URI du fichier JSONL contenant l'ensemble de données d'évaluation pour la prédiction par lot et l'évaluation. L'évaluation n'est pas compatible avec codechat-bison. Pour plus d'informations, consultez la page Format d'ensemble de données pour le réglage d'un modèle de code. L'ensemble de données d'évaluation nécessite entre 10 et 250 exemples.
    • Intervalle d'évaluation : (facultatif, valeur par défaut 20) nombre d'étapes de réglage entre chaque évaluation. Un intervalle d'évaluation n'est pas disponible pour les modèles de chat. Étant donné que l'évaluation s'exécute sur l'ensemble de données d'évaluation complet, un intervalle d'évaluation plus petit entraîne un temps de réglage plus long. Par exemple, si steps est égal à 200 et la valeur de EVAL_INTERVAL égale à 100, vous n'obtenez que deux points de données pour les métriques d'évaluation. Ce paramètre nécessite que evaluation_data_uri soit défini.
    • Activer l'arrêt prématuré : (facultatif, valeur par défaut true) Une valeur boolean qui, si elle est définie sur true, arrête le réglage avant d'effectuer toutes les étapes de réglage en cas de performances du modèle comme mesuré par la précision des jetons prévus, ne s'améliore pas suffisamment entre les exécutions d'évaluations. Si elle est définie sur false, le réglage se poursuit jusqu'à ce que toutes les étapes de réglage soient terminées. Ce paramètre nécessite que evaluation_data_uri soit défini. L'arrêt prématuré n'est pas disponible pour les modèles de chat.
    • Activer la sélection de points de contrôle : Lorsque cette option est activée, Vertex AI sélectionne et renvoie le point de contrôle avec les meilleures performances d'évaluation de modèle de tous les points de contrôle créés lors de la tâche de réglage. Lorsqu'elle est désactivée, le point de contrôle final créé lors de la tâche de réglage est renvoyé. Chaque point de contrôle fait référence à un instantané du modèle lors d'une tâche de réglage.
    • ID TensorBoard : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois le job de réglage terminé. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
  10. Cliquez sur Commencer le réglage.

Python

Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

from __future__ import annotations


def tune_code_generation_model(project_id: str) -> None:
    from google.auth import default

    import vertexai
    from vertexai.language_models import CodeGenerationModel

    # Initialize Vertex AI
    # TODO(developer): Update project_id
    credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
    vertexai.init(project=project_id, location="us-central1", credentials=credentials)

    model = CodeGenerationModel.from_pretrained("code-bison@002")

    tuning_job = model.tune_model(
        training_data="gs://cloud-samples-data/ai-platform/generative_ai/headline_classification.jsonl",
        tuning_job_location="europe-west4",
        tuned_model_location="us-central1",
    )

    print(tuning_job._status)

    return model


Exemple de commande curl pour régler un modèle de génération de code

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
EVAL_DATASET_URI=gs://cloud-samples-data/vertex-ai/model-evaluation/eval_sample.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "The display name for your model in the UI",
      "dataset_uri": "'${DATASET_URI}'",
      "evaluation_data_uri:": "'${EVAL_DATASET_URI}'",
      "location": "'${LOCATION}'",
      "accelerator_type": "'${ACCELERATOR_TYPE}'",
      "large_model_reference": "code-bison@002",
      "learning_rate_multiplier": 1,
      "train_steps": 300
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}'

Créer un job de réglage d'un modèle de chat de code

L'exemple suivant montre comment créer un job de réglage de modèle de chat de code à l'aide de la console Google Cloud ou des commandes de l'API REST.

REST

Pour créer un job de réglage d'un modèle de chat de code, envoyez une requête POST à l'aide de la méthode pipelineJobs.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : l'ID de votre projet.
  • TUNINGPIPELINE_DISPLAYNAME : nom à afficher pour la tâche pipelineJob.
  • OUTPUT_DIR : URI du bucket vers lequel générer les artefacts de pipeline.
  • PIPELINE_JOB_REGION : région dans laquelle le job de réglage de pipeline est exécuté. Il s'agit également de la région par défaut dans laquelle le modèle réglé est importé. Si vous souhaitez importer votre modèle dans une autre région, utilisez le paramètre location pour spécifier la région d'importation du modèle réglé. Pour en savoir plus, consultez la section Région du job de pipeline.
  • MODEL_UPLOAD_REGION : (facultatif) région dans laquelle le modèle réglé est importé. Si vous ne spécifiez pas de région d'importation du modèle, le modèle réglé est importé dans la même région que la tâche de pipeline. Pour en savoir plus, consultez la section Région d'importation du modèle.
  • ACCELERATOR_TYPE : (facultatif, valeur par défaut GPU) type d'accélérateur à utiliser pour le réglage du modèle. Les options valides sont les suivantes :
    • GPU : utilise 8 GPU A100 de 80 Go pour le réglage. Assurez-vous de disposer d'un quota suffisant. Si vous choisissez GPU, VPC-SC est compatible. CMEK est compatible si l'emplacement de réglage et d'importation du modèle est us-centra1. Pour en savoir plus, consultez la section Paramètres de région des réglages supervisés. Si vous choisissez GPU, les calculs de réglage de votre modèle s'effectuent dans la région us-central1.
    • TPU : utilise 64 cœurs du pod TPU v3 pour le réglage. Assurez-vous de disposer d'un quota suffisant. Les clés CMEK ne sont pas acceptées, mais VPC-SC l'est. Si vous choisissez TPU, les calculs de réglage de votre modèle s'effectuent dans la région europe-west4.
  • MODEL_DISPLAYNAME : nom à afficher pour le modèle importé (créé) par le pipelineJob.
  • DATASET_URI : URI du fichier de votre ensemble de données.
  • TENSORBOARD_RESOURCE_ID : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois le job de réglage terminé. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
  • ENCRYPTION_KEY_NAME : (facultatif) nom complet d'une clé de chiffrement gérée par le client (CMEK) que vous souhaitez utiliser pour le chiffrement des données. Une clé CMEK n'est disponible que dans us-central1. Si vous utilisez us-central1 et ne spécifiez pas de CMEK, une clé de chiffrement gérée par Google est utilisée. Une clé de chiffrement gérée par Google est utilisée par défaut dans toutes les autres régions disponibles. Pour en savoir plus, consultez la page Présentation du chiffrement CMEK.
  • DEFAULT_CONTEXT : contexte qui s'applique à tous les exemples de réglages dans l'ensemble de données de réglage. La définition du champ context dans un exemple remplace le contexte par défaut.
  • STEPS : Nombre d'étapes à exécuter pour le réglage du modèle. La valeur par défaut est 300. La taille de lot varie en fonction de l'emplacement de réglage et de la taille du modèle. Pour les modèles à 8 000, tels que text-bison@002, chat-bison@002, code-bison@002 et codechat-bison@002 :
    • us-central1 a une taille de lot de 8.
    • europe-west4 a une taille de lot de 24.
    Pour les modèles à 32 000, tels que text-bison-32k, chat-bison-32k, code-bison-32k et codechat-bison-32k :
    • us-central1 a une taille de lot de 8.
    • europe-west4 a une taille de lot de 8.

    Par exemple, si vous entraînez le modèle text-bison@002 dans la région europe-west4, vous allez disposer de 240 exemples dans un ensemble de données d'entraînement, et si vous définissez le paramètre steps sur 20, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 20 x 24 = 480 étapes d'entraînement. Dans ce cas, le processus d'entraînement comporte deux époques, car il parcourt les exemples deux fois. Dans la région us-central1, si un ensemble de données d'entraînement contient 240 exemples et si vous définissez le paramètre steps sur 15, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 15 x8 = 120 étapes d'entraînement. Dans ce cas, le processus d'entraînement ne va comporter que 0,5 époque, car le nombre d'étapes d'entraînement est inférieur de moitié au nombre d'exemples.

  • LEARNING_RATE_MULTIPLIER : Taille de pas à chaque itération. La valeur par défaut est de 1.

Méthode HTTP et URL :

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

Corps JSON de la requête :

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "codechat-bison@002",
      "default_context": "DEFAULT_CONTEXT",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.
Notez que pipelineSpec a été tronqué pour économiser de l'espace.

Console

Pour régler un modèle de génération de code ou de chat de code avec le réglage supervisé à l'aide de la console Google Cloud, procédez comme suit :

  1. Dans la section "Vertex AI" de la console Google Cloud, accédez à la page Vertex AI Studio.

    Accéder à Vertex AI Studio

  2. Cliquez sur l'onglet Régler et distiller.
  3. Cliquez sur Créer un modèle réglé.
  4. Cliquez sur Réglage supervisé.
  5. Configurez les détails du modèle :
    • Nom du modèle réglé : saisissez un nom pour votre modèle réglé.
    • Modèle de base : sélectionnez le modèle que vous souhaitez régler.
    • 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é.
    • Répertoire de travail : saisissez l'emplacement Cloud Storage où sont stockés les artefacts lorsque votre modèle est réglé.
  6. Développez la section Options avancées pour configurer les paramètres avancés.
    • Étapes d'entraînement : saisissez le nombre d'étapes à exécuter pour le réglage du modèle. La valeur par défaut est 300. La taille de lot varie en fonction de l'emplacement de réglage et de la taille du modèle. Pour les modèles à 8 000, tels que text-bison@002, chat-bison@002, code-bison@002 et codechat-bison@002 :
      • us-central1 a une taille de lot de 8.
      • europe-west4 a une taille de lot de 24.
      Pour les modèles à 32 000, tels que text-bison-32k, chat-bison-32k, code-bison-32k et codechat-bison-32k :
      • us-central1 a une taille de lot de 8.
      • europe-west4 a une taille de lot de 8.

      Par exemple, si vous entraînez le modèle text-bison@002 dans la région europe-west4, vous allez disposer de 240 exemples dans un ensemble de données d'entraînement, et si vous définissez le paramètre steps sur 20, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 20 x 24 = 480 étapes d'entraînement. Dans ce cas, le processus d'entraînement comporte deux époques, car il parcourt les exemples deux fois. Dans la région us-central1, si un ensemble de données d'entraînement contient 240 exemples et si vous définissez le paramètre steps sur 15, alors le nombre d'exemples d'entraînement va correspondre au produit du nombre d'étapes par la taille de lot, soit 15 x8 = 120 étapes d'entraînement. Dans ce cas, le processus d'entraînement ne va comporter que 0,5 époque, car le nombre d'étapes d'entraînement est inférieur de moitié au nombre d'exemples.

    • Multiplicateur du taux d'apprentissage : saisissez la taille de pas à chaque itération. La valeur par défaut est de 1.
    • Type d'accélérateur : (facultatif) saisissez le type d'accélérateur à utiliser pour le réglage du modèle. Les options valides sont les suivantes :
      • GPU : utilise 8 GPU A100 de 80 Go pour le réglage. Assurez-vous de disposer d'un quota suffisant. Si vous choisissez GPU, VPC-SC est compatible. CMEK est compatible si l'emplacement de réglage et d'importation du modèle est us-centra1. Pour en savoir plus, consultez la section Paramètres de région des réglages supervisés. Si vous choisissez GPU, les calculs de réglage du modèle s'effectuent dans la région us-central1.
      • TPU : utilise 64 cœurs du pod TPU v3 pour le réglage. Assurez-vous de disposer d'un quota suffisant. Les clés CMEK ne sont pas acceptées, mais VPC-SC l'est. Si vous choisissez TPU, les calculs de réglage de votre modèle s'effectuent dans la région europe-west4.
    • Ajouter une instance TensorBoard : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois le job de réglage terminé. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
    • Chiffrement : (facultatif) choisissez d'utiliser une clé de chiffrement gérée par Google ou une clé de chiffrement gérée par le client (CMEK). Les clés CMEK ne sont disponibles que pour le chiffrement dans la région us-central1. Dans toutes les autres régions disponibles, une clé de chiffrement gérée par Google est utilisée. Pour en savoir plus, consultez la page Présentation du chiffrement CMEK.
    • Compte de service (facultatif) Choisissez un compte de service géré par l'utilisateur. Un compte de service détermine les ressources Google Cloud auxquelles votre code de service peut accéder. Si vous ne choisissez pas de compte de service, un agent de service doté des autorisations appropriées pour la plupart des modèles est utilisé.
  7. Cliquez sur Continuer.
  8. Si vous souhaitez importer votre fichier d'ensemble de données, sélectionnez  Importer le fichier JSONL dans Cloud Storage. Si le fichier de votre ensemble de données se trouve déjà dans un bucket Cloud Storage, sélectionnez  Fichier JSONL existant dans Cloud Storage.

    Importer un fichier JSONL

    • Dans le champ Sélectionner un fichier JSONL, cliquez sur Parcourir et sélectionnez le fichier de votre 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.

    Utiliser un fichier JSONL existant

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

  9. (Facultatif) Pour évaluer votre modèle réglé, sélectionnez Activer l'évaluation du modèle et configurez votre évaluation du modèle :
    • Ensemble de données d'évaluation : (facultatif) URI du fichier JSONL contenant l'ensemble de données d'évaluation pour la prédiction par lot et l'évaluation. L'évaluation n'est pas compatible avec codechat-bison. Pour plus d'informations, consultez la page Format d'ensemble de données pour le réglage d'un modèle de code. L'ensemble de données d'évaluation nécessite entre 10 et 250 exemples.
    • Intervalle d'évaluation : (facultatif, valeur par défaut 20) nombre d'étapes de réglage entre chaque évaluation. Un intervalle d'évaluation n'est pas disponible pour les modèles de chat. Étant donné que l'évaluation s'exécute sur l'ensemble de données d'évaluation complet, un intervalle d'évaluation plus petit entraîne un temps de réglage plus long. Par exemple, si steps est égal à 200 et la valeur de EVAL_INTERVAL égale à 100, vous n'obtenez que deux points de données pour les métriques d'évaluation. Ce paramètre nécessite que evaluation_data_uri soit défini.
    • Activer l'arrêt prématuré : (facultatif, valeur par défaut true) Une valeur boolean qui, si elle est définie sur true, arrête le réglage avant d'effectuer toutes les étapes de réglage en cas de performances du modèle comme mesuré par la précision des jetons prévus, ne s'améliore pas suffisamment entre les exécutions d'évaluations. Si elle est définie sur false, le réglage se poursuit jusqu'à ce que toutes les étapes de réglage soient terminées. Ce paramètre nécessite que evaluation_data_uri soit défini. L'arrêt prématuré n'est pas disponible pour les modèles de chat.
    • Activer la sélection de points de contrôle : Lorsque cette option est activée, Vertex AI sélectionne et renvoie le point de contrôle avec les meilleures performances d'évaluation de modèle de tous les points de contrôle créés lors de la tâche de réglage. Lorsqu'elle est désactivée, le point de contrôle final créé lors de la tâche de réglage est renvoyé. Chaque point de contrôle fait référence à un instantané du modèle lors d'une tâche de réglage.
    • ID TensorBoard : (facultatif) ID d'une instance Vertex AI TensorBoard. L'instance Vertex AI TensorBoard est utilisée pour créer un test une fois le job de réglage terminé. L'instance Vertex AI TensorBoard doit se trouver dans la même région que le pipeline de réglage.
  10. Cliquez sur Commencer le réglage.

Exemple de commande curl pour régler un modèle de chat de code

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-chat-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "your-model-display-name",
      "dataset_uri": "'${DATASET_URI}'",
      "location": "'${LOCATION}'",
      "large_model_reference": "codechat-bison@002",
      "train_steps": 300,
      "learning_rate_multiplier": 1,
      "encryption_spec_key_name": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}'

Le tableau suivant présente les configurations recommandées pour le réglage d'un modèle de code par tâche :

Tâche Nombre d'exemples dans l'ensemble de données Étapes d'entraînement
Génération de code 500+ 200-1000
Chat de code 500+ 200-1000

Pour les étapes d'entraînement, vous pouvez essayer plusieurs valeurs pour obtenir les meilleures performances sur un ensemble de données particulier (par exemple, 100, 200, 500).

Afficher la liste des modèles réglés

Vous pouvez utiliser la console Google Cloud ou le SDK Vertex AI pour Python pour afficher la liste de vos modèles de code réglés dans votre projet actuel.

Afficher la liste des modèles de code réglés (console)

Pour afficher vos modèles de chat de code et de génération de code réglés dans la console Google Cloud, accédez à la page Vertex AI Model Registry.

Accéder à Vertex AI Model Registry

Afficher la liste des modèles de génération de code réglés (SDK)

L'exemple de code suivant utilise le SDK Vertex AI pour Python pour répertorier les modèles de génération de code réglés dans votre projet actuel :

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.from_pretrained("code-bison@002").list_tuned_model_names()

Afficher la liste des modèles de chat de code (SDK) réglés

L'exemple de code suivant utilise le SDK Vertex AI pour Python pour répertorier les modèles de chat de code ajustés dans votre projet actuel :

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.from_pretrained("codechat-bison@002").list_tuned_model_names()

Charger un modèle réglé

Vous pouvez utiliser le SDK Vertex AI pour Python pour charger un modèle de code réglé.

Charger un modèle de génération de code réglé

L'exemple de code suivant utilise le SDK Vertex AI pour Python pour charger un modèle de génération de code réglé : Dans l'exemple de code, remplacez TUNED_MODEL_NAME par le nom de ressource qualifié de votre modèle réglé. Ce nom est au format projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID. Vous pouvez trouver l'ID de votre modèle réglé dans Vertex AI Model Registry.

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

Charger un modèle de chat de code réglé

L'exemple de code suivant utilise le SDK Vertex AI pour Python pour charger un modèle de chat de code ajusté :

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.get_tuned_model(TUNED_MODEL_NAME)

Métriques de réglage et d'évaluation

Vous pouvez configurer une tâche 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 à l'aide de Vertex AI TensorBoard.

Métriques de réglage du modèle

Vous pouvez configurer une tâche de réglage de modèle afin de collecter les métriques de réglage suivantes pour chat-bison, code-bison, codechat-bison et text-bison :
  • /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 d'évaluation du modèle

Vous pouvez configurer une tâche de réglage de modèle pour collecter les métriques d'évaluation suivantes pour code-bison et text-bison :

  • /eval_total_loss : perte de l'ensemble de données d'évaluation à une étape d'évaluation.
  • /eval_fraction_of_correct_next_step_preds : justesse du jeton à une étape d'évaluation. 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 d'évaluation.
  • /eval_num_predictions : nombre de jetons prédits à 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 qu'un ID d'instance Vertex AI TensorBoard et non un ensemble de données d'évaluation lorsque vous créez la tâche de réglage, seules les visualisations des métriques de réglage sont disponibles.

Quotas

Les tâches de réglage dans us-central1 utilisent huit GPU A100 de 80 Go.

Les tâches de réglage dans europe-west4 utilisent 64 cœurs de la ressource d'entraînement de modèle personnalisé TPU v3 pod.

Si vous ne disposez pas d'un quota suffisant ou souhaitez exécuter plusieurs jobs de réglage simultanées dans votre projet Google Cloud, vous devez demander un quota supplémentaire :

  • Pour us-central1, envoyez une requête pour Restricted image training Nvidia A100 80 GB GPUs per region dans la région us-central1 par multiples de huit.

  • Pour europe-west4, envoyez une requête pour Restricted image training TPU V3 pod cores per region dans la région europe-west4 par multiples de 64.

Étapes suivantes

  • Pour en savoir plus sur les modèles, les fonctionnalités avancées et la possibilité de transcrire des fichiers jusqu'à huit heures, consultez la page Speech-to-Text.