Ajustar modelos do Gemini usando o ajuste de preferências

Neste documento, descrevemos como fazer o ajuste de preferências em um modelo do Gemini.

Antes de começar

Antes de começar, prepare um conjunto de dados seguindo as instruções em Preparar dados de ajuste de preferências para modelos do Gemini.

Criar um modelo de ajuste

Console

Para configurar o ajuste de preferências usando o console Google Cloud , siga estas etapas:

  1. Na seção "Vertex AI" do Google Cloud console, acesse a página do Vertex AI Studio.

    Acessar o Vertex AI Studio

  2. Clique em Criar modelo ajustado.

  3. Selecione Ajuste de preferências.

  4. Em Detalhes do modelo, configure o seguinte:

    1. No campo Nome do modelo ajustado, insira um nome para o novo modelo ajustado com até 128 caracteres.
    2. No campo Modelo base, selecione o modelo de fundação que você quer ajustar.
    3. 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.
  5. Em Configuração de ajuste, configure o seguinte:

    1. No campo Número de períodos, insira o número de etapas a serem executadas para o ajuste do modelo.
    2. No campo Tamanho do adaptador, insira o tamanho do adaptador a ser usado para ajuste de modelos.
    3. Opcional: no campo Beta, insira o valor beta desejado. Beta é o coeficiente que controla o alinhamento do modelo ajustado com a referência.
    4. No campo Multiplicador da taxa de aprendizado, insira o tamanho da etapa em cada iteração. O valor padrão é 1. .
  6. Opcional: para desativar os checkpoints intermediários e usar apenas o mais recente, clique na opção Exportar somente o último checkpoint.

  7. Clique em Continuar.

    A página Conjunto de dados de ajuste é aberta.

  8. Para fazer upload de um arquivo de conjunto de dados, selecione uma das seguintes opções:

    1. 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.
    2. No campo Selecionar arquivo JSONL, clique em Procurar e selecione o arquivo do conjunto de dados.
    3. 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.
    4. 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.
    5. 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.
  9. (Opcional) Para receber métricas de validação durante o treinamento, clique em Ativar validação do modelo.

    1. No arquivo Conjunto de dados de validação, insira o caminho do Cloud Storage referente ao conjunto de dados de validação.
  10. Clique em Iniciar ajuste.

    O novo modelo vai aparecer na seção Ajuste gerenciado da página Ajustar e destilar. Quando o ajuste do modelo for concluído, o Status será Concluído.

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.
  • 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. Não defina essa configuração para usar o valor recomendado pré-preenchido.
  • BETAOpcional: o coeficiente que controla o alinhamento do modelo ajustado com a linha de base.
  • 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.
  • EXPORT_LAST_CHECKPOINT_ONLYOpcional: defina como true para usar apenas o checkpoint mais recente.
  • TUNED_MODEL_DISPLAYNAMEOpcional: um nome de exibição para o modelo ajustado. Se não for definido, um nome aleatório será gerado.
  • KMS_KEY_NAMEOpcional: o identificador de recursos do Cloud KMS da chave de criptografia gerenciada pelo cliente usada para proteger um recurso. A chave tem o formato: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. A chave precisa estar na mesma região em que o recurso de computação foi criado. Para mais informações, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).
  • SERVICE_ACCOUNTOpcional: a conta de serviço em que a carga de trabalho tuningJob é executada. Se não for especificado, o agente de serviço de ajuste refinado seguro da Vertex AI no projeto será usado. Consulte Agente do serviço de ajuste. Se você planeja usar uma conta de serviço gerenciada pelo cliente, conceda o papel roles/aiplatform.tuningServiceAgent a ela. Conceda também o papel roles/iam.serviceAccountTokenCreator Agente do serviço de ajuste à conta de serviço gerenciada pelo cliente.

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",
  "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": "EPOCH_COUNT",
          "beta": "BETA",
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

Para enviar a solicitação, expanda uma destas opções:

Exemplo de comando curl

PROJECT_ID=myproject
LOCATION=global
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": "${BASE_MODEL}",
   "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "gs://mybucket/preference_tuning/data/train_data.jsonl",
      "validationDatasetUri": "gs://mybucket/preference_tuning/data/validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

Como ajustar os hiperparâmetros

Recomendamos enviar seu primeiro job de ajuste sem mudar os hiperparâmetros. O valor padrão é o recomendado com base nos nossos resultados de comparativo de mercado 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 comparativos de mercado para otimizar a qualidade da saída do modelo.
  • Beta: o coeficiente que controla o alinhamento do modelo ajustado com a referência. Um beta menor significa atualizações mais agressivas para respostas preferidas. O intervalo recomendado é de 0,01 a 0,5, inclusive. Um valor beta de 0 impede que o modelo aprenda.
  • 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 para evitar overfitting.

Ver ou cancelar um job de ajuste

Para listar, conferir detalhes, cancelar um job de ajuste ou excluir um modelo ajustado, consulte as seções a seguir na documentação de ajuste refinado supervisionado:

Métricas de ajuste de modelos

O job de ajuste de modelo coleta automaticamente as seguintes métricas de ajuste:

  • /preference_optimization_train_loss: perda de preferência para o conjunto de dados de ajuste em uma etapa de treinamento.

Métricas de validação do modelo

Quando os dados de validação são fornecidos, o job de ajuste de modelo coleta automaticamente as seguintes métricas de validação:

  • /eval_total_loss: perda de preferência para o conjunto de dados de validação 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. Elas são atualizadas em tempo real conforme o ajuste avança. 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