Ajuste os modelos de MDLs de tradução usando o ajuste supervisionado

Este documento descreve como ajustar um modelo de LLM de tradução através do ajuste preciso supervisionado.

Antes de começar

Antes de começar, tem de preparar um conjunto de dados de ajuste fino supervisionado. Existem requisitos diferentes consoante o seu exemplo de utilização.

Modelos suportados

  • translation-llm-002 (Na pré-visualização, só suporta o ajuste de texto)

Crie uma tarefa de ajuste

Pode criar uma tarefa de ajuste fino supervisionado através da API REST ou do SDK Vertex AI para Python.

REST

Para criar uma tarefa de ajuste de modelos, envie um pedido POST através do método tuningJobs.create. Alguns dos parâmetros não são suportados por todos os modelos. Certifique-se de que inclui apenas os parâmetros aplicáveis para o modelo que está a ajustar.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o seu ID do projeto.
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado. Região suportada: us-central1.
  • BASE_MODEL: nome do modelo de tradução a otimizar. Valores suportados: translation-llm-002.
  • TRAINING_DATASET_URI: URI do Cloud Storage do seu conjunto de dados de preparação. O conjunto de dados tem de estar formatado como um ficheiro JSONL. Para ter os melhores resultados, forneça, pelo menos, 100 a 500 exemplos. Para mais informações, consulte o artigo Acerca do conjunto de dados de ajuste supervisionado .
  • VALIDATION_DATASET_URIOpcional: o URI do Cloud Storage do ficheiro do conjunto de dados de validação.
  • TUNED_MODEL_DISPLAYNAMEOpcional: um nome a apresentar para o modelo otimizado. Se não for definido, é gerado um nome aleatório.

Método HTTP e URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Corpo JSON do pedido:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME"
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Deve receber uma resposta JSON semelhante à seguinte.

Comando curl de exemplo

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>

Veja uma lista de tarefas de otimização

Pode ver uma lista de tarefas de otimização no seu projeto atual através da Google Cloud consola, do SDK Vertex AI para Python ou enviando um pedido GET através do método tuningJobs.

REST

Para ver uma lista de tarefas de ajuste de modelos, envie um pedido GET através do método tuningJobs.list.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o seu ID do projeto.
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.

Método HTTP e URL:

GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

Execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte.

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 as tarefas de otimização na Google Cloud consola, aceda à página do Vertex AI Studio.

Aceda ao Vertex AI Studio

As tarefas de otimização do MDG de tradução são apresentadas na tabela na secção Modelos otimizados do MDG de tradução.

Veja detalhes de uma tarefa de ajuste

Pode obter os detalhes de uma tarefa de otimização no seu projeto atual através da Google Cloud consola, do SDK Vertex AI para Python ou enviando um pedido GET através do método tuningJobs.

REST

Para ver uma lista de tarefas de ajuste de modelos, envie um pedido GET através do método tuningJobs.get e especifique o TuningJob_ID.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.
  • TUNING_JOB_ID: o ID da tarefa de otimização.

Método HTTP e URL:

GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

Execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte.

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 detalhes de um modelo otimizado na Google Cloud consola, aceda à página do Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Na tabela Modelos otimizados de MDIs de tradução, encontre o seu modelo e clique em Detalhes.

    São apresentados os detalhes do seu modelo.

Cancele uma tarefa de otimização

Pode cancelar uma tarefa de otimização no seu projeto atual através da Google Cloud consola, do SDK Vertex AI para Python ou enviando um pedido POST através do método tuningJobs.

REST

Para ver uma lista de tarefas de ajuste de modelos, envie um pedido GET através do método tuningJobs.cancel e especifique o TuningJob_ID.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: a região onde a tarefa de otimização é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.
  • TUNING_JOB_ID: o ID da tarefa de otimização.

Método HTTP e URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

Execute o seguinte comando:

$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

Deve receber uma resposta JSON semelhante à seguinte.

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 uma tarefa de otimização na Google Cloud consola, aceda à página do Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Na tabela Modelos otimizados para tradução, clique em Gerir execução.

  3. Clique em Cancelar.

Teste o modelo otimizado com um comando

Pode testar uma tarefa de otimização no seu projeto atual através do SDK Vertex AI para Python ou enviando um pedido POST através do método tuningJobs.

O exemplo seguinte envia um comando a um modelo com a pergunta "Porque é que o céu é azul?".

REST

Para testar um modelo otimizado com um comando, envie um pedido POST e especifique o TUNED_ENDPOINT_ID.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • TUNING_JOB_REGION: a região onde a tarefa de ajuste é executada. Esta é também a região predefinida para onde o modelo otimizado é carregado.
  • ENDPOINT_ID: o ID do ponto final do modelo otimizado da API GET.

Método HTTP e URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent

Corpo JSON do pedido:

{
    "contents": [
        {
            "role": "USER",
            "parts": {
                "text" : "English: Hello. Spanish:"
            }
        }
    ],
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Deve receber uma resposta JSON semelhante à seguinte.

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 aperfeiçoamento e validação

Pode configurar uma tarefa de ajuste de modelos para recolher e comunicar métricas de ajuste de modelos e avaliação de modelos, que podem ser visualizadas no Vertex AI Studio.

  1. Para ver detalhes de um modelo otimizado na Google Cloud consola, aceda à página do Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Na tabela Ajustar e refinar, clique no nome do modelo ajustado para o qual quer ver as métricas.

    As métricas de otimização aparecem no separador Monitorizar.

Métricas de aperfeiçoamento de modelos

A tarefa de otimização recolhe automaticamente as seguintes métricas de otimização para translation-llm-002.

  • /train_total_loss: perda para o conjunto de dados de ajuste num passo de preparação.
  • /train_fraction_of_correct_next_step_preds: a precisão do token num passo de preparação. Uma única previsão consiste numa sequência de tokens. Esta métrica mede a precisão dos tokens previstos quando comparados com a verdade fundamental no conjunto de dados de ajuste.
  • /train_num_predictions: Número de tokens previstos num passo de preparação.

Métricas de validação do modelo:

Pode configurar uma tarefa de ajuste do modelo para recolher as seguintes métricas de validação para translation-llm-002.

  • /eval_total_loss: perda para o conjunto de dados de validação num passo de validação.
  • /eval_fraction_of_correct_next_step_preds: a precisão do token num passo de validação. Uma única previsão consiste numa sequência de tokens. Esta métrica mede a precisão dos tokens previstos quando comparados com a verdade fundamental no conjunto de dados de validação.
  • /eval_num_predictions: número de tokens previstos num passo de validação.

As visualizações das métricas estão disponíveis após o início da execução da tarefa de otimização. É atualizado em tempo real à medida que a otimização progride. Se não especificar um conjunto de dados de validação quando criar a tarefa de ajuste, apenas as visualizações das métricas de ajuste estão disponíveis.

O que se segue?