Otimize os modelos do Gemini através da otimização de preferências

Este documento descreve como realizar o ajuste de preferências num modelo do Gemini.

Antes de começar

Antes de começar, tem de preparar um conjunto de dados seguindo as instruções em Prepare dados de ajuste de preferências para modelos Gemini.

Crie uma tarefa de ajuste

Consola

Para configurar a otimização de preferências através da Google Cloud consola, siga estes passos:

  1. Na secção Vertex AI da Google Cloud consola, aceda à página Vertex AI Studio.

    Aceda ao Vertex AI Studio

  2. Clique em Criar modelo otimizado.

  3. Selecione Ajuste de preferências.

  4. Em Detalhes do modelo, configure o seguinte:

    1. No campo Nome do modelo otimizado, introduza um nome para o novo modelo otimizado, com um máximo de 128 carateres.
    2. No campo Modelo de base, selecione o modelo fundamental a otimizar.
    3. No campo pendente Região, selecione a região onde a tarefa de otimização do pipeline é executada e onde o modelo otimizado é implementado.
  5. Em Definição de otimização, configure o seguinte:

    1. No campo Número de épocas, introduza o número de passos a executar para a otimização do modelo.
    2. No campo Tamanho do adaptador, introduza o tamanho do adaptador a usar para o ajuste de modelos.
    3. Opcional: no campo Beta, introduza o valor beta pretendido. Beta é o coeficiente que controla o grau de alinhamento do modelo otimizado com a respetiva base.
    4. No campo Multiplicador da taxa de aprendizagem, introduza o tamanho do passo em cada iteração. O valor predefinido é 1. .
  6. Opcional: para desativar os pontos de verificação intermédios e usar apenas o ponto de verificação mais recente, clique no botão Exportar apenas o último ponto de verificação.

  7. Clique em Continuar.

    É apresentada a página Conjunto de dados de ajuste.

  8. Para carregar um ficheiro de conjunto de dados, selecione uma das seguintes opções:

    1. Se ainda não tiver carregado um conjunto de dados, selecione o botão de opção para Carregar ficheiro para o Cloud Storage.
    2. No campo Selecionar ficheiro JSONL, clique em Procurar e selecione o ficheiro do conjunto de dados.
    3. No campo Localização do conjunto de dados, clique em Procurar e selecione o contentor do Cloud Storage onde quer armazenar o ficheiro do conjunto de dados.
    4. Se o ficheiro do conjunto de dados já estiver num contentor do Cloud Storage, selecione o botão de rádio Ficheiro existente no Cloud Storage.
    5. No campo Caminho do ficheiro do Cloud Storage, clique em Procurar e selecione o contentor do Cloud Storage onde se encontra o ficheiro do conjunto de dados.
  9. (Opcional) Para receber métricas de validação durante a preparação, clique no botão Ativar validação do modelo.

    1. No ficheiro Conjunto de dados de validação, introduza o caminho do Cloud Storage do seu conjunto de dados de validação.
  10. Clique em Iniciar otimização.

    O novo modelo aparece na secção Ajuste gerido na página Ajustar e destilar. Quando a otimização do modelo estiver concluída, o Estado indica Êxito.

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 otimizar.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o 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.
  • BASE_MODEL: nome do modelo base a ajustar.
  • 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 conseguir os melhores resultados, forneça, pelo menos, 100 a 500 exemplos. Para mais informações, consulte o artigo Acerca dos conjuntos de dados de ajuste supervisionados .
  • VALIDATION_DATASET_URIOpcional: o URI do Cloud Storage do ficheiro do conjunto de dados de validação.
  • EPOCH_COUNTOpcional: o número de passes completos que o modelo faz em todo o conjunto de dados de preparação durante a preparação. Deixe-o não definido para usar o valor recomendado pré-preenchido.
  • BETAOpcional: o coeficiente que controla o grau de alinhamento do modelo otimizado com a respetiva base.
  • ADAPTER_SIZEOpcional: o tamanho do adaptador a usar para a tarefa de otimização. O tamanho do adaptador influencia o número de parâmetros treináveis para a tarefa de ajuste. Um tamanho do adaptador maior implica que o modelo pode aprender tarefas mais complexas, mas requer um conjunto de dados de preparação maior e tempos de preparação mais longos.
  • LEARNING_RATE_MULTIPLIER: opcional: um multiplicador a aplicar à taxa de aprendizagem recomendada. Deixe-o não definido para usar o valor recomendado.
  • EXPORT_LAST_CHECKPOINT_ONLYOpcional: defina como true para usar apenas o ponto de verificação mais recente.
  • TUNED_MODEL_DISPLAYNAMEOpcional: um nome a apresentar para o modelo otimizado. Se não for definido, é gerado um nome aleatório.
  • KMS_KEY_NAMEOpcional: o identificador do recurso do Cloud KMS da chave de encriptação gerida 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 tem de estar na mesma região onde o recurso de computação é criado. Para mais informações, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).
  • SERVICE_ACCOUNTOpcional: a conta de serviço na qual a carga de trabalho tuningJob é executada. Se não for especificado, é usado o agente do serviço de ajuste preciso seguro da Vertex AI no projeto. Consulte o artigo Agente do serviço de otimização. Se planeia usar uma conta de serviço gerida pelo cliente, tem de conceder a função roles/aiplatform.tuningServiceAgent à conta de serviço. Conceda também a função Agente do serviço de ajuste roles/iam.serviceAccountTokenCreator à conta de serviço gerida 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 do pedido:

{
  "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 o seu pedido, expanda uma destas opções:

Comando curl de exemplo

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"
}'

Aperfeiçoamento de hiperparâmetros

Recomendamos que envie a primeira tarefa de otimização sem alterar os hiperparâmetros. O valor predefinido é o valor recomendado com base nos nossos resultados de testes de referência para gerar a melhor qualidade de saída do modelo.

  • Épocas: o número de passes completos que o modelo faz sobre o conjunto de dados de preparação completo durante a preparação. O Vertex AI ajusta automaticamente o valor predefinido ao tamanho do conjunto de dados de preparação. Este valor baseia-se nos resultados dos testes de referência para otimizar a qualidade do resultado do modelo.
  • Beta: o coeficiente que controla o grau de alinhamento do modelo otimizado com a respetiva base. Uma versão beta mais baixa significa atualizações mais agressivas em relação às respostas preferenciais. O intervalo recomendado é de 0,01 a 0,5, inclusive. Um valor beta de 0 impede a aprendizagem do modelo.
  • Tamanho do adaptador: o tamanho do adaptador a usar para a tarefa de otimização. O tamanho do adaptador influencia o número de parâmetros treináveis para a tarefa de ajuste. Um tamanho do adaptador maior implica que o modelo pode aprender tarefas mais complexas, mas requer um conjunto de dados de preparação maior e tempos de preparação mais longos.
  • Multiplicador da taxa de aprendizagem: um multiplicador a aplicar à taxa de aprendizagem recomendada. Pode aumentar o valor para convergir mais rapidamente ou diminuir o valor para evitar o sobreajuste.

Veja ou cancele uma tarefa de otimização

Para listar tarefas de ajuste, ver detalhes de tarefas de ajuste, cancelar uma tarefa de ajuste ou eliminar um modelo ajustado, consulte as seguintes secções na documentação de ajuste fino supervisionado:

Métricas de aperfeiçoamento de modelos

A tarefa de otimização do modelo recolhe automaticamente as seguintes métricas de otimização:

  • /preference_optimization_train_loss: perda de preferência para o conjunto de dados de ajuste num passo de preparação.

Métricas de validação do modelo

Quando são fornecidos dados de validação, a tarefa de otimização do modelo recolhe automaticamente as seguintes métricas de validação:

  • /eval_total_loss: perda de preferência para o conjunto de dados de validação 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. São atualizadas 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 otimização, apenas as visualizações das métricas de otimização estão disponíveis.

O que se segue?