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.
- Prepare um conjunto de dados de texto para a otimização: otimização de texto
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
Consola
Para ver as tarefas de otimização na Google Cloud consola, aceda à página do 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
Consola
Para ver detalhes de um modelo otimizado na Google Cloud consola, aceda à página do Vertex AI Studio.
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
Consola
Para cancelar uma tarefa de otimização na Google Cloud consola, aceda à página do Vertex AI Studio.
Na tabela Modelos otimizados para tradução, clique em
Gerir execução.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.
Para ver detalhes de um modelo otimizado na Google Cloud consola, aceda à página do Vertex AI Studio.
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?
- Para saber como a otimização precisa supervisionada pode ser usada numa solução que cria uma base de conhecimentos de IA generativa, consulte o artigo Solução de arranque rápido: base de conhecimentos de IA generativa.