Ajusta los modelos de código

Los modelos de código se pueden ajustar mediante el ajuste supervisado. El ajuste supervisado usa ejemplos etiquetados que demuestran el tipo de resultado que deseas de tu generación de código o modelo de chat de código durante la inferencia. Los modelos de código no admiten el ajuste mediante el aprendizaje por refuerzo de comentarios de personas (RLHF).

Situaciones para usar el ajuste del modelo de código

El ajuste es necesario cuando quieres que un modelo aprenda algo especializado o específico que se desvíe de los patrones generales de código y lenguaje. A continuación, se muestran ejemplos de lo que puedes enseñar los modelos code-bison y codechat-bison:

  • Cómo generar código para bibliotecas personalizadas. Mediante el entrenamiento de un modelo de código con muestras etiquetadas de una biblioteca personalizada, puedes generar o chatear sobre el código específico de esa biblioteca personalizada.
  • Cómo usar la base de código. Con el entrenamiento de un modelo con muestras etiquetadas de tu base de código, puedes generar código o chatear sobre el código que usa cualidades únicas de tu base de código.
  • Cómo generar código con variantes de un lenguaje de programación. Mediante el entrenamiento de un modelo de código con muestras etiquetadas de una variante de idioma, puedes generar o chatear sobre el código que usa las convenciones y estándares específicos de esa variante de idioma.

Estas situaciones incluyen requisitos de código difíciles de capturar solo a través de instrucciones rápidas. Estos son algunos ejemplos:

Generación de código

  • Este mensaje y respuesta de muestra ayudan a ajustar el código code-bison para que funcione con un conjunto de datos específico.

  • Esta instrucción y una respuesta de muestra ayudan a entrenar a code-bison para que cree un producto con Python.

Chat de código

  • Esta instrucción y respuesta de muestra ayudan a ajustar codechat-bison para ayudar a un usuario a aprender a trabajar con un conjunto de datos específico.

  • Esta instrucción y respuesta de muestra ayudan a ajustar codechat-bison para ayudar a un usuario a aprender a crear un producto con Python durante una sesión de chat.

Prepara el conjunto de datos de ajuste de modelos

El conjunto de datos que se usa para ajustar un modelo de código incluye ejemplos que se alinean con la tarea que deseas que realice el modelo. El conjunto de datos debe incluir un mínimo de 10 ejemplos, pero recomendamos al menos 500 para obtener buenos resultados. Cuantos más ejemplos proporciones, mejores serán los resultados.

Formato del conjunto de datos para ajustar un modelo de código

El conjunto de datos de ajuste para un modelo de generación de código y un modelo de chat de código debe estar en formato líneas JSON (JSONL). A continuación, se incluyen detalles sobre el formato y los ejemplos del conjunto de datos para cada modelo:

Generación de código

El conjunto de datos de ajuste del modelo de generación de código debe estar en formato líneas JSON (JSONL) en el que cada línea contiene un solo ejemplo de ajuste. Cada ejemplo está compuesto por un campo input_text que contiene el mensaje al modelo y un campo output_text que contiene una respuesta de ejemplo que se espera que el modelo ajustado produzca.

La cantidad máxima de ejemplos que puede contener un conjunto de datos para un modelo de generación de texto es 10,000.

Ejemplos de un conjunto de datos de ajuste de modelos de generación de código

En este tema, se muestran dos ejemplos de conjuntos de datos de ajuste de modelos de generación de código. El siguiente es el primer ejemplo de un conjunto de datos de ajuste de generación de código:

{"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```"}

El siguiente es el segundo ejemplo de un conjunto de datos de ajuste de generación de código:

{"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 código

El conjunto de datos de ajuste del modelo de chat de código debe estar en formato de líneas JSON (JSONL), en el que cada línea contiene un solo ejemplo de ajuste. Cada ejemplo está compuesto por un campo messages que contiene mensajes de chat y respuestas de ejemplo que se espera que el modelo ajustado produzca.

La cantidad máxima de campos author que pueden contener los ejemplos en el conjunto de datos para un modelo de chat de código es de 10,000. Este máximo es para la suma de todos los campos author en todos los messages de todos los ejemplos.

Ejemplos de un conjunto de datos de ajuste de modelo de chat por código

En este tema, se muestran dos ejemplos de conjuntos de datos de ajuste de modelos de chat de código. El siguiente es el primer ejemplo de un conjunto de datos de ajuste de chat de código:

{"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```"}]}

El siguiente es el segundo ejemplo de un conjunto de datos de ajuste de chat de código:

{"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```"}]}

Mantén la coherencia con los datos de producción

Los ejemplos en tu conjunto de datos deben coincidir con tu tráfico de producción esperado. Si tu conjunto de datos contiene formato, palabras clave, instrucciones o información específicas, los datos de producción deben tener el mismo formato y contener las mismas instrucciones.

Por ejemplo, si los ejemplos de tu conjunto de datos incluyen una "question:" y un "context:", el tráfico de producción también debe tener el formato de modo que incluya una "question:" y un "context:" en el mismo orden en que aparecen en ejemplos de conjuntos de datos. Si excluyes el contexto, el modelo no reconocerá el patrón, incluso si la pregunta exacta estaba en un ejemplo en el conjunto de datos.

Incluye instrucciones en los ejemplos

Para tareas como la generación de código, puedes crear un conjunto de datos de ejemplos que no contengan instrucciones. Sin embargo, excluir las instrucciones de los ejemplos en el conjunto de datos genera un peor rendimiento después del ajuste que las instrucciones, sobre todo para los conjuntos de datos más pequeños.

Excluye instrucciones:

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

Incluye instrucciones:

{
  "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```"
}

Sube conjuntos de datos de ajuste a Cloud Storage

Para ejecutar un trabajo de ajuste, debes subir uno o más conjuntos de datos a un bucket de Cloud Storage. Puedes crear un depósito de Cloud Storage nuevo o usar uno existente para almacenar archivos de conjuntos de datos. La región del bucket no es importante, pero te recomendamos que uses un bucket que se encuentre en el mismo proyecto de Google Cloud en el que planeas ajustar tu modelo.

Una vez que tu bucket esté listo, sube tu archivo del conjunto de datos al bucket.

Configuración de la región de ajuste supervisado

Puedes especificar tres opciones de configuración de región de Google Cloud cuando configuras un trabajo de ajuste supervisado. Una región es donde se ejecuta la canalización que ajusta tu modelo. En la otra región, se ejecuta el trabajo de ajuste de modelos y se sube el modelo ajustado.

Región del trabajo de canalización

La región del trabajo de canalización es la región en la que se ejecuta el trabajo de canalización. Si no se especifica la región de carga del modelo opcional, el modelo se sube y se implementa en la región del trabajo de canalización. Los datos intermedios, como el conjunto de datos transformado, se almacenan en la región del trabajo de canalización. A fin de saber qué regiones puedes usar para la región del trabajo de canalización, consulta Regiones de trabajos de canalización compatibles y cargas de modelos. Debes especificar la región del trabajo de canalización mediante uno de los siguientes métodos:

  • Si usas el SDK de Vertex AI, puedes especificar la región en la que se ejecuta el trabajo de canalización contuning_job_location parámetro en eltune_model El método del objeto que representa el modelo que estás ajustando (por ejemplo, elTextGenerationModel.tune_modelmétodo).

  • Si creas un trabajo de ajuste supervisado mediante el envío de una solicitud POST con elpipelineJobs.create luego, usa la URL para especificar la región en la que se ejecuta el trabajo de canalización. En la siguiente URL, reemplaza ambas instancias de PIPELINE_JOB_REGION con la región donde se ejecuta la canalización:

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Si usas la consola de Google Cloud para crear un trabajo de ajuste del modelo supervisado, especifica la región del trabajo de canalización en el control Región cuando crees tu trabajo de ajuste. En la consola de Google Cloud, el control de Región especifica la región del trabajo de canalización y la región de carga del modelo. Cuando usas la consola de Google Cloud para crear un trabajo de ajuste de modelo supervisado, ambas regiones siempre son iguales.

Región de carga de modelos

Usa el parámetro opcional tuned_model_location para especificar dónde se sube tu modelo ajustado. Si no se especifica la región de carga del modelo, el modelo ajustado se sube a la región del trabajo de canalización.Puedes usar uno de los trabajos de canalización admitidos y las regiones de carga de modelos para la región de carga de modelos. Puedes especificar la región de carga del modelo mediante uno de los siguientes métodos:

  • Si usas el SDK de Vertex AI, el parámetro tuned_model_location se especifica en el método tune_model del objeto que representa el modelo que estás ajustando (por ejemplo, el TextGenerationModel.tune_model).

  • Si creas un trabajo de ajuste de modelo supervisado mediante el envío de una solicitud POST mediante el uso depipelineJobs puede usar el métodolocation para especificar la región de carga del modelo.

  • Si usas la consola de Google Cloud para crear un trabajo de ajuste de modelo supervisado, especifica la región de carga del modelo en el control Región cuando crees tu trabajo de ajuste. En la consola de Google Cloud, el control de Región especifica la región de carga del modelo y la región del trabajo de canalización. Cuando usas la consola de Google Cloud para crear un trabajo de ajuste de modelos supervisados, ambas regiones siempre son las mismas.

Región de ajuste de modelos

La región de ajuste del modelo es donde se realiza el cálculo del ajuste del modelo. Esta región se determina según el tipo de acelerador que elijas. Si especificas TPU para el tipo de acelerador, el cálculo del ajuste del modelo se realiza en europe-west4. Si especificas GPU para el tipo de acelerador, el ajuste del modelo se realiza en us-central1.

Regiones de trabajo de canalización y carga de modelos compatibles

Puedes usar una de las siguientes regiones para especificar la región de carga del modelo y la región del trabajo de canalización:

  • 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

Crea un trabajo de ajuste de modelos de código

Puedes crear un trabajo de ajuste supervisado con la consola de Google Cloud, la API o el SDK de Vertex AI para Python. Para obtener orientación sobre las opciones de configuración del modelo, consulta Parámetro de configuración recomendadas.

Crea un trabajo de ajuste de modelos de generación de código

A continuación, se muestra cómo crear un trabajo de ajuste del modelo de generación de código con la consola de Google Cloud o los comandos de la API de REST.

REST

Para crear un trabajo de ajuste del modelo de generación de código, envía una solicitud POST con el método pipelineJobs.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • TUNINGPIPELINE_DISPLAYNAME: Un nombre visible para el pipelineJob.
  • OUTPUT_DIR: El URI del bucket al que se envían los artefactos de canalización.
  • MODEL_DISPLAYNAME*: Un nombre visible para el modelo subido (creado) por pipelineJob.
  • DATASET_URI: Es el URI de su archivo de conjunto de datos.
  • EVAL_DATASET_URI: (opcional) El URI del archivo JSONL que contiene el conjunto de datos de evaluación para la predicción y evaluación por lotes. La evaluación no es compatible con codechat-bison. Si deseas obtener más información, consulta Formato del conjunto de datos para ajustar un modelo de código. El conjunto de datos de evaluación requiere entre diez y 250 ejemplos.
  • EVAL_INTERVAL: (opcional, predeterminado 20) La cantidad de pasos de ajuste entre cada evaluación. Los intervalos de evaluación no son compatibles con los modelos de chat. Debido a que la evaluación se ejecuta en todo el conjunto de datos de evaluación, un intervalo de evaluación más pequeño da como resultado un tiempo de ajuste más largo. Por ejemplo, si steps es 200 y EVAL_INTERVAL es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configure evaluation_data_uri.
  • PIPELINE_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste de canalización. Esta es también la región predeterminada en la que se sube el modelo ajustado. Si deseas subir el modelo a una región diferente, usa el parámetro location para especificar la región de carga del modelo ajustada. Para obtener más información, consulta Región de los trabajos de canalización.
  • MODEL_UPLOAD_REGION: (opcional) la región en la que se sube el modelo ajustado. Si no especificas una región de carga de modelos, el modelo ajustado se sube a la misma región en la que se ejecuta el trabajo de canalización. Para obtener más información, consulta Región de carga de modelos.
  • ACCELERATOR_TYPE (opcional, GPU predeterminado): Es el tipo de acelerador que se usará para el ajuste de modelos. Las opciones válidas son las siguientes:
    • GPU: Usa ocho GPU A100 de 80 GB para el ajuste. Asegúrate de tener cuota suficiente. Si eliges GPU, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo son us-centra1. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eliges GPU, los cálculos de ajuste del modelo se realizan en la región us-central1.
    • TPU: Usa 64 núcleos del pod de TPU v3 para ajustar. Asegúrate de tener cuota suficiente. CMEK no es compatible, pero se admite VPC‐SC. Si eliges TPU, los cálculos de ajuste del modelo se realizarán en la región europe-west4.
  • ENABLE_EARLY_STOPPING: (opcional, true predeterminado) Un boolean que, si se establece en true, deja de ajustar antes de completar todos los pasos de ajuste si el rendimiento del modelo se mide en función de lo siguiente: La precisión de los tokens previstos no mejora lo suficiente entre las ejecuciones de evaluaciones. Si es false, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configure evaluation_data_uri. La habilitación de la interrupción anticipada no es compatible con los modelos de chat.
  • ENABLE_CHECKPOINT_SELECTION: un valor de cadena que puede ser true, false o default. Cuando se configura como “verdadero”, Vertex AI selecciona y muestra el punto de control con el mejor rendimiento de evaluación de modelos a partir de todos los puntos de control creados durante el trabajo de ajuste. Cuando se configura como “falso”, se muestra el punto de control final creado durante el trabajo de ajuste. Cada punto de control hace referencia a una instantánea del modelo durante un trabajo de ajuste.
  • TENSORBOARD_RESOURCE_ID: (Opcional) El ID de una instancia de TensorBoard de Vertex AI. La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
  • ENCRYPTION_KEY_NAME: (Opcional) Es el nombre completamente calificado de una clave de encriptación administrada por el cliente (CMEK) que deseas usar para la encriptación de datos. Una CMEK solo está disponible en us-central1. Si usas us-central1 y no especificas una CMEK, se usa una clave de encriptación administrada por Google. Las claves de encriptación administradas por Google se usan de forma predeterminada en todas las otras regiones disponibles. Para obtener más información, consulta la Descripción general de CMEK.
  • STEPS: La cantidad de pasos que se deben ejecutar para el ajuste del modelo. El valor predeterminado es 300. El tamaño del lote varía según el ajuste de la ubicación y el tamaño del modelo. Para modelos de 8,000, como text-bison@002, chat-bison@002, code-bison@002 y codechat-bison@002:
    • us-central1 tiene un tamaño de lote de 8.
    • europe-west4 tiene un tamaño de lote de 24.
    Para modelos de 32,000, como text-bison-32k, chat-bison-32k, code-bison-32k y codechat-bison-32k:
    • us-central1 tiene un tamaño de lote de 8.
    • europe-west4 tiene un tamaño de lote de 8.

    Por ejemplo, si entrenas text-bison@002 en europe-west4, hay 240 ejemplos en un conjunto de datos de entrenamiento y configuras steps como 20, entonces la cantidad de ejemplos de entrenamiento es el producto de 20 pasos y el tamaño del lote de 24 o 480 pasos de entrenamiento. En este caso, se generan dos ciclos de entrenamiento en el proceso, ya que pasa por los ejemplos dos veces. En us-central1, si hay 240 ejemplos en un conjunto de datos de entrenamiento y estableces steps en 15, la cantidad de ejemplos de entrenamiento es el producto de 15 pasos y el tamaño del lote de 8 o 120 pasos de entrenamiento. En este caso, hay 0.5 ciclos de entrenamiento porque los pasos de entrenamiento son la mitad de los ejemplos.

  • LEARNING_RATE_MULTIPLIER : El tamaño del paso en cada iteración. El valor predeterminado es 1.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación: Ten en cuenta que pipelineSpec se truncó para ahorrar espacio.

Consola

Para ajustar un modelo de generación de código o chat de código con ajuste supervisado con la consola de Google Cloud, sigue estos pasos:

  1. En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en la pestaña Ajustar y sintetizar.
  3. Haz clic en Crear modelo ajustado.
  4. Haz clic en Ajuste supervisado.
  5. Configura los detalles del modelo:
    • Nombre del modelo ajustado: ingresa un nombre para el modelo ajustado.
    • Modelo base: selecciona el modelo base deseas ajustar.
    • Región: Selecciona la región en la que se ejecuta el trabajo de ajuste de canalización y en la que se implementa el modelo ajustado.
    • Directorio de salida: ingresa la ubicación de Cloud Storage en la que se almacenan los artefactos cuando se ajusta tu modelo.
  6. Expande Opciones avanzadas para establecer una configuración avanzada.
    • Pasos de entrenamiento: Ingresa la cantidad de pasos que se ejecutarán para el ajuste del modelo. El valor predeterminado es 300. El tamaño del lote varía según el ajuste de la ubicación y el tamaño del modelo. Para modelos de 8,000, como text-bison@002, chat-bison@002, code-bison@002 y codechat-bison@002:
      • us-central1 tiene un tamaño de lote de 8.
      • europe-west4 tiene un tamaño de lote de 24.
      Para modelos de 32,000, como text-bison-32k, chat-bison-32k, code-bison-32k y codechat-bison-32k:
      • us-central1 tiene un tamaño de lote de 8.
      • europe-west4 tiene un tamaño de lote de 8.

      Por ejemplo, si entrenas text-bison@002 en europe-west4, hay 240 ejemplos en un conjunto de datos de entrenamiento y configuras steps como 20, entonces la cantidad de ejemplos de entrenamiento es el producto de 20 pasos y el tamaño del lote de 24 o 480 pasos de entrenamiento. En este caso, se generan dos ciclos de entrenamiento en el proceso, ya que pasa por los ejemplos dos veces. En us-central1, si hay 240 ejemplos en un conjunto de datos de entrenamiento y estableces steps en 15, la cantidad de ejemplos de entrenamiento es el producto de 15 pasos y el tamaño del lote de 8 o 120 pasos de entrenamiento. En este caso, hay 0.5 ciclos de entrenamiento porque los pasos de entrenamiento son la mitad de los ejemplos.

    • Multiplicador de tasa de aprendizaje: Ingresa el tamaño del paso en cada iteración. El valor predeterminado es 1.
    • Tipo de acelerador: (opcional) Ingresa el tipo de acelerador que se usará para el ajuste de modelos. Las opciones válidas son las siguientes:
      • GPU: Usa ocho GPU A100 de 80 GB para el ajuste. Asegúrate de tener cuota suficiente. Si eliges GPU, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo son us-centra1. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eliges GPU, los cálculos de ajuste del modelo se realizarán en la región us-central1.
      • TPU: Usa 64 núcleos del pod de TPU v3 para ajustar. Asegúrate de tener cuota suficiente. CMEK no es compatible, pero se admite VPC‐SC. Si eliges TPU, los cálculos de ajuste del modelo se realizarán en la región europe-west4.
    • Agrega una instancia de TensorBoard: (Opcional) El ID de una instancia de TensorBoard de Vertex AI. La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
    • Encriptación (opcional) elige usar una clave de encriptación administrada por Google o una clave de encriptación administrada por el cliente (CMEK). Una CMEK solo está disponible para la encriptación en la región us-central1. En las demás regiones disponibles, se usa una clave de encriptación administrada por Google. Para obtener más información, consulta la Descripción general de CMEK.
    • Cuenta de servicio (opcional): elige una cuenta de servicio administrada por el usuario. Una cuenta de servicio determina los recursos de Google Cloud a los que puede acceder tu código de servicio. Si no eliges una cuenta de servicio, se usa una cuenta de servicio administrada por Google que incluye los permisos adecuados para la mayoría de los modelos.
  7. Haga clic en Continue.
  8. Si deseas subir el archivo de conjunto de datos, selecciona  Subir archivo JSONL a Cloud Storage. Si tu archivo de conjunto de datos ya se encuentra en un bucket de Cloud Storage, selecciona  Archivo JSONL existente en Cloud Storage.

    Sube un archivo JSONL

    • En Seleccionar archivo JSONL, haz clic en Explorar y elige tu archivo de conjunto de datos.
    • En Ubicación del conjunto de datos, haz clic en Explorar y elige el bucket de Cloud Storage en el que deseas almacenar el archivo del conjunto de datos.

    Usa un archivo JSONL existente

    En Ruta del archivo de Cloud Storage, haz clic en Explorar y elige el bucket de Cloud Storage en el que se encuentra el archivo de conjunto de datos.

  9. Para evaluar tu modelo ajustado, selecciona Habilitar evaluación del modelo y configura la evaluación del modelo (opcional):
    • Conjunto de datos de evaluación: (opcional) El URI del archivo JSONL que contiene el conjunto de datos de evaluación para la predicción y evaluación por lotes. La evaluación no es compatible con codechat-bison. Si deseas obtener más información, consulta Formato del conjunto de datos para ajustar un modelo de código. El conjunto de datos de evaluación requiere entre diez y 250 ejemplos.
    • Intervalo de evaluación: (opcional, 20 predeterminado) La cantidad de pasos de ajuste entre cada evaluación. Los intervalos de evaluación no son compatibles con los modelos de chat. Debido a que la evaluación se ejecuta en todo el conjunto de datos de evaluación, un intervalo de evaluación más pequeño da como resultado un tiempo de ajuste más largo. Por ejemplo, si steps es 200 y EVAL_INTERVAL es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configure evaluation_data_uri.
    • Habilitar la interrupción anticipada: (opcional, true predeterminado) Un boolean que, si se establece en true, detiene el ajuste antes de completar todos los pasos de ajuste si se cumplen las siguientes condiciones: El rendimiento del modelo, según lo que mide la precisión de los tokens previstos, no mejora lo suficiente entre las ejecuciones de evaluaciones. Si es false, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configure evaluation_data_uri. La habilitación de la interrupción anticipada no es compatible con los modelos de chat.
    • Habilitar la selección de puntos de control: cuando está habilitada, Vertex AI selecciona y muestra el punto de control con el mejor rendimiento de evaluación de modelos a partir de todos los puntos de control creados durante el trabajo de ajuste. Cuando se inhabilita, se muestra el punto de control final creado durante el trabajo de ajuste. Cada punto de control hace referencia a una instantánea del modelo durante un trabajo de ajuste.
    • ID de TensorBoard: el ID de una instancia de TensorBoard de Vertex AI (opcional). La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
  10. Haz clic en Iniciar ajuste.

Python

Si deseas obtener información para instalar o actualizar el SDK de Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

from __future__ import annotations

from typing import Optional

from google.auth import default
from google.cloud import aiplatform
import pandas as pd
import vertexai
from vertexai.preview.language_models import CodeGenerationModel, TuningEvaluationSpec

credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])

def tune_code_generation_model(
    project_id: str,
    location: str,
    training_data: pd.DataFrame | str,
    train_steps: int = 300,
    evaluation_dataset: Optional[str] = None,
    tensorboard_instance_name: Optional[str] = None,
) -> None:
    """Tune a new model, based on a prompt-response data.

    "training_data" can be either the GCS URI of a file formatted in JSONL format
    (for example: training_data=f'gs://{bucket}/{filename}.jsonl'), or a pandas
    DataFrame. Each training example should be JSONL record with two keys, for
    example:
      {
        "input_text": <input prompt>,
        "output_text": <associated output>
      },
    or the pandas DataFame should contain two columns:
      ['input_text', 'output_text']
    with rows for each training example.

    Args:
      project_id: GCP Project ID, used to initialize vertexai
      location: GCP Region, used to initialize vertexai
      training_data: GCS URI of jsonl file or pandas dataframe of training data
      train_steps: Number of training steps to use when tuning the model.
      evaluation_dataset: GCS URI of jsonl file of evaluation data.
      tensorboard_instance_name: The full name of the existing Vertex AI TensorBoard instance:
        projects/PROJECT_ID/locations/LOCATION_ID/tensorboards/TENSORBOARD_INSTANCE_ID
        Note that this instance must be in the same region as your tuning job.
    """
    vertexai.init(project=project_id, location=location, credentials=credentials)
    eval_spec = TuningEvaluationSpec(evaluation_data=evaluation_dataset)
    eval_spec.tensorboard = aiplatform.Tensorboard(
        tensorboard_name=tensorboard_instance_name
    )
    model = CodeGenerationModel.from_pretrained("code-bison@001")

    model.tune_model(
        training_data=training_data,
        # Optional:
        train_steps=train_steps,
        tuning_job_location="europe-west4",
        tuned_model_location=location,
        tuning_evaluation_spec=eval_spec,
    )

    print(model._job.status)
    return model

Ejemplo de comando curl para ajustar un modelo de generación de código

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

Crea un trabajo de ajuste de modelos de chat de código

A continuación, se muestra cómo crear un trabajo de ajuste del modelo de chat de código con la consola de Google Cloud o los comandos de la API de REST.

REST

Para crear un trabajo de ajuste del modelo de chat de código, envía una solicitud POST con el método pipelineJobs.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • TUNINGPIPELINE_DISPLAYNAME: Un nombre visible para el pipelineJob.
  • OUTPUT_DIR: El URI del bucket al que se envían los artefactos de canalización.
  • PIPELINE_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste de canalización. Esta es también la región predeterminada en la que se sube el modelo ajustado. Si deseas subir el modelo a una región diferente, usa el parámetro location para especificar la región de carga del modelo ajustada. Para obtener más información, consulta Región de los trabajos de canalización.
  • MODEL_UPLOAD_REGION: (opcional) la región en la que se sube el modelo ajustado. Si no especificas una región de carga de modelos, el modelo ajustado se sube a la misma región en la que se ejecuta el trabajo de canalización. Para obtener más información, consulta Región de carga de modelos.
  • ACCELERATOR_TYPE (opcional, GPU predeterminado): Es el tipo de acelerador que se usará para el ajuste de modelos. Las opciones válidas son las siguientes:
    • GPU: Usa ocho GPU A100 de 80 GB para el ajuste. Asegúrate de tener cuota suficiente. Si eliges GPU, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo son us-centra1. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eliges GPU, los cálculos de ajuste del modelo se realizan en la región us-central1.
    • TPU: Usa 64 núcleos del pod de TPU v3 para ajustar. Asegúrate de tener cuota suficiente. CMEK no es compatible, pero se admite VPC‐SC. Si eliges TPU, los cálculos de ajuste del modelo se realizarán en la región europe-west4.
  • MODEL_DISPLAYNAME*: Un nombre visible para el modelo subido (creado) por pipelineJob.
  • DATASET_URI: Es el URI de su archivo de conjunto de datos.
  • TENSORBOARD_RESOURCE_ID: (Opcional) El ID de una instancia de TensorBoard de Vertex AI. La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
  • ENCRYPTION_KEY_NAME: (Opcional) Es el nombre completamente calificado de una clave de encriptación administrada por el cliente (CMEK) que deseas usar para la encriptación de datos. Una CMEK solo está disponible en us-central1. Si usas us-central1 y no especificas una CMEK, se usa una clave de encriptación administrada por Google. Las claves de encriptación administradas por Google se usan de forma predeterminada en todas las otras regiones disponibles. Para obtener más información, consulta la Descripción general de CMEK.
  • DEFAULT_CONTEXT: Es el contexto que se aplica a todos los ejemplos de ajuste en el conjunto de datos de ajuste. Establecer el campo context en un ejemplo anula el contexto predeterminado.
  • STEPS: La cantidad de pasos que se deben ejecutar para el ajuste del modelo. El valor predeterminado es 300. El tamaño del lote varía según el ajuste de la ubicación y el tamaño del modelo. Para modelos de 8,000, como text-bison@002, chat-bison@002, code-bison@002 y codechat-bison@002:
    • us-central1 tiene un tamaño de lote de 8.
    • europe-west4 tiene un tamaño de lote de 24.
    Para modelos de 32,000, como text-bison-32k, chat-bison-32k, code-bison-32k y codechat-bison-32k:
    • us-central1 tiene un tamaño de lote de 8.
    • europe-west4 tiene un tamaño de lote de 8.

    Por ejemplo, si entrenas text-bison@002 en europe-west4, hay 240 ejemplos en un conjunto de datos de entrenamiento y configuras steps como 20, entonces la cantidad de ejemplos de entrenamiento es el producto de 20 pasos y el tamaño del lote de 24 o 480 pasos de entrenamiento. En este caso, se generan dos ciclos de entrenamiento en el proceso, ya que pasa por los ejemplos dos veces. En us-central1, si hay 240 ejemplos en un conjunto de datos de entrenamiento y estableces steps en 15, la cantidad de ejemplos de entrenamiento es el producto de 15 pasos y el tamaño del lote de 8 o 120 pasos de entrenamiento. En este caso, hay 0.5 ciclos de entrenamiento porque los pasos de entrenamiento son la mitad de los ejemplos.

  • LEARNING_RATE_MULTIPLIER: El tamaño del paso en cada iteración. El valor predeterminado es 1.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Ten en cuenta que pipelineSpec se truncó para ahorrar espacio.

Consola

Para ajustar un modelo de generación de código o chat de código con ajuste supervisado con la consola de Google Cloud, sigue estos pasos:

  1. En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en la pestaña Ajustar y sintetizar.
  3. Haz clic en Crear modelo ajustado.
  4. Haz clic en Ajuste supervisado.
  5. Configura los detalles del modelo:
    • Nombre del modelo ajustado: ingresa un nombre para el modelo ajustado.
    • Modelo base: selecciona el modelo base deseas ajustar.
    • Región: Selecciona la región en la que se ejecuta el trabajo de ajuste de canalización y en la que se implementa el modelo ajustado.
    • Directorio de salida: ingresa la ubicación de Cloud Storage en la que se almacenan los artefactos cuando se ajusta tu modelo.
  6. Expande Opciones avanzadas para establecer una configuración avanzada.
    • Pasos de entrenamiento: Ingresa la cantidad de pasos que se ejecutarán para el ajuste del modelo. El valor predeterminado es 300. El tamaño del lote varía según el ajuste de la ubicación y el tamaño del modelo. Para modelos de 8,000, como text-bison@002, chat-bison@002, code-bison@002 y codechat-bison@002:
      • us-central1 tiene un tamaño de lote de 8.
      • europe-west4 tiene un tamaño de lote de 24.
      Para modelos de 32,000, como text-bison-32k, chat-bison-32k, code-bison-32k y codechat-bison-32k:
      • us-central1 tiene un tamaño de lote de 8.
      • europe-west4 tiene un tamaño de lote de 8.

      Por ejemplo, si entrenas text-bison@002 en europe-west4, hay 240 ejemplos en un conjunto de datos de entrenamiento y configuras steps como 20, entonces la cantidad de ejemplos de entrenamiento es el producto de 20 pasos y el tamaño del lote de 24 o 480 pasos de entrenamiento. En este caso, se generan dos ciclos de entrenamiento en el proceso, ya que pasa por los ejemplos dos veces. En us-central1, si hay 240 ejemplos en un conjunto de datos de entrenamiento y estableces steps en 15, la cantidad de ejemplos de entrenamiento es el producto de 15 pasos y el tamaño del lote de 8 o 120 pasos de entrenamiento. En este caso, hay 0.5 ciclos de entrenamiento porque los pasos de entrenamiento son la mitad de los ejemplos.

    • Multiplicador de tasa de aprendizaje: Ingresa el tamaño del paso en cada iteración. El valor predeterminado es 1.
    • Tipo de acelerador: (opcional) Ingresa el tipo de acelerador que se usará para el ajuste de modelos. Las opciones válidas son las siguientes:
      • GPU: Usa ocho GPU A100 de 80 GB para el ajuste. Asegúrate de tener cuota suficiente. Si eliges GPU, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo son us-centra1. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eliges GPU, los cálculos de ajuste del modelo se realizarán en la región us-central1.
      • TPU: Usa 64 núcleos del pod de TPU v3 para ajustar. Asegúrate de tener cuota suficiente. CMEK no es compatible, pero se admite VPC‐SC. Si eliges TPU, los cálculos de ajuste del modelo se realizarán en la región europe-west4.
    • Agrega una instancia de TensorBoard: (Opcional) El ID de una instancia de TensorBoard de Vertex AI. La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
    • Encriptación (opcional) elige usar una clave de encriptación administrada por Google o una clave de encriptación administrada por el cliente (CMEK). Una CMEK solo está disponible para la encriptación en la región us-central1. En las demás regiones disponibles, se usa una clave de encriptación administrada por Google. Para obtener más información, consulta la Descripción general de CMEK.
    • Cuenta de servicio (opcional): elige una cuenta de servicio administrada por el usuario. Una cuenta de servicio determina los recursos de Google Cloud a los que puede acceder tu código de servicio. Si no eliges una cuenta de servicio, se usa una cuenta de servicio administrada por Google que incluye los permisos adecuados para la mayoría de los modelos.
  7. Haga clic en Continue.
  8. Si deseas subir el archivo de conjunto de datos, selecciona  Subir archivo JSONL a Cloud Storage. Si tu archivo de conjunto de datos ya se encuentra en un bucket de Cloud Storage, selecciona  Archivo JSONL existente en Cloud Storage.

    Sube un archivo JSONL

    • En Seleccionar archivo JSONL, haz clic en Explorar y elige tu archivo de conjunto de datos.
    • En Ubicación del conjunto de datos, haz clic en Explorar y elige el bucket de Cloud Storage en el que deseas almacenar el archivo del conjunto de datos.

    Usa un archivo JSONL existente

    En Ruta del archivo de Cloud Storage, haz clic en Explorar y elige el bucket de Cloud Storage en el que se encuentra el archivo de conjunto de datos.

  9. Para evaluar tu modelo ajustado, selecciona Habilitar evaluación del modelo y configura la evaluación del modelo (opcional):
    • Conjunto de datos de evaluación: (opcional) El URI del archivo JSONL que contiene el conjunto de datos de evaluación para la predicción y evaluación por lotes. La evaluación no es compatible con codechat-bison. Si deseas obtener más información, consulta Formato del conjunto de datos para ajustar un modelo de código. El conjunto de datos de evaluación requiere entre diez y 250 ejemplos.
    • Intervalo de evaluación: (opcional, 20 predeterminado) La cantidad de pasos de ajuste entre cada evaluación. Los intervalos de evaluación no son compatibles con los modelos de chat. Debido a que la evaluación se ejecuta en todo el conjunto de datos de evaluación, un intervalo de evaluación más pequeño da como resultado un tiempo de ajuste más largo. Por ejemplo, si steps es 200 y EVAL_INTERVAL es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configure evaluation_data_uri.
    • Habilitar la interrupción anticipada: (opcional, true predeterminado) Un boolean que, si se establece en true, detiene el ajuste antes de completar todos los pasos de ajuste si se cumplen las siguientes condiciones: El rendimiento del modelo, según lo que mide la precisión de los tokens previstos, no mejora lo suficiente entre las ejecuciones de evaluaciones. Si es false, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configure evaluation_data_uri. La habilitación de la interrupción anticipada no es compatible con los modelos de chat.
    • Habilitar la selección de puntos de control: cuando está habilitada, Vertex AI selecciona y muestra el punto de control con el mejor rendimiento de evaluación de modelos a partir de todos los puntos de control creados durante el trabajo de ajuste. Cuando se inhabilita, se muestra el punto de control final creado durante el trabajo de ajuste. Cada punto de control hace referencia a una instantánea del modelo durante un trabajo de ajuste.
    • ID de TensorBoard: el ID de una instancia de TensorBoard de Vertex AI (opcional). La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
  10. Haz clic en Iniciar ajuste.

Ejemplo de comando curl para ajustar un modelo de chat de código

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

En la siguiente tabla, se muestran los parámetros de configuración recomendados para ajustar un modelo de código por tarea:

Tarea Cantidad de ejemplos en el conjunto de datos Pasos de entrenamiento
Generación de código 500+ 200-1000
Chat de código 500+ 200-1000

En los pasos de entrenamiento, puedes probar más de un valor para obtener el mejor rendimiento en un conjunto de datos en particular, por ejemplo, 100, 200 o 500.

Visualiza una lista de modelos ajustados

Puedes usar la consola de Google Cloud o el SDK de Vertex AI para Python a fin de ver una lista de los modelos de código ajustados en el proyecto actual.

Visualiza una lista de modelos de código ajustados (consola)

Para ver tus modelos de chat y de generación de código ajustados en la consola de Google Cloud, ve a la página Vertex AI Model Registry.

Ir a Vertex AI Model Registry

Visualiza una lista de modelos de generación de código (SDK) ajustados

El siguiente código de muestra usa el SDK de Vertex AI para Python a fin de enumerar los modelos de generación de código ajustados en tu proyecto actual:

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

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

Visualiza una lista de modelos de chat de código ajustados (SDK)

El siguiente código de muestra usa el SDK de Vertex AI para Python a fin de enumerar los modelos de chat de código ajustados en tu proyecto actual:

import vertexai
from vertexai.preview.language_models import CodeChatModel

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

Carga un modelo ajustado

Puedes usar el SDK de Vertex AI para Python a fin de cargar un modelo de código ajustado.

Carga un modelo de generación de código ajustado

El siguiente código de muestra usa el SDK de Vertex AI para Python a fin de cargar un modelo de generación de código ajustado. En el código de muestra, reemplaza TUNED_MODEL_NAME por el nombre de recurso calificado del modelo ajustado. Este nombre tiene el formato projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID. Puedes encontrar el ID del modelo de tu modelo ajustado en Vertex AI Model Registry.

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

Carga un modelo de chat de código ajustado

El siguiente código de muestra usa el SDK de Vertex AI para Python a fin de cargar un modelo de chat de código ajustado:

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.get_tuned_model(TUNED_MODEL_NAME)

Ajustes y métricas de evaluación

Puedes configurar un trabajo de ajuste de modelos para recopilar y, luego, informar el ajuste de modelos y las métricas de evaluación de modelos, que luego se pueden visualizar mediante Vertex AI TensorBoard.

Métricas de ajuste de modelos

Puedes configurar un trabajo de ajuste de modelos para recopilar las siguientes métricas de ajuste de chat-bison, code-bison, codechat-bison y text-bison:
  • /train_total_loss: Pérdida del conjunto de datos de ajuste en un paso de entrenamiento
  • /train_fraction_of_correct_next_step_preds: La precisión del token en un paso de entrenamiento. Una predicción individual consiste en una secuencia de tokens. Esta métrica mide la exactitud de los tokens previstos en comparación con la verdad fundamental del conjunto de datos de ajuste.
  • /train_num_predictions: Cantidad de tokens previstos en un paso de entrenamiento

Métricas de validación de modelos

Métricas de evaluación de modelos

Puedes configurar un trabajo de ajuste de modelos a fin de recopilar las siguientes métricas de evaluación para code-bison y text-bison:

  • /eval_total_loss: La pérdida del conjunto de datos de evaluación en un paso de evaluación.
  • /eval_fraction_of_correct_next_step_preds: La precisión del token en un paso de evaluación. Una predicción individual consiste en una secuencia de tokens. Esta métrica mide la exactitud de los tokens previstos en comparación con la verdad fundamental del conjunto de datos de evaluación.
  • /eval_num_predictions: Cantidad de tokens previstos en un paso de evaluación.

Las visualizaciones de métricas están disponibles después de que se completa el trabajo de ajuste del modelo. Si especificas solo un ID de instancia de TensorBoard de Vertex AI y no un conjunto de datos de evaluación cuando creas el trabajo de ajuste, solo las visualizaciones para las métricas de ajuste están disponibles.

Cuota

Los trabajos de ajuste en us-central1 usan ocho GPU A100 de 80 GB.

Los trabajos de ajuste en europe-west4 usan 64 núcleos del recurso de entrenamiento de modelos personalizados TPU v3 pod.

Si no tienes suficiente cuota o deseas ejecutar varios trabajos de ajuste simultáneos en tu proyecto de Google Cloud, debes solicitar una cuota adicional:

  • Para us-central1, envía una solicitud para Restricted image training Nvidia A100 80 GB GPUs per region en la región us-central1 en múltiplos de ocho.

  • Para europe-west4, envía una solicitud para Restricted image training TPU V3 pod cores per region en la región europe-west4 en múltiplos de 64.

¿Qué sigue?

  • Para obtener más modelos, funciones avanzadas y la capacidad de transcribir archivos de hasta ocho horas, consulta Speech-to-Text.