Neste documento, descrevemos como ajustar um modelo do Gemini Pro usando o ajuste supervisionado.
Antes de começar
- Entenda como o ajuste supervisionado funciona e os benefícios de usá-lo.
- Saiba como criar um conjunto de dados de ajuste supervisionado.
- Escolha uma região de ajuste supervisionado para executar jobs de ajuste.
Criar um modelo de ajuste
É possível criar um job de ajuste supervisionado usando o console do Google Cloud, a API ou o SDK da Vertex AI para Python. Para orientações sobre configurações de ajuste de modelos, consulte Configurações recomendadas.
REST
Para criar um job de ajuste do 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.
- BASE_MODEL: nome do
modelo de fundação a ser ajustado. Valores aceitos:
gemini-1.0-pro-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 conjuntos de dados de ajuste supervisionados .
- VALIDATION_DATASET_URIOpcional: o URI do Cloud Storage do arquivo do conjunto de dados de validação.
- EPOCH_COUNTOpcional: o número de períodos a serem treinados. Deixe sem definição para usar o valor recomendado.
- ADAPTER_SIZEOpcional: o tamanho do adaptador que será usado para o job de ajuste.
- LEARNING_RATE_MULTIPLIER: Opcional: um multiplicador para aplicar à taxa de aprendizado recomendada. Não defina essa configuração para usar o valor recomendado.
- 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" : { "training_dataset_uri": "TRAINING_DATASET_URI", "validation_dataset_uri": "VALIDATION_DATASET_URI", "hyper_parameters": { "epoch_count": EPOCH_COUNT, "adapter_size": ADAPTER_SIZE, "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER }, }, "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": "gemini-1.0-pro-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_gemini_pro"
}'
Python
Console
Para ajustar um modelo de texto com ajuste supervisionado usando o Console do Google Cloud, siga estas etapas:
Na seção "Vertex AI" do console do Google Cloud, acesse a página do Vertex AI Studio.
Clique em Criar modelo ajustado.
Em Método de ajuste, selecione o botão de opção Ajuste supervisionado.
Em Detalhes do modelo, configure o seguinte:
- No campo Nome do modelo ajustado, insira um nome para o novo modelo ajustado com até 128 caracteres.
- No campo Modelo base, selecione
gemini-1.0-pro-002
. - No campo suspenso Região, selecione a região em que o job de ajuste do pipeline será executado e onde o modelo ajustado será implantado.
Opcional: expanda a seta suspensa Opções avançadas e configure o seguinte:
- No campo Número de períodos, insira o número de etapas a serem executadas para o ajuste do modelo.
- No campo Tamanho do adaptador, insira o tamanho do adaptador a ser usado para ajuste de modelos.
- No campo Multiplicador da taxa de aprendizado, insira um Insira o tamanho da etapa em cada iteração. O valor padrão é 1.
Clique em Continuar.
A página Conjunto de dados de ajuste é aberta.
Para fazer upload de um arquivo de conjunto de dados, selecione uma das seguintes opções:
- Se você ainda não fez o upload de um conjunto de dados, selecione o botão de opção Fazer o upload do arquivo para o Cloud Storage.
- No campo Selecionar arquivo JSONL, clique em Procurar e selecione o arquivo do conjunto de dados.
- Em Local do conjunto de dados, clique em Procurar e selecione o bucket do Cloud Storage em que você quer armazenar o arquivo do conjunto de dados.
- Se o arquivo do conjunto de dados já estiver em um bucket do Cloud Storage, selecione o botão de opção Arquivo existente no Cloud Storage.
- Em Caminho do arquivo do Cloud Storage, clique em Procurar e selecione o bucket do Cloud Storage em que o arquivo do conjunto de dados está localizado.
(Opcional) Para receber métricas de validação durante o treinamento, clique em Ativar validação do modelo.
- No arquivo Conjunto de dados de validação, insira o caminho do Cloud Storage referente ao conjunto de dados de validação.
Clique em Iniciar ajuste.
O novo modelo será exibido na seção Modelos ajustados do Genmini Pro na página Ajustar e destilar. Quando o ajuste do modelo for concluído, o Status será Concluído.
Configurações recomendadas
A tabela a seguir mostra as configurações recomendadas para ajustar um modelo de base por tarefa:
Tarefa | Nº de exemplos no conjunto de dados | Número de períodos |
---|---|---|
Classificação | 500+ | 2-4 |
Resumo | Mais de 1.000 | 2-4 |
QA extrativa | 500+ | 2-4 |
Chat | Mais de 1.000 | 2-4 |
Para o número de períodos, sugerimos que você tente usar mais de um valor para conseguir o melhor desempenho em um conjunto de dados específico. Aumentar o número de períodos pode apresentar resultados melhores. No entanto, tenha cuidado com o overfitting especialmente quando o conjunto de dados for pequeno e reduza o número de períodos se isso acontecer.
Para as tarefas de classificação, a complexidade aumenta com o número de classes. Para um grande número de classes, você pode precisar de conjuntos de dados maiores.
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 Gemini estão listados na tabela na seção Modelos ajustados do Gemini Pro.
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 pelo Gemini Pro, 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 pelo Gemini Pro, clique em
Gerenciar execução.Clique em Cancelar.
Testar o modelo ajustado com um comando
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.
- TEMPERATURE:
a temperatura é usada para amostragem durante a geração da resposta, que ocorre quando
topP
etopK
são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de0
significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.
- TOP_P:
o Top-P muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados
do mais provável (veja o top-K) para o menos provável até que a soma das probabilidades
seja igual ao valor do top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de
0,3, 0,2 e 0,1 e o valor de top-P for
0.5
, o modelo selecionará A ou B como token seguinte usando temperatura e exclui C como candidato.Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.
- TOP_K:
o Top-K muda a forma como o modelo seleciona tokens para saída. Um top-K de
1
significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de3
significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.
Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.
- MAX_OUTPUT_TOKENS:
número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.
Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.
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" : "Why is sky blue?" } } ], "generation_config": { "temperature":TEMPERATURE, "top_p": TOP_P, "top_k": TOP_K, "max_output_tokens": MAX_OUTPUT_TOKENS } }
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.preview.generative_models import GenerativeModel
from vertexai.preview import tuning
from vertexai.preview.tuning import sft
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))
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 pelo Gemini Pro, selecione Testar.
Isso abre uma página em que é possível criar uma conversa com o modelo ajustado.
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 extrair, 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 gemini-1.0-pro-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 gemini-1.0-pro-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 após a conclusão do job de ajuste do modelo. 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.