Neste documento, descrevemos como ajustar um modelo do Gemini usando o ajuste fino 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
- Prepare um conjunto de dados de imagem para ajuste: Ajuste de imagem
- Prepare um conjunto de dados de documentos para ajuste: Ajuste de documentos
- Prepare um conjunto de dados de áudio para ajuste: Ajuste de áudio
Modelos compatíveis
gemini-1.5-pro-002
(no GA)gemini-1.5-flash-002
(no GA)gemini-1.0-pro-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, o SDK da Vertex AI para Python, o console do Google Cloud ou o Colab Enterprise.
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.
- BASE_MODEL: nome do
modelo de fundação a ser ajustado. Valores aceitos:
gemini-1.5-pro-002
,gemini-1.5-flash-002
egemini-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 transmissões completas que o modelo faz em todo o conjunto de dados de treinamento durante o treinamento. Deixe sem definição para usar o valor recomendado preenchido.
- ADAPTER_SIZEOpcional: o tamanho do adaptador que será usado para o job de ajuste. O tamanho do adaptador influencia o número de parâmetros treináveis para o job de ajuste. Um tamanho maior do adaptador significa que o modelo pode aprender tarefas mais complexas, mas exige um conjunto de dados de treinamento maior e tempos de treinamento mais longos.
- LEARNING_RATE_MULTIPLIER: Opcional: um multiplicador para aplicar à taxa de aprendizado recomendada. Deixe sem definiçã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" : { "trainingDatasetUri": "TRAINING_DATASET_URI", "validationDatasetUri": "VALIDATION_DATASET_URI", "hyperParameters": { "epochCount": EPOCH_COUNT, "adapterSize": "ADAPTER_SIZE", "learningRateMultiplier": 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.5-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.5-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 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.
Colab Enterprise
É possível criar um job de ajuste de modelo na Vertex AI usando o painel lateral no Colab Enterprise. O painel lateral adiciona os snippets de código relevantes ao seu notebook. Em seguida, modifique os snippets de código e execute-os para criar o job de ajuste. Para saber mais sobre como usar o painel lateral com seus jobs de ajuste da Vertex AI, consulte Interagir com a Vertex AI para ajustar um modelo.
-
No console do Google Cloud, acesse a página Notebooks do Colab Enterprise.
-
No menu Região, selecione a região que contém o notebook.
-
Na guia Meus notebooks, clique no notebook que você quer abrir. Crie um notebook se ainda não tiver feito isso.
-
À direita do notebook, no painel lateral, clique no botão Tuning (Sintonia).
O painel lateral abre a guia Ajuste.
-
Clique no botão Ajustar um modelo do Gemini.
O Colab Enterprise adiciona células de código ao seu notebook para ajustar um modelo do Gemini.
-
No seu notebook, encontre a célula de código que armazena os valores de parâmetro. Você vai usar esses parâmetros para interagir com a Vertex AI.
-
Atualize os valores dos seguintes parâmetros:
-
PROJECT_ID
: o ID do projeto em que o notebook está. -
REGION
: a região em que o notebook está. -
TUNED_MODEL_DISPLAY_NAME
: o nome do modelo ajustado.
-
-
Na próxima célula de código, atualize os parâmetros de ajuste do modelo:
-
source_model
: o modelo do Gemini que você quer usar, por exemplo,gemini-1.0-pro-002
. -
train_dataset
: o URL do conjunto de dados de treinamento. -
validation_dataset
: o URL do conjunto de dados de validação. - Ajuste os outros parâmetros conforme necessário.
-
-
Execute as células de código que o painel lateral adicionou ao notebook.
-
Depois que a última célula de código for executada, clique no botão View tuning job que aparece.
-
O painel lateral mostra informações sobre o job de ajuste do modelo.
- A guia Monitor mostra as métricas de ajuste quando elas estão prontas.
- A guia Dataset mostra um resumo e métricas sobre seu conjunto de dados depois que ele é processado.
- A guia Detalhes mostra informações sobre o job de ajuste, como o método de ajuste e o modelo base (modelo de origem) usado.
-
Depois que o job de ajuste for concluído, você poderá acessar diretamente a guia Detalhes do ajuste para testar o modelo. Clique em Testar.
O console do Google Cloud abre na página Chat de texto da Vertex AI, onde você pode testar seu modelo.
Como ajustar hiperparâmetros
Recomendamos que você envie seu primeiro job de ajuste sem alterar os hiperparâmetros. O valor padrão é o recomendado com base nos resultados de comparação para gerar a melhor qualidade de saída do modelo.
- Épocas: o número de transmissões completas que o modelo faz em todo o conjunto de dados de treinamento durante o treinamento. A Vertex AI ajusta automaticamente o valor padrão ao tamanho do conjunto de dados de treinamento. Esse valor é baseado em resultados de comparação de mercado para otimizar a qualidade da saída do modelo.
- Tamanho do adaptador: o tamanho do adaptador a ser usado para o job de ajuste. O tamanho do adaptador influencia o número de parâmetros treináveis para o job de ajuste. Um tamanho maior do adaptador significa que o modelo pode aprender tarefas mais complexas, mas exige um conjunto de dados de treinamento maior e tempos de treinamento mais longos.
- Multiplicador da taxa de aprendizado: um multiplicador para aplicar à taxa de aprendizado recomendada. É possível aumentar o valor para convergir mais rápido ou diminuir o valor para evitar o ajuste excessivo.
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
É 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.
- 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, "topP": TOP_P, "topK": TOP_K, "maxOutputTokens": 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.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))
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 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 gemini-1.5-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.5-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 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.