En este documento se describe cómo ajustar un modelo LLM de traducción mediante el ajuste fino supervisado.
Antes de empezar
Antes de empezar, debe preparar un conjunto de datos de ajuste fino supervisado. Los requisitos varían en función del caso práctico.
- Preparar un conjunto de datos de texto para el ajuste: Ajuste de texto
Modelos admitidos
translation-llm-002
(En la versión preliminar, solo se admite el ajuste de texto)
Crear una tarea de ajuste
Puedes crear un trabajo de ajuste fino supervisado mediante la API REST o el SDK de Vertex AI para Python.
REST
Para crear un trabajo de ajuste de un modelo, envía una solicitud POST mediante el método tuningJobs.create
. Algunos parámetros no son compatibles con todos los modelos. Asegúrate de incluir solo los parámetros aplicables al modelo que estés ajustando.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto.
- TUNING_JOB_REGION: la región en la que se ejecuta el trabajo de ajuste. También es la región predeterminada en la que se sube el modelo ajustado. Región admitida:
us-central1
. - BASE_MODEL: nombre del modelo de traducción que se va a optimizar. Valores admitidos:
translation-llm-002
. - TRAINING_DATASET_URI: URI de Cloud Storage de tu conjunto de datos de entrenamiento. El conjunto de datos debe tener el formato de un archivo JSONL. Para obtener los mejores resultados, proporcione entre 100 y 500 ejemplos. Para obtener más información, consulta el artículo Acerca del conjunto de datos de ajuste supervisado .
- VALIDATION_DATASET_URIOpcional: URI de Cloud Storage del archivo del conjunto de datos de validación.
- TUNED_MODEL_DISPLAYNAMEOpcional: nombre visible del modelo ajustado. Si no se define, se genera un nombre aleatorio.
Método HTTP y URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Cuerpo JSON de la solicitud:
{ "baseModel": "BASE_MODEL", "supervisedTuningSpec" : { "trainingDatasetUri": "TRAINING_DATASET_URI", "validationDatasetUri": "VALIDATION_DATASET_URI", }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME" }
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente.
Comando curl de ejemplo
PROJECT_ID=myproject
LOCATION=us-central1
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}/tuningJobs" \
-d \
$'{
"baseModel": "translation-llm-002",
"supervisedTuningSpec" : {
"training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_translation_llm"
}'
Python
from vertexai.generative_models import GenerativeModel
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))
import time
import vertexai
from vertexai.tuning import sft
# TODO(developer): Update and un-comment below line.
# PROJECT_ID = os.environ["GOOGLE_CLOUD_PROJECT"]
vertexai.init(project=PROJECT_ID, location="us-central1")
sft_tuning_job = sft.train(
source_model="translation-llm-002",
train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_train_data.jsonl",
# The following parameters are optional
validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_validation_data.jsonl",
tuned_model_display_name="tuned_translation_llm_002",
)
# Polling for job completion
while not sft_tuning_job.has_ended:
time.sleep(60)
sft_tuning_job.refresh()
print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# <google.cloud.aiplatform.metadata.experiment_resources.Experiment object at 0x7b5b4ae07af0>
Ver una lista de trabajos de ajuste
Puedes ver una lista de las tareas de ajuste de tu proyecto actual mediante la Google Cloud consola Google Cloud , el SDK de Vertex AI para Python o enviando una solicitud GET con el método tuningJobs
.
REST
Para ver una lista de tareas de ajuste de modelos, envía una solicitud GET mediante el método tuningJobs.list
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto.
- TUNING_JOB_REGION: la región en la que se ejecuta el trabajo de ajuste. También es la región predeterminada en la que se sube el modelo ajustado.
Método HTTP y URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente.
Python
Consola
Para ver tus tareas de ajuste en la Google Cloud consola, ve a la página Vertex AI Studio.
Tus tareas de ajuste de LLM de traducción se muestran en la tabla de la sección Modelos ajustados de LLM de traducción.
Obtener los detalles de una tarea de ajuste
Puedes obtener los detalles de una tarea de ajuste en tu proyecto actual
mediante la consola de Google Cloud , el SDK de Vertex AI para Python o enviando una solicitud GET
con el método tuningJobs
.
REST
Para ver una lista de tareas de ajuste de modelos, envía una solicitud GET mediante el método tuningJobs.get
y especifica el TuningJob_ID
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: .
- TUNING_JOB_REGION: la región en la que se ejecuta el trabajo de ajuste. También es la región predeterminada en la que se sube el modelo ajustado.
- TUNING_JOB_ID: ID del trabajo de ajuste.
Método HTTP y URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"
PowerShell
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente.
Python
Consola
Para ver los detalles de un modelo ajustado en la Google Cloud consola, ve a la página Vertex AI Studio.
En la tabla Modelos ajustados de LLM de traducción, busca tu modelo y haz clic en Detalles.
Se muestran los detalles de tu modelo.
Cancelar una tarea de ajuste
Puedes cancelar una tarea de ajuste en tu proyecto actual mediante la Google Cloud consola,
el SDK de Vertex AI para Python o enviando una solicitud POST con el método tuningJobs
.
REST
Para ver una lista de tareas de ajuste de modelos, envía una solicitud GET mediante el método tuningJobs.cancel
y especifica el TuningJob_ID
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: .
- TUNING_JOB_REGION: la región en la que se ejecuta el trabajo de ajuste. También es la región predeterminada en la que se sube el modelo ajustado.
- TUNING_JOB_ID: ID del trabajo de ajuste.
Método HTTP y URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"
PowerShell
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente.
Python
Consola
Para cancelar una tarea de ajuste en la Google Cloud consola, ve a la página Vertex AI Studio.
En la tabla Modelos ajustados de traducción, haga clic en
Gestionar ejecución.Haz clic en Cancelar.
Probar el modelo ajustado con una petición
Puedes probar una tarea de ajuste en tu proyecto actual usando el SDK de Vertex AI para Python o enviando una solicitud POST con el método tuningJobs
.
En el siguiente ejemplo, se le pide a un modelo que responda a la pregunta "¿Por qué el cielo es azul?".
REST
Para probar un modelo ajustado con una petición, envía una solicitud POST y especifica el TUNED_ENDPOINT_ID
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: .
- TUNING_JOB_REGION: la región en la que se ejecuta el trabajo de ajuste. También es la región predeterminada en la que se sube el modelo ajustado.
- ENDPOINT_ID: el ID del endpoint del modelo ajustado de la API GET.
Método HTTP y URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent
Cuerpo JSON de la solicitud:
{ "contents": [ { "role": "USER", "parts": { "text" : "English: Hello. Spanish:" } } ], }
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent"
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://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente.
Python
from vertexai.generative_models import GenerativeModel
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))
Métricas de ajuste y validación
Puedes configurar una tarea de ajuste de modelos para recoger y generar informes sobre las métricas de ajuste y evaluación de modelos, que se pueden visualizar en Vertex AI Studio.
Para ver los detalles de un modelo ajustado en la Google Cloud consola, ve a la página Vertex AI Studio.
En la tabla Afinar y destilar, haga clic en el nombre del modelo ajustado del que quiera ver las métricas.
Las métricas de ajuste aparecen en la pestaña Monitor.
Métricas de ajuste de modelos
El trabajo de ajuste del modelo recoge automáticamente las siguientes métricas de ajuste de translation-llm-002
.
/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 consta de una secuencia de tokens. Esta métrica mide la precisión de los tokens predichos en comparación con la verdad fundamental del conjunto de datos de ajuste./train_num_predictions:
Número de tokens predichos en un paso de entrenamiento.
Métricas de validación del modelo:
Puede configurar un trabajo de ajuste de un modelo para recoger las siguientes métricas de validación de translation-llm-002
.
/eval_total_loss
: pérdida del conjunto de datos de validación en un paso de validación./eval_fraction_of_correct_next_step_preds
: la precisión del token en un paso de validación. Una predicción consta de una secuencia de tokens. Esta métrica mide la precisión de los tokens predichos en comparación con los datos verificados del conjunto de datos de validación./eval_num_predictions
: número de tokens previstos en un paso de validación.
Las visualizaciones de métricas están disponibles después de que se inicie el trabajo de ajuste. Se actualizará en tiempo real a medida que avance la optimización. Si no especifica un conjunto de datos de validación al crear el trabajo de ajuste, solo estarán disponibles las visualizaciones de las métricas de ajuste.
Siguientes pasos
- Para saber cómo se puede usar el ajuste fino supervisado en una solución que cree una base de conocimientos de IA generativa, consulta Solución de inicio rápido: base de conocimientos de IA generativa.