Neste documento, descrevemos como ajustar um modelo de LLM de tradução usando o ajuste supervisionado.
Antes de começar
Antes de começar, prepare um conjunto de dados de ajuste de detalhes supervisionado. Dependendo do caso de uso, há requisitos diferentes.
- Prepare um conjunto de dados de texto para ajuste: Ajuste de texto
Modelos compatíveis
translation-llm-002
(na visualização, só oferece suporte ao ajuste de texto)
Criar um modelo de ajuste
É possível criar um job de ajuste supervisionado usando a API REST ou o SDK da Vertex AI para Python.
REST
Para criar um job de ajuste de modelo, envie uma solicitação POST usando o método
tuningJobs.create
. Alguns dos parâmetros não são compatíveis com todos os modelos. Inclua
apenas os parâmetros aplicáveis ao modelo que você está
ajustando.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido. Região com suporte:
us-central1
. - BASE_MODEL: nome do modelo de tradução a ser ajustado. Valores aceitos:
translation-llm-002
. - TRAINING_DATASET_URI: URI do Cloud Storage do conjunto de dados de treinamento. O conjunto de dados precisa estar formatado como um arquivo JSONL. Para melhores resultados, forneça pelo menos 100 a 500 exemplos. Para mais informações, consulte Sobre o conjunto de dados de ajuste supervisionado .
- VALIDATION_DATASET_URIOpcional: o URI do Cloud Storage do arquivo do conjunto de dados de validação.
- TUNED_MODEL_DISPLAYNAMEOpcional: um nome de exibição para o modelo ajustado. Se não for definido, um nome aleatório será gerado.
Método HTTP e URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Corpo JSON da solicitação:
{ "baseModel": "BASE_MODEL", "supervisedTuningSpec" : { "trainingDatasetUri": "TRAINING_DATASET_URI", "validationDatasetUri": "VALIDATION_DATASET_URI", }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME" }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a seguinte.
Exemplo de comando curl
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/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/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-1_5/text/sft_train_data.jsonl",
# The following parameters are optional
validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-1_5/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>
Confira uma lista de jobs de ajuste
É possível visualizar uma lista de jobs de ajuste no projeto atual usando o console do Google Cloud,
o SDK da Vertex AI para Python ou enviando uma solicitação GET usando o método tuningJobs
.
REST
Para consultar uma lista de jobs de ajuste de modelos, envie uma solicitação GET usando o
método tuningJobs.list
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.
Método HTTP e URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Para enviar a solicitação, 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
Você receberá uma resposta JSON semelhante a seguinte.
Python
Console
Para conferir os jobs de ajuste no console do Google Cloud, acesse a página do Vertex AI Studio.
Os jobs de ajuste do LLM de tradução estão listados na tabela na seção Modelos ajustados do LLM de tradução.
Detalhes de um job de ajuste
É possível receber os detalhes de um job de ajuste no projeto atual
usando o console do Google Cloud, o SDK da Vertex AI para Python ou enviando uma solicitação GET
com o método tuningJobs
.
REST
Para visualizar uma lista de jobs de ajuste de modelos, envie uma solicitação GET usando o
método tuningJobs.get
e especifique o TuningJob_ID
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.
- TUNING_JOB_ID: o ID do job de ajuste.
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 a solicitação, 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
Você receberá uma resposta JSON semelhante a seguinte.
Python
Console
Para visualizar os detalhes de um modelo ajustado no console do Google Cloud, acesse a página do Vertex AI Studio.
Na tabela Modelos ajustados do LLM de tradução, encontre seu modelo e clique em Detalhes.
Os detalhes do seu modelo serão mostrados.
Cancelar um job de ajuste
É possível cancelar um job de ajuste no projeto atual usando o console do Google Cloud,
o SDK da Vertex AI para Python ou enviando uma solicitação POST usando o método tuningJobs
.
REST
Para visualizar uma lista de jobs de ajuste de modelos, envie uma solicitação GET usando o
método tuningJobs.cancel
e especifique o TuningJob_ID
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.
- TUNING_JOB_ID: o ID do job de ajuste.
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 a solicitação, 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
Você receberá uma resposta JSON semelhante a seguinte.
Python
Console
Para cancelar um job de ajuste no console do Google Cloud, acesse a página do Vertex AI Studio.
Na tabela Modelos ajustados de tradução, clique em
Gerenciar execução.Clique em Cancelar.
Testar o modelo ajustado com um comando
É possível testar um job de ajuste no projeto atual usando o
SDK da Vertex AI para Python ou enviando uma solicitação POST usando o método
tuningJobs
.
O exemplo a seguir solicita a um modelo a pergunta "Por que o céu é azul?".
REST
Para testar um modelo ajustado com um comando, envie uma solicitação POST e
especifique o TUNED_ENDPOINT_ID
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.
- ENDPOINT_ID: o ID do endpoint do modelo ajustado 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 da solicitação:
{ "contents": [ { "role": "USER", "parts": { "text" : "English: Hello. Spanish:" } } ], }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a 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 ajuste e validação
É possível configurar um job de ajuste de modelo para coletar e relatar o ajuste e métricas de avaliação do modelo, que podem ser visualizadas Vertex AI Studio.
Para visualizar os detalhes de um modelo ajustado no console do Google Cloud, acesse a página do Vertex AI Studio.
Na tabela Ajustar e destilar, clique no nome do modelo ajustado. que você quer conferir.
As métricas de ajuste aparecem na guia Monitor.
Métricas de ajuste de modelos
O job de ajuste de modelo coleta automaticamente as seguintes métricas de ajuste
para translation-llm-002
.
/train_total_loss
: perda do conjunto de dados de ajuste em uma etapa de treinamento./train_fraction_of_correct_next_step_preds
: a precisão do token em uma etapa de treinamento. Uma única previsão consiste em uma sequência de tokens. Mede a precisão dos tokens previstos quando comparados às informações empíricas no conjunto de dados de ajuste./train_num_predictions:
Número de tokens previstos em uma etapa de treinamento.
Métricas de validação do modelo:
É possível configurar um job de ajuste de modelos para coletar as seguintes métricas de validação
para translation-llm-002
.
/eval_total_loss
: perda do conjunto de dados em uma etapa de validação./eval_fraction_of_correct_next_step_preds
: a acurácia do token em uma etapa de validação. Uma única previsão consiste em uma sequência de tokens. Mede a acurácia dos tokens previstos quando comparados às informações empíricas no conjunto de dados de avaliação./eval_num_predictions
Número de tokens previstos em uma etapa de validação.
As visualizações de métricas ficam disponíveis depois que o job de ajuste começa a ser executado. Ele será atualizado em tempo real à medida que a sintonia for feita. Se você não especificar um conjunto de dados de validação ao criar o job de ajuste, apenas as visualizações das métricas de ajuste estarão disponíveis.
A seguir
- Para saber como o ajuste supervisionado de detalhes pode ser usado em uma solução que cria uma base de conhecimento de IA generativa, consulte Solução de início rápido: base de conhecimento de IA generativa.