Ajustar modelos LLM de traducción mediante el ajuste fino supervisado

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.

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

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7c85287b2680>
# resource name: projects/12345678/locations/us-central1/tuningJobs/123456789012345

Consola

Para ver tus tareas de ajuste en la Google Cloud consola, ve a la página Vertex AI Studio.

Ve a 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

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
response = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)

print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7cc4bb20baf0>
# resource name: projects/1234567890/locations/us-central1/tuningJobs/4982013113894174720

Consola

  1. Para ver los detalles de un modelo ajustado en la Google Cloud consola, ve a la página Vertex AI Studio.

    Ve a Vertex AI Studio.

  2. 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

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
job = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)
job.cancel()

Consola

  1. Para cancelar una tarea de ajuste en la Google Cloud consola, ve a la página Vertex AI Studio.

    Ve a Vertex AI Studio.

  2. En la tabla Modelos ajustados de traducción, haga clic en Gestionar ejecución.

  3. 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.

  1. Para ver los detalles de un modelo ajustado en la Google Cloud consola, ve a la página Vertex AI Studio.

    Ve a Vertex AI Studio.

  2. 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