En esta página, se muestra cómo ajustar el modelo de incorporación de texto, textembedding-gecko
y textembedding-gecko-multilingual
. Estos modelos de base se entrenaron con un gran conjunto de datos de texto públicos. Si tienes un caso de uso único que requiere tus propios datos de entrenamiento específicos, puedes usar el ajuste de modelos.
Después de ajustar un modelo de incorporación de base, el modelo se debe adaptar a tu caso práctico.
El ajuste es compatible con las versiones estables del modelo de incorporación de texto.
Los modelos de incorporación de texto admiten el ajuste supervisado. El ajuste supervisado usa ejemplos etiquetados que demuestran el tipo de resultado que deseas en tu modelo de incorporación de texto durante la inferencia. Los modelos de incorporación de texto no admiten el ajuste mediante el aprendizaje por refuerzo con retroalimentación humana (RLHF).
Para obtener más información sobre el ajuste de modelos, consulta Cómo funciona el ajuste de modelos.
Mejora de calidad esperada
Vertex AI usa un método de ajuste eficiente de parámetros para la personalización. Esta metodología muestra mejoras significativas en calidad de hasta el 41% (promedio 12%) en experimentos realizados en conjuntos de datos comparativos de recuperación pública.
Caso de uso para ajustar un modelo de incorporación
Ajustar un modelo de incorporaciones de texto puede permitir que tu modelo se adapte a las incorporaciones a un dominio o una tarea específicos. Esto puede ser útil si el modelo de incorporaciones previamente entrenado no se adapta a tus necesidades específicas. Por ejemplo, puedes ajustar un modelo de incorporaciones en un conjunto de datos específico de tickets de asistencia al cliente para tu empresa. Esto podría ayudar a un chatbot a comprender los diferentes tipos de problemas de asistencia al cliente que suelen tener tus clientes y poder responder sus preguntas de manera más eficaz. Sin el ajuste, el modelo no conoce los detalles de los tickets de asistencia al cliente o las soluciones a problemas específicos del producto.
Flujo de trabajo de ajuste
El flujo de trabajo de ajuste de modelos en Vertex AI para textembedding-gecko
y textembedding-gecko-multilingual
es el siguiente:
- Prepara tu conjunto de datos de ajuste de modelos.
- Sube el conjunto de datos de ajuste de modelos a un bucket de Cloud Storage.
- Configura tu proyecto para Vertex AI Pipelines.
- Crea un trabajo de ajuste de modelos.
- Implementa el modelo ajustado en un extremo de Vertex AI del mismo nombre. A diferencia de los trabajos de ajuste de modelos de texto o Codey, un trabajo de ajuste de incorporación de texto no implementa tus modelos ajustados en un extremo de Vertex AI.
Prepara tu conjunto de datos de incorporaciones
El conjunto de datos que se usa para ajustar un modelo de incorporaciones incluye datos que se alinean con la tarea que deseas que realice el modelo.
Formato del conjunto de datos para ajustar un modelo de incorporaciones
El conjunto de datos de entrenamiento consta de los siguientes archivos, que deben estar en Cloud Storage. La ruta de acceso de los archivos se define mediante parámetros cuando se inicia la canalización de ajuste. Los tres tipos de archivos son el archivo de corpus, el archivo de consulta y las etiquetas. Solo se necesitan etiquetas de entrenamiento, pero también puedes proporcionar etiquetas de validación y de prueba para un mayor control.
Archivo de corpus: La ruta de acceso se define mediante el parámetro
corpus_path
. Es un archivo JSONL en el que cada línea tiene los campos_id
,title
ytext
con valores de string._id
ytext
son obligatorios, mientras quetitle
es opcional. A continuación, se muestra un archivocorpus.jsonl
de ejemplo:{"_id": "doc1", "title": "Get an introduction to generative AI on Vertex AI", "text": "Vertex AI's Generative AI Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Generative AI Studio to test models using prompt samples, design and save prompts, tune a foundation model, and convert between speech and text."} {"_id": "doc2", "title": "Use gen AI for summarization, classification, and extraction", "text": "Learn how to create text prompts for handling any number of tasks with Vertex AI's generative AI support. Some of the most common tasks are classification, summarization, and extraction. Vertex AI's PaLM API for text lets you design prompts with flexibility in terms of their structure and format."} {"_id": "doc3", "title": "Custom ML training overview and documentation", "text": "Get an overview of the custom training workflow in Vertex AI, the benefits of custom training, and the various training options that are available. This page also details every step involved in the ML training workflow from preparing data to predictions."} {"_id": "doc4", "text": "Text embeddings are useful for clustering, information retrieval, retrieval-augmented generation (RAG), and more."} {"_id": "doc5", "title": "Text embedding tuning", "text": "Google's text embedding models can be tuned on Vertex AI."}
Archivo de consulta: El archivo de consulta contiene tus consultas de ejemplo. La ruta de acceso se define mediante el parámetro
queries_path
. El archivo de consulta está en formato JSONL y tiene los mismos campos que el archivo de corpus. A continuación, se muestra un archivoqueries.jsonl
de ejemplo:{"_id": "query1", "text": "Does Vertex support generative AI?"} {"_id": "query2", "text": "What can I do with Vertex GenAI offerings?"} {"_id": "query3", "text": "How do I train my models using Vertex?"} {"_id": "query4", "text": "What is a text embedding?"} {"_id": "query5", "text": "Can text embedding models be tuned on Vertex?"} {"_id": "query6", "text": "embeddings"} {"_id": "query7", "text": "embeddings for rag"} {"_id": "query8", "text": "custom model training"} {"_id": "query9", "text": "Google Cloud PaLM API"}
Etiquetas de entrenamiento: La ruta de acceso se define con el parámetro
train_label_path
. El valor de training_label_path es el URI de Cloud Storage que dirige a la ubicación de los datos de la etiqueta de entrenamiento y se especifica cuando creas el trabajo de ajuste. Las etiquetas deben ser un archivo TSV con un encabezado. Se debe incluir un subconjunto de las consultas y el corpus en el archivo de etiquetas de entrenamiento. El archivo debe tener las columnasquery-id
,corpus-id
yscore
.query-id
es una string que coincide con la clave_id
del archivo de consulta,corpus-id
es una string que coincide con_id
en el archivo de corpus.Score
es un valor de número entero no negativo. Cualquier puntuación mayor que cero indica que el documento está relacionado con la consulta. Los números más grandes indican un nivel de relevancia mayor. Si se omite la puntuación, el valor predeterminado es 1. A continuación, se muestra un archivotrain_labels.tsv
de ejemplo:query-id corpus-id score query1 doc1 1 query2 doc2 1 query3 doc3 2 query3 doc5 1 query4 doc4 1 query4 doc5 1 query5 doc5 2 query6 doc4 1 query6 doc5 1 query7 doc4 1 query8 doc3 1 query9 doc2 1
Etiquetas de prueba: Opcional. Las etiquetas de prueba tienen el mismo formato que las etiquetas de entrenamiento y se especifican mediante el parámetro
test_label_path
. Si no se proporciona untest_label_path
, las etiquetas de prueba se dividirán de forma automática a partir de las etiquetas de entrenamiento.Etiquetas de validación: Opcional. Las etiquetas de validación tienen el mismo formato que las etiquetas de entrenamiento y se especifican mediante el parámetro
validation_label_path
. Si no se proporciona unvalidation_label_path
, las etiquetas de validación se dividirán de forma automática a partir de las etiquetas de entrenamiento.
Requisitos de tamaño del conjunto de datos
Los archivos de conjuntos de datos proporcionados deben cumplir con las siguientes restricciones:
La cantidad de consultas debe ser entre 9 y 40,000.
La cantidad de documentos del corpus debe ser entre 9 y 500,000.
Cada archivo de etiquetas de conjuntos de datos debe incluir al menos 3 IDs de consulta y, en todas las divisiones de conjuntos de datos, debe haber al menos 9 IDs de consulta.
La cantidad total de etiquetas debe ser inferior a 500,000.
Configura tu proyecto para Vertex AI Pipelines
El ajuste se ejecuta en tu proyecto con la plataforma Vertex AI Pipelines.
Configurar permisos
La canalización ejecuta el código de entrenamiento en dos cuentas de servicio administradas por Google. Estas cuentas deben configurarse con ciertos permisos para comenzar el entrenamiento con tu proyecto y conjunto de datos.
Cuenta de servicio predeterminada de Compute Engine
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Esta cuenta de servicio requiere lo siguiente:
Acceso de
Storage Object Viewer
a cada archivo de conjunto de datos que creaste en Cloud Storage.Acceso de
Storage Object User
al directorio de salida de Cloud Storage de tu canalización, PIPELINE_OUTPUT_DIRECTORY.Acceso de
Vertex AI User
a tu proyecto.
En lugar de la cuenta de servicio predeterminada de Compute Engine, puedes especificar una cuenta de servicio personalizada. Para obtener más información, consulta Configura una cuenta de servicio con permisos detallados.
Agente de servicio de ajuste de Vertex AI
service-PROJECT_NUMBER@gcp-sa-aiplatform-ft.iam.gserviceaccount.com
Esta cuenta de servicio requiere lo siguiente:
Acceso de
Storage Object Viewer
a cada archivo de conjunto de datos que creaste en Cloud Storage.Acceso de
Storage Object User
al directorio de salida de Cloud Storage de tu canalización, PIPELINE_OUTPUT_DIRECTORY.
Si deseas obtener más información para configurar los permisos del conjunto de datos de Cloud Storage, consulta Configura un bucket de Cloud Storage para artefactos de canalización.
Uso de aceleradores
El ajuste requiere aceleradores de GPU. Cualquiera de los siguientes aceleradores se puede usar para la canalización de ajuste de incorporación de texto:
NVIDIA_L4
NVIDIA_TESLA_A100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
NVIDIA_TESLA_P100
Iniciar un trabajo de ajuste requiere una cuota de Restricted image training GPUs
adecuada para el tipo de acelerador y la región que seleccionaste, por ejemplo, Restricted image training Nvidia V100 GPUs per region
. Para aumentar la cuota de tu proyecto, consulta cómo solicitar una cuota adicional.
No todos los aceleradores están disponibles en todas las regiones. Consulta Usa aceleradores en Vertex AI para obtener más información.
Crea un trabajo de ajuste de modelos de incorporación
Puedes crear un trabajo de ajuste de modelos de incorporación con la consola de Google Cloud o la API de REST.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
DISPLAY_NAME
: Un nombre visible para el pipelineJob.PIPELINE_OUTPUT_DIRECTORY
: Ruta de acceso para los artefactos de salida de la canalización, que comienza con “gs://”.PROJECT_ID
es el ID del proyecto de Google Cloud.LOCATION
: la región del proyecto de Google Cloud para ejecutar la canalización. El ajuste se admite en cualquier región en la que tu proyecto tenga una cuota de GPU adecuada. Consulta Usa aceleradores para obtener más información. Debido a que los recursos de entrega pueden estar limitados en otras regiones, se recomiendaus-central1
.QUERIES_PATH
: El URI del bucket de Cloud Storage que almacena datos de consulta, que comienza con “gs://”.CORPUS_PATH
: Es el URI de Cloud Storage para los datos del corpus, que comienza con “gs://”.TRAIN_LABEL_PATH
: Es el URI de Cloud Storage de la ubicación de los datos de la etiqueta de entrenamiento, que comienza con “gs://”.TEST_LABEL_PATH
: Opcional El URI de Cloud Storage de la ubicación de los datos de la etiqueta de prueba, que comienza con “gs://”. Si pasas una cadena vacía, la canalización dividirá automáticamente el conjunto de datos de prueba del conjunto de datos de entrenamiento.VALIDATION_LABEL_PATH
: Opcional El URI de Cloud Storage de la ubicación de los datos de la etiqueta de validación, que comienza con “gs://”. Si pasas una cadena vacía, la canalización dividirá automáticamente el conjunto de datos de validación del conjunto de datos de entrenamiento.ACCELERATOR_TYPE
: Opcional El tipo de acelerador de datos que se usará para el entrenamiento. La configuración predeterminada esNVIDIA_TESLA_V100
. Para obtener valores posibles, consulta Usa aceleradores.ACCELERATOR_COUNT
: Opcional La cantidad de aceleradores que se usarán en el entrenamiento. Usar una cantidad mayor de aceleradores puede hacer que el entrenamiento sea más rápido, pero no afecta la calidad. La configuración predeterminada es 4.MACHINE_TYPE
: Opcional El tipo de máquina que se usará para el entrenamiento. La configuración predeterminada esn1-standard-16
. Para obtener información sobre cómo seleccionar el tipo de máquina que coincide con el tipo de acelerador y el recuento que seleccionaste, consulta Plataformas de GPU.BASE_MODEL_VERSION_ID
: Opcional Usa esto para especificar qué modelo de incorporación de texto se va a ajustar. La configuración predeterminada estextembedding-gecko@001
. Para obtener valores posibles, consulta Versiones estables.MODEL_DISPLAY_NAME
: Opcional El nombre visible del modelo ajustado cuando aparece en Model Registry. La configuración predeterminada es “tuned-text-embedding-model”.TASK_TYPE
: Opcional Establecer este parámetro optimiza el modelo ajustado para una tarea descendente específica. La configuración predeterminada esDEFAULT
. Para obtener más información, consulta Obtén incorporaciones de texto.BATCH_SIZE
: Opcional El tamaño del lote de entrenamiento. La configuración predeterminada es 128.TRAIN_STEPS
: Opcional La cantidad de pasos para realizar el ajuste del modelo. La configuración predeterminada es 1, 000 y debe ser mayor que 30.OUTPUT_DIMENSIONALITY
: Opcional Un número entero entre 1 y 768. Esto determina la dimensionalidad de salida (tamaño del vector) del modelo ajustado. Un valor de -1 indica que se usará el tamaño de incorporación completo del modelo base. Solo es compatible con los modelostext-embedding-004
ytext-multilingual-embedding-002
.LR_MULTIPLIER
: Opcional Un multiplicador para aplicar a la tasa de aprendizaje durante el entrenamiento. La configuración predeterminada es 1.0, que se entrena con una tasa de aprendizaje recomendada.CMEK_KEY_NAME
: Opcional El nombre de la CMEK Clave de encriptación administrada por el cliente que se usará para escribir todos los recursos de ajuste, como el modelo ajustado y los datos de la canalización de salida.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs
Cuerpo JSON de la solicitud:
{ "displayName": "DISPLAY_NAME", "runtimeConfig": { "gcsOutputDirectory": "PIPELINE_OUTPUT_DIRECTORY", "parameterValues": { "queries_path": "QUERIES_PATH", "corpus_path": "CORPUS_PATH", "train_label_path": "TRAIN_LABEL_PATH", "test_label_path": "TEST_LABEL_PATH", "validation_label_path": "VALIDATION_LABEL_PATH", "accelerator_type": "ACCELERATOR_TYPE", "accelerator_count": "ACCELERATOR_COUNT", "machine_type": "MACHINE_TYPE", "base_model_version_id": "BASE_MODEL_VERSION_ID", "model_display_name": "MODEL_DISPLAY_NAME", "task_type": "TASK_TYPE", "batch_size": "BATCH_SIZE", "train_steps": "TRAIN_STEPS", "output_dimensionality": "OUTPUT_DIMENSIONALITY", "learning_rate_multiplier": "LR_MULTIPLIER", "encryption_spec_key_name": "CMEK_KEY_NAME" } }, "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.3", "encryptionSpec": { "kmsKeyName": "CMEK_KEY_NAME" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Después de iniciar la canalización, sigue el progreso del trabajo de ajuste a través de la consola de Google Cloud.
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.
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.
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.
Console
Para ajustar un modelo de incorporación de texto con la consola de Google Cloud, puedes iniciar una canalización de personalización a través de los siguientes pasos:
- En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Pipelines.
- Haz clic en Crear ejecución para abrir el panel Crear una ejecución de canalización.
- Haz clic en Seleccionar de canalizaciones existentes y, a continuación, ingresa los siguientes detalles:
- Selecciona "ml-pipeline" en el menú desplegable Select a resource.
- Selecciona "llm-text-embedding" en el menú desplegable Repositorio.
- Selecciona "tune-text-embedding-model" en el menú desplegable Canalización o componente.
- Selecciona la versión con la etiqueta "v1.1.3" en el menú desplegable Versión.
- Especifica un nombre de ejecución para identificar de manera única la ejecución de la canalización.
- En la lista desplegable Región, selecciona la región para crear la ejecución de la canalización, que será la misma región en la que se crea el modelo ajustado.
- Haz clic en Continuar. Aparecerá el panel Configuración del entorno de ejecución.
- En Ubicación de Cloud Storage, haz clic en Explorar para seleccionar el bucket de Cloud Storage para almacenar los artefactos de salida de la canalización y, luego, haz clic en Seleccionar.
- En Parámetros de canalización, especifica los parámetros para la canalización de ajuste. Los tres parámetros necesarios son
corpus_path
,queries_path
ytrain_label_path
, con los formatos que se describen en Prepara el conjunto de datos de incorporaciones. Para obtener información más detallada sobre cada parámetro, consulta la pestaña REST de esta sección. - Haz clic en Submit para crear la ejecución de la canalización.
Ejemplo del comando curl
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
BASE_MODEL_VERSION_ID=BASE_MODEL_VERSION_ID
PIPELINE_OUTPUT_DIRECTORY=PIPELINE_OUTPUT_DIRECTORY
QUERIES_PATH=QUERIES_PATH
CORPUS_PATH=CORPUS_PATH
TRAIN_LABEL_PATH=TRAIN_LABEL_PATH
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/pipelineJobs?pipelineJobId=tune-text-embedding-$(date +%Y%m%d%H%M%S)" \
-d '{
"displayName": "tune-text-embedding-model",
"runtimeConfig": {
"gcsOutputDirectory": "'${PIPELINE_OUTPUT_DIRECTORY}'",
"parameterValues": {
"base_model_version_id": "'${BASE_MODEL_VERSION_ID}'",
"queries_path": "'${QUERIES_PATH}'",
"corpus_path": "'${CORPUS_PATH}'",
"train_label_path": "'${TRAIN_LABEL_PATH}'"
}
},
"templateUri": "https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.3",
}'
Usa tu modelo ajustado
Visualiza modelos ajustados en Model Registry
Cuando se completa el trabajo de ajuste, el modelo ajustado no se implementa en un extremo. Estará disponible como un recurso del modelo en Model Registry. Puedes ver una lista de modelos en tu proyecto actual, incluidos los modelos ajustados con la consola de Google Cloud.
Para ver tus modelos ajustados en la consola de Google Cloud, ve a la página Registro de modelos de Vertex AI.
Ir a Registro de modelos de Vertex AI
Implementa tu modelo
Luego de ajustar el modelo de incorporaciones, debes implementar el recurso Modelo. Para implementar tu modelo de incorporaciones ajustadas, consulta Implementa un modelo en un extremo.
A diferencia de los modelos base, el usuario administra los modelos de incorporación de texto ajustados.
Esto incluye la administración de recursos de entrega, como el tipo de máquina y los aceleradores.
A fin de evitar errores de memoria insuficiente durante la predicción, se recomienda que realices la implementación con el tipo de GPU NVIDIA_TESLA_A100
, que puede admitir tamaños de lote de hasta 5 para cualquier longitud de entrada.
Al igual que el modelo de base textembedding-gecko
, el modelo ajustado admite hasta 3,072 tokens y puede truncar las entradas más largas.
Obtén predicciones en un modelo implementado
Una vez que se implementa el modelo ajustado, puedes usar uno de los siguientes comandos para emitir solicitudes al extremo del modelo ajustado.
Comandos curl de ejemplo para modelos textembedding-gecko@001
ajustados
Para obtener predicciones de una versión ajustada de textembedding-gecko@001
, usa el comando curl de ejemplo a continuación.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
-d '{
"instances": [
{
"content": "Dining in New York City"
},
{
"content": "Best resorts on the east coast"
}
]
}'
Comandos curl de ejemplo para modelos no textembedding-gecko@001
Las versiones ajustadas de otros modelos (por ejemplo, textembedding-gecko@003
y textembedding-gecko-multilingual@001
) requieren 2 entradas adicionales: task_type
y title
.
Puedes encontrar más documentación sobre estos parámetros en el comando curl.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
-d '{
"instances": [
{
"content": "Dining in New York City",
"task_type": "DEFAULT",
"title": ""
},
{
"content": "There are many resorts to choose from on the East coast...",
"task_type": "RETRIEVAL_DOCUMENT",
"title": "East Coast Resorts"
}
]
}'
Resultado de ejemplo
Este resultado se aplica a los modelos textembedding-gecko
y textembedding-gecko-multilingual
, sin importar la versión.
{
"predictions": [
[ ... ],
[ ... ],
...
],
"deployedModelId": "...",
"model": "projects/.../locations/.../models/...",
"modelDisplayName": "tuned-text-embedding-model",
"modelVersionId": "1"
}
¿Qué sigue?
- Obtén información para ajustar un modelo de base.
- Obtén información sobre las prácticas recomendadas de IA responsable y los filtros de seguridad de Vertex AI.