El ajuste supervisado usa ejemplos etiquetados para ajustar un modelo. En cada ejemplo, se muestra el resultado que deseas de tu modelo de texto durante la inferencia. El ajuste supervisado es una buena opción cuando el resultado de tu modelo no es muy complejo y es fácil de definir.
- Si el resultado de tu modelo es difícil de definir, considera ajustar tu modelo de texto con el aprendizaje por refuerzo de los comentarios de personas (RLHF).
- Para obtener información sobre cómo ajustar un modelo de código con ajuste supervisado, consulta Ajusta los modelos de código.
Guía paso a paso para el ajuste de modelos de texto
En el siguiente instructivo guiado, aprenderás a usar el ajuste supervisado para ajustar un modelo de base de texto en la consola de Google Cloud.
Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guía:
Flujo de trabajo para el ajuste de modelos supervisados
El flujo de trabajo de ajuste de modelos supervisados en Vertex AI incluye los siguientes pasos:
- Prepara tu conjunto de datos de ajuste de modelos.
- Sube el conjunto de datos de ajuste de modelos a un bucket de Cloud Storage.
- Crea un trabajo de ajuste de modelos supervisados.
Una vez que se completa el ajuste del modelo, el modelo ajustado se implementa en un extremo de Vertex AI. El nombre del extremo es el mismo que el nombre del modelo ajustado. Los modelos ajustados están disponibles para seleccionarlos en Generative AI Studio cuando desees crear un nuevo mensaje.
Modelos compatibles
Los siguientes modelos de base admiten la optimización supervisada:
- Generación de texto:
text-bison@002
ytext-bison-32k@002
- Chat de texto:
chat-bison@002
ychat-bison-32k@002
- Generación de código:
code-bison@002
ytext-bison-32k@002
- Chat de código:
codechat-bison@002
ycodechat-bison-32k@002
- Incorporaciones de texto:
textembedding-gecko@001
(vista previa)
Casos de uso para usar ajustes supervisados en modelos de texto
Los modelos de texto base funcionan bien cuando el resultado o la tarea esperados se pueden definir de forma clara y concisa en un mensaje y el mensaje produce el resultado esperado de manera coherente. Si deseas que un modelo aprenda algo específico o que se desvíe de los patrones generales de lenguaje, deberías considerar ajustar ese modelo. Por ejemplo, puedes usar el ajuste de modelos para enseñarle al modelo lo siguiente:
- Estructuras o formatos específicos para generar salidas.
- Comportamientos específicos, como cuándo proporcionar una salida tersa o verbosa.
- Salidas específicas personalizadas para tipos específicos de entradas.
Los siguientes ejemplos son casos prácticos que son difíciles de capturar solo con instrucciones rápidas:
Clasificación: La respuesta esperada es una palabra o frase específica.
El ajuste del modelo puede ayudar a evitar que el modelo genere respuestas detalladas.
Resumen: El resumen sigue un formato específico. Por ejemplo, es posible que debas quitar la información de identificación personal (PII) de un resumen de chat.
Este formato de reemplazo de los nombres de los interlocutores con
#Person1
y#Person2
es difícil de describir y el modelo de base podría no producir esa respuesta de forma natural.Respuestas extractivas: La pregunta se relaciona con un contexto, y la respuesta es una substring del contexto.
La respuesta "Último máximo glacial" (Last Glacial Maximum) es una frase específica del contexto.
Chat: Necesitas personalizar la respuesta del modelo para seguir a una persona, un rol o un carácter.
También puedes ajustar un modelo en las siguientes situaciones:
- Los mensajes no producen los resultados esperados de forma coherente.
- La tarea es demasiado complicada para definirla en una instrucción. Por ejemplo, deseas que el modelo clone el comportamiento para un comportamiento que es difícil de articular en una instrucción.
- Tienes intuiciones complejas sobre una tarea que son fáciles de obtener, pero difíciles de formalizar en una instrucción.
- Quieres quitar la longitud de contexto para quitar los ejemplos de tomas.
Prepara un conjunto de datos de ajuste supervisado
El conjunto de datos que se usa para ajustar un modelo de base debe incluir ejemplos que se alineen con la tarea que deseas que realice el modelo. Estructura tu conjunto de datos de entrenamiento en un formato de texto a texto. Cada registro o fila en el conjunto de datos contiene el texto de entrada (también conocido como mensaje) que se sincroniza con la salida esperada del modelo. El ajuste supervisado usa el conjunto de datos para enseñarle al modelo a imitar un comportamiento o una tarea, ya que necesitas cientos de ejemplos que ilustran ese comportamiento.
Tu conjunto de datos debe incluir un mínimo de 10 ejemplos, pero recomendamos al menos de 100 a 500 ejemplos para obtener buenos resultados. Cuantos más ejemplos proporciones en tu conjunto de datos, mejores serán los resultados.
Para ver conjuntos de datos de muestra, consulta Conjuntos de datos de muestra en esta página.
Formato del conjunto de datos
El conjunto de datos de ajuste de modelos debe estar en formato líneas JSON (JSONL), en el que cada línea contiene un solo ejemplo de ajuste. El formato del conjunto de datos que se usa para ajustar un modelo de generación de texto es diferente al formato del conjunto de datos para ajustar un modelo de chat de texto. Antes de ajustar tu modelo, debes subir tu conjunto de datos a un bucket de Cloud Storage.
Texto
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. Se ignoran los campos adicionales de las
instrucciones estructuradas, como context
.
La longitud máxima del token para input_text
es 8,192 y la longitud máxima del token para output_text
es 1,024. Si alguno de los campos excede la longitud máxima del token, los tokens de exceso se truncan.
La cantidad máxima de ejemplos que puede contener un conjunto de datos para un modelo de generación de texto es 10,000.
Ejemplo de conjunto de datos
{"input_text": "question: How many people live in Beijing? context: With over 21 million residents, Beijing is the world's most populous national capital city and is China's second largest city after Shanghai. It is located in Northern China, and is governed as a municipality under the direct administration of the State Council with 16 urban, suburban, and rural districts.[14] Beijing is mostly surrounded by Hebei Province with the exception of neighboring Tianjin to the southeast; together, the three divisions form the Jingjinji megalopolis and the national capital region of China.", "output_text": "over 21 million people"}
{"input_text": "question: How many parishes are there in Louisiana? context: The U.S. state of Louisiana is divided into 64 parishes (French: paroisses) in the same manner that 48 other states of the United States are divided into counties, and Alaska is divided into boroughs.", "output_text": "64"}
Incluye instrucciones en los ejemplos
Para tareas como la clasificación, es posible 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": "5 stocks to buy now", "output_text": "business"}
Incluye instrucciones:
{"input_text": "Classify the following text into one of the following classes: [business, entertainment] Text: 5 stocks to buy now", "output_text": "business"}
Chat
Cada ejemplo de conversación en un conjunto de datos de ajuste de chat se compone de un campo messages
(obligatorio) y un campo context
(opcional).
El campo messages
consta de un array de pares de autor-contenido. El campo author
se refiere al autor del mensaje y se configura como user
o assistant
de forma alternada. El campo content
es el contenido del mensaje. Cada ejemplo de conversación debe tener entre dos y tres pares de mensajes de asistente de usuario, que representan un mensaje del usuario y una respuesta del modelo.
El campo context
te permite especificar un contexto para el chat. Si especificas un contexto para un ejemplo, se anulará el valor proporcionado en default_context
.
En cada ejemplo de conversación, la longitud máxima del token para context
y messages
combinadas es de 8,192 tokens. Además, cada campo content
para assistant
no debe exceder los 1,024 tokens.
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.
Ejemplo
{
"context": "You are a pirate dog named Captain Barktholomew.",
"messages": [
{
"author": "user",
"content": "Hi"
},
{
"author": "assistant",
"content": "Argh! What brings ye to my ship?"
},
{
"author": "user",
"content": "What's your name?"
},
{
"author": "assistant",
"content": "I be Captain Barktholomew, the most feared pirate dog of the seven seas."
}
]
}
Conjunto de datos de muestra
Puedes usar un conjunto de datos de muestra para comenzar a ajustar el modelo text-bison@002
. El siguiente es un conjunto de datos de tareas de clasificación que contiene transcripciones médicas de muestra para varias especialidades médicas. Los datos son de mtsamples.com y están disponibles en Kaggle.
URI del conjunto de datos de ajuste de muestra:
gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl
URI del conjunto de datos de evaluación de muestra:
gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl
Para usar estos conjuntos de datos, especifica los URI en los parámetros aplicables cuando crees un trabajo de ajuste supervisado del modelo de texto.
Por ejemplo:
...
"dataset_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl",
...
"evaluation_data_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl",
...
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.
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 texto
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.
REST
Para crear un trabajo de ajuste de modelos, envía una solicitud POST mediante el método pipelineJobs
.
Ten en cuenta que algunos de los parámetros no son compatibles con todos los modelos. Asegúrate de incluir solo los parámetros aplicables del modelo que estás ajustando.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PIPELINEJOB_DISPLAYNAME: Un nombre visible para el pipelineJob.
- OUTPUT_DIR: El URI del bucket al que se envían los artefactos de canalización.
- PROJECT_ID: El ID del proyecto.
- MODEL_DISPLAYNAME*: Un nombre visible para el modelo subido (creado) por pipelineJob.
- DATASET_URI: Es el URI del archivo de conjunto de datos.
- 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 carga de modelos. - 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 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
.
- LARGE_MODEL_REFERENCE: El nombre del modelo de base para ajustar. Las opciones son las siguientes:
text-bison@002
chat-bison@002
- DEFAULT_CONTEXT (chat only): Es el
contexto que se aplica a todos los ejemplos de ajuste en el conjunto de datos de ajuste. Establecer el
context
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: Un multiplicador para aplicar a la tasa de aprendizaje recomendada. Para usar la tasa de aprendizaje recomendada, usa
1.0
. - EVAL_DATASET_URI (text only): (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
chat-bison
. Para 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 (text only): (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
. - ENABLE_EARLY_STOPPING (text only): (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 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. - 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. - TEMPLATE_URI: La plantilla de ajuste que debes usar depende del modelo que estás ajustando:
- Modelo de texto:
https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v2.0.0
- Modelo de chat:
https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0
- Modelo de texto:
- SERVICE_ACCOUNT: Es la cuenta de servicio que usa Vertex AI para ejecutar tu trabajo de canalización (opcional). De forma predeterminada, se usa la cuenta de servicio predeterminada de Compute Engine (
PROJECT_NUMBER‑compute@developer.gserviceaccount.com
) del proyecto. Obtén más información para vincular una cuenta de servicio personalizada.
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", "location": "MODEL_UPLOAD_REGION", "accelerator_type": "ACCELERATOR_TYPE", "large_model_reference": "LARGE_MODEL_REFERENCE", "default_context": "DEFAULT_CONTEXT (chat only)", "train_steps": STEPS, "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER, "evaluation_data_uri": "gs://EVAL_DATASET_URI (text only)", "evaluation_interval": EVAL_INTERVAL (text only), "enable_early_stopping": ENABLE_EARLY_STOPPING (text only), "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION (text only)", "tensorboard_resource_id": "TENSORBOARD_ID", "encryption_spec_key_name": "ENCRYPTION_KEY_NAME" } }, "encryptionSpec": { "kmsKeyName": "ENCRYPTION_KEY_NAME" }, "serviceAccount": "SERVICE_ACCOUNT", "templateUri": "TEMPLATE_URI" }
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.
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.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Console
Para ajustar un modelo de texto con ajuste supervisado mediante 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 predicción y evaluación por lotes. La evaluación no es compatible con
chat-bison
. Para 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.
- Instancia 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 predicción y evaluación por lotes. La evaluación no es compatible con
- Haz clic en Iniciar ajuste.
Ejemplo del comando curl
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://europe-west4-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/europe-west4/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
"displayName": "tune-llm",
"runtimeConfig": {
"gcsOutputDirectory": "'${OUTPUT_DIR}'",
"parameterValues": {
"project": "'${PROJECT_ID}'",
"model_display_name": "The display name for your model in the UI",
"dataset_uri": "'${DATASET_URI}'",
"location": "'${LOCATION}'",
"accelerator_type:": "'${ACCELERATOR_TYPE}'",
"large_model_reference": "text-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-model/v2.0.0"
}'
Parámetros de configuración recomendados
En la siguiente tabla, se muestran los parámetros de configuración recomendados para ajustar un modelo de base por tarea:
Tarea | Cantidad de ejemplos en el conjunto de datos | Pasos de entrenamiento |
---|---|---|
Clasificación | Más de 100 | 100-500 |
Creación de resúmenes | 100-500 | 200-1000 |
QA de extracción | Más de 100 | 100-500 |
Chat | Más de 200 | 1,000 |
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 ver una lista de modelos en tu proyecto actual, incluidos los modelos ajustados con la consola de Google Cloud o el SDK de Vertex AI para Python.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Console
Para ver tus modelos ajustados en la consola de Google Cloud, ve a la página Vertex AI Model Registry.
Carga un modelo de texto 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 texto que se ajustó mediante el ajuste supervisado:
import vertexai from vertexai.preview.language_models import TextGenerationModel model = TextGenerationModel.get_tuned_model(TUNED_MODEL_NAME)
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.
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 Vertex AI TensorBoard 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.
Soluciona problemas
Los siguientes temas pueden ayudarte a resolver problemas con el ajuste de un modelo de texto de base mediante el ajuste supervisado.
Si intentas ajustar un modelo, se muestra un error 500 o Internal error encountered
.
Si encuentras este error 500 cuando intentas ajustar un modelo, prueba esta solución alternativa:
Ejecuta el siguiente comando de cURL para crear un conjunto de datos vacío de Vertex AI. Asegúrate de configurar el ID del proyecto en el comando.
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://europe-west4-aiplatform.googleapis.com/ui/projects/$PROJECT_ID/locations/europe-west4/datasets \
-d '{
"display_name": "test-name1",
"metadata_schema_uri": "gs://google-cloud-aiplatform/schema/dataset/metadata/image_1.0.0.yaml",
"saved_queries": [{"display_name": "saved_query_name", "problem_type": "IMAGE_CLASSIFICATION_MULTI_LABEL"}]
}'
Una vez que se complete el comando, espera cinco minutos y vuelve a ajustar el modelo.
Error: Permiso “aiplatform.metadataStores.get” denegado en el recurso “…europe-west4/metadataStores/default”.
Asegúrate de que la API de Compute Engine esté habilitada y de que se otorguen a la cuenta de servicio de Compute Engine predeterminada (PROJECT_NUM‑compute@developer.gserviceaccount.com
) los roles aiplatform.admin
y storage.objectAdmin
.
Para otorgar los roles aiplatform.admin
y storage.objectAdmin
a la cuenta de servicio de Compute Engine, haz lo siguiente:
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Si prefieres usar una terminal en tu máquina, instala y configura Google Cloud CLI.
Adjunta el rol
aiplatform.admin
a tu cuenta de servicio de Compute Engine mediante el comandogcloud projects add-iam-policy-binding
:Reemplaza lo siguiente:
PROJECT_ID
por el ID del proyecto de Google CloudPROJECT_NUM
por tu número de proyecto de Google Cloud
gcloud projects add-iam-policy-binding PROJECT_ID --member serviceAccount:PROJECT_NUM-compute@developer.gserviceaccount.com --role roles/aiplatform.admin
Adjunta el rol
storage.objectAdmin
a tu cuenta de servicio de Compute Engine mediante el comandogcloud projects add-iam-policy-binding
:PROJECT_ID
por el ID del proyecto de Google CloudPROJECT_NUM
por tu número de proyecto de Google Cloud
gcloud projects add-iam-policy-binding PROJECT_ID --member serviceAccount:PROJECT_NUM-compute@developer.gserviceaccount.com --role roles/storage.objectAdmin
Error: El agente de servicio de Vertex AI service-{project-number}@gcp-sa-aiplatform.iam.gserviceaccount.com no tiene permiso para acceder a los proyectos del repositorio de Artifact Registry/vertex-ai-restricted/locations/us/repositories/llm.
Este error de permiso se debe a una demora de propagación. Un reintento posterior debería resolver este error.
¿Qué sigue?
- Obtén información sobre cómo evaluar un modelo ajustado.
- Obtén información sobre cómo ajustar un modelo de base con el ajuste RLHF.
- Obtén información sobre cómo ajustar un modelo de base.