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 con
tuning_job_location
parámetro en eltune_model
El método del objeto que representa el modelo que estás ajustando (por ejemplo, elTextGenerationModel.tune_model
método).Si creas un trabajo de ajuste supervisado mediante el envío de una solicitud POST con el
pipelineJobs.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 dePIPELINE_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étodotune_model
del objeto que representa el modelo que estás ajustando (por ejemplo, elTextGenerationModel.tune_model
).Si creas un trabajo de ajuste de modelo supervisado mediante el envío de una solicitud POST mediante el uso de
pipelineJobs
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 del 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 evaluación y predicció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, sisteps
es 200 yEVAL_INTERVAL
es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configureevaluation_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 eligesGPU
, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo sonus-centra1
. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eligesGPU
, los cálculos de ajuste del modelo se realizan en la regiónus-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 eligesTPU
, los cálculos de ajuste del modelo se realizarán en la regióneurope-west4
.
- ENABLE_EARLY_STOPPING: (opcional,
true
predeterminado) unboolean
que, si se establece entrue
, 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 exactitud de los tokens previstos no mejora lo suficiente entre las ejecuciones de evaluaciones. Si esfalse
, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configureevaluation_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
odefault
. 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 usasus-central1
y no especificas una CMEK, se usa una clave propiedad de Google y administrada por Google. De forma predeterminada, se usa una clave administrada por Google y propiedad de Google 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
ycodechat-bison@002
:us-central1
tiene un tamaño de lote de 8.europe-west4
tiene un tamaño de lote de 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ycodechat-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
eneurope-west4
, hay 240 ejemplos en un conjunto de datos de entrenamiento y configurassteps
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. Enus-central1
, si hay 240 ejemplos en un conjunto de datos de entrenamiento y establecessteps
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.
Console
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:
- En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.
- Haz clic en la pestaña Ajustar y sintetizar.
- Haz clic en Crear modelo ajustado.
- Haz clic en Ajuste supervisado.
- 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.
- 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
ycodechat-bison@002
:us-central1
tiene un tamaño de lote de 8.europe-west4
tiene un tamaño de lote de 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ycodechat-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
eneurope-west4
, hay 240 ejemplos en un conjunto de datos de entrenamiento y configurassteps
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. Enus-central1
, si hay 240 ejemplos en un conjunto de datos de entrenamiento y establecessteps
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 eligesGPU
, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo sonus-centra1
. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eligesGPU
, los cálculos de ajuste del modelo se realizarán en la regiónus-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 eligesTPU
, los cálculos de ajuste del modelo se realizarán en la regióneurope-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 Google y 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 todas las demás regiones disponibles, se usa una clave de Google y 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 un agente de servicio que incluye los permisos adecuados para la mayoría de los modelos.
- 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
- Haga clic en Continue.
- Si deseas subir el archivo de conjunto de datos, selecciona
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.
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.
- 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 evaluación y predicció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, sisteps
es 200 yEVAL_INTERVAL
es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configureevaluation_data_uri
. - Habilitar la interrupción anticipada: (opcional,
true
predeterminado) Unboolean
que, si se establece entrue
, 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 esfalse
, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configureevaluation_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.
- Conjunto de datos de evaluación: (opcional) el URI del archivo JSONL que contiene el conjunto de datos de evaluación para la evaluación y predicción por lotes. La evaluación no es compatible con
- Haz clic en Iniciar ajuste.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para 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.
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 eligesGPU
, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo sonus-centra1
. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eligesGPU
, los cálculos de ajuste del modelo se realizan en la regiónus-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 eligesTPU
, los cálculos de ajuste del modelo se realizarán en la regióneurope-west4
.
- MODEL_DISPLAYNAME*: Un nombre visible para el modelo subido (creado) por pipelineJob.
- DATASET_URI: Es el URI del 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 usasus-central1
y no especificas una CMEK, se usa una clave propiedad de Google y administrada por Google. De forma predeterminada, se usa una clave administrada por Google y propiedad de Google 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
ycodechat-bison@002
:us-central1
tiene un tamaño de lote de 8.europe-west4
tiene un tamaño de lote de 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ycodechat-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
eneurope-west4
, hay 240 ejemplos en un conjunto de datos de entrenamiento y configurassteps
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. Enus-central1
, si hay 240 ejemplos en un conjunto de datos de entrenamiento y establecessteps
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.
Console
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:
- En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.
- Haz clic en la pestaña Ajustar y sintetizar.
- Haz clic en Crear modelo ajustado.
- Haz clic en Ajuste supervisado.
- 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.
- 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
ycodechat-bison@002
:us-central1
tiene un tamaño de lote de 8.europe-west4
tiene un tamaño de lote de 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ycodechat-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
eneurope-west4
, hay 240 ejemplos en un conjunto de datos de entrenamiento y configurassteps
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. Enus-central1
, si hay 240 ejemplos en un conjunto de datos de entrenamiento y establecessteps
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 eligesGPU
, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo sonus-centra1
. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eligesGPU
, los cálculos de ajuste del modelo se realizarán en la regiónus-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 eligesTPU
, los cálculos de ajuste del modelo se realizarán en la regióneurope-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 Google y 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 todas las demás regiones disponibles, se usa una clave de Google y 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 un agente de servicio que incluye los permisos adecuados para la mayoría de los modelos.
- 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
- Haga clic en Continue.
- Si deseas subir el archivo de conjunto de datos, selecciona
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.
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.
- 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 evaluación y predicció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, sisteps
es 200 yEVAL_INTERVAL
es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configureevaluation_data_uri
. - Habilitar la interrupción anticipada: (opcional,
true
predeterminado) Unboolean
que, si se establece entrue
, 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 esfalse
, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configureevaluation_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.
- Conjunto de datos de evaluación: (opcional) el URI del archivo JSONL que contiene el conjunto de datos de evaluación para la evaluación y predicción por lotes. La evaluación no es compatible con
- 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"
}'
Parámetros de configuración de ajuste de modelos de código recomendados
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 | Más de 500 | 200-1000 |
Chat de código | Más de 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.
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 dechat-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 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 paraRestricted image training Nvidia A100 80 GB GPUs per region
en la regiónus-central1
en múltiplos de ocho.Para
europe-west4
, envía una solicitud paraRestricted image training TPU V3 pod cores per region
en la regióneurope-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.