Ajustar modelos de código

Os modelos de código podem ser ajustados usando o ajuste supervisionado. O ajuste supervisionado usa exemplos rotulados que demonstram o tipo de saída que você quer com a geração de código ou o modelo de chat de código durante a inferência. Os modelos de código não são compatíveis com o ajuste usando o ajuste de aprendizado por reforço com feedback humano (RLHF, na sigla em inglês).

Cenários para usar o ajuste de modelos de código

O ajuste é necessário quando você quer que um modelo aprenda algo de nicho ou específico que se desvie dos padrões gerais de linguagem e código. Veja a seguir exemplos do que você pode ensinar para os modelos code-bison e codechat-bison:

  • Como gerar código para bibliotecas personalizadas. Ao treinar um modelo de código com amostras rotuladas de uma biblioteca personalizada, é possível gerar ou conversar sobre códigos específicos dessa biblioteca personalizada.
  • Como usar a base do código. Ao treinar um modelo com amostras rotuladas da sua base de código, é possível gerar um código ou conversar sobre o código que usa qualidades exclusivas na sua base de código.
  • Como gerar código usando variantes de uma linguagem de programação. Ao treinar um modelo de código com amostras rotuladas de uma variante de linguagem, você pode gerar ou conversar sobre o código que usa as convenções e os padrões específicos dessa variante de linguagem.

Esses cenários incluem requisitos de código difíceis de capturar apenas por instruções rápidas. Confira alguns exemplos:

Geração de códigos

  • Este prompt de amostra e resposta ajuda a ajustar code-bison para funcionar com um conjunto de dados específico.

  • Esse exemplo de prompt e resposta ajuda a treinar code-bison para criar um produto usando Python.

Chat de código

  • Esse exemplo de prompt e resposta ajuda a ajustar o codechat-bison para que o usuário aprenda a trabalhar com um conjunto de dados específico.

  • Esse exemplo de prompt e resposta ajuda a ajustar o codechat-bison para ajudar um usuário a criar um produto usando Python durante uma sessão de chat.

Preparar seu conjunto de dados de ajuste de modelos de código

O conjunto de dados usado para ajustar um modelo de código inclui exemplos alinhados à tarefa que você quer que o modelo execute. Seu conjunto de dados precisa incluir no mínimo 10 exemplos, mas recomendamos pelo menos 500 exemplos para ter bons resultados. Quanto mais exemplos, melhores serão os resultados.

Formato do conjunto de dados para ajustar um modelo de código

O conjunto de dados de ajuste para um modelo de geração de código e um modelo de chat de código precisa estar no formato JSON Lines (JSONL). Veja a seguir detalhes sobre o formato do conjunto de dados e exemplos para cada modelo:

Geração de códigos

O conjunto de dados de ajuste do modelo de geração de código precisa estar no formato JSON Lines (JSONL), em que cada linha contém um único exemplo de ajuste. Cada exemplo é composto por um campo input_text que contém a solicitação para o modelo e um campo output_text que contém uma resposta de exemplo que o modelo ajustado deverá produzir.

O número máximo de exemplos que um conjunto de dados para um modelo de geração de texto pode conter é 10.000.

Exemplos de um conjunto de dados de ajuste de modelos de geração de código

Neste tópico, mostramos dois exemplos de ajuste de conjuntos de dados do modelo de ajuste de código. Veja a seguir o primeiro exemplo de conjunto de dados de ajuste de geração de código:

{"input_text": "How to create a product in Python with the Cloud Vision API?", "output_text": "Use this
Python code sample to learn how to create a
product with the Cloud Vision API:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom google.cloud import
vision\r\nfrom google.protobuf import field_mask_pb2 as field_mask\r\n\r\ndef
create_product(\r\n project_id, location, product_id, product_display_name,\r\n
product_category):\r\n \"\"\"Create one product.\r\n Args:\r\n project_id: Id of
the project.\r\n location: A compute region name.\r\n product_id: Id of the
product.\r\n product_display_name: Display name of the product.\r\n
product_category: Category of the product.\r\n \"\"\"\r\n client =
vision.ProductSearchClient()\r\n\r\n # A resource that represents Google Cloud
Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}

Veja a seguir o segundo exemplo de conjunto de dados de ajuste de geração de código:

{"input_text": "python to retrieve the labels of a dataset for a given dataset
ID in BigQuery", "output_text": "Here is a Python code sample to retrieve the labels of a
dataset for a given dataset ID in BigQuery.\n\n```python\n\n from google.cloud import
bigquery\n\n # Construct a BigQuery client object.\n client =
bigquery.Client()\n\n # TODO(developer): Set dataset_id to the ID of the dataset
to fetch.\n # dataset_id = \"your-project.your_dataset\"\n\n dataset =
client.get_dataset(dataset_id) # Make an API request.\n\n # View dataset
labels.\n print(\"Dataset ID: {}\".format(dataset_id))\n print(\"Labels:\")\n if
dataset.labels:\n for label, value in dataset.labels.items():\n print(\"\\t{}:
{}\".format(label, value))\n else:\n print(\"\\tDataset has no labels
defined.\")\n```"}

Chat de código

O conjunto de dados de ajuste do modelo de chat precisa estar no formato JSON Lines (JSONL), em que cada linha contém um único exemplo de ajuste. Cada exemplo é composto por um campo messages que contém exemplos de prompts de chat e respostas que o modelo ajustado produzirá.

O número máximo de campos author que os exemplos no conjunto de dados de um modelo de chat de código podem conter é 10.000. Esse máximo é para a soma de todos os campos author em todos os messages em todos os exemplos.

Exemplos de um conjunto de dados de ajuste do modelo de chat de código

Neste tópico, mostramos dois exemplos de ajuste de conjuntos de dados do modelo de chat de código. Esse é o primeiro exemplo de um conjunto de dados de ajuste de chat por código:

{"messages": [{"author":"user", "content": "How to create a product in
Python with Cloud Vision?"}, {"author": "assistant", "content": "Use this Python code sample to
learn how to create a product with Cloud Vision:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom
google.cloud import vision\r\nfrom google.protobuf import field_mask_pb2 as
field_mask\r\n\r\ndef create_product(\r\n project_id, location, product_id,
product_display_name,\r\n product_category):\r\n \"\"\"Create one product.\r\n
Args:\r\n project_id: Id of the project.\r\n location: A compute region
name.\r\n product_id: Id of the product.\r\n product_display_name: Display name
of the product.\r\n product_category: Category of the product.\r\n \"\"\"\r\n
client = vision.ProductSearchClient()\r\n\r\n # A resource that represents
Google Cloud Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}]}

Esse é o segundo exemplo de um conjunto de dados de ajuste de chat por código:

{"messages": [{"author":"user", "content": "Python to retrieve the labels of a
dataset for a given dataset ID in BigQuery"}, {"author": "assistant", "content": "Here is a
Python code sample to retrieve the labels of a dataset for a given dataset
ID in BigQuery.\n\n```python\n\n from google.cloud import bigquery\n\n # Construct a
BigQuery client object.\n client = bigquery.Client()\n\n # TODO(developer): Set
dataset_id to the ID of the dataset to fetch.\n # dataset_id =
\"your-project.your_dataset\"\n\n dataset = client.get_dataset(dataset_id) #
Make an API request.\n\n # View dataset labels.\n print(\"Dataset ID:
{}\".format(dataset_id))\n print(\"Labels:\")\n if dataset.labels:\n for label,
value in dataset.labels.items():\n print(\"\\t{}: {}\".format(label, value))\n
else:\n print(\"\\tDataset has no labels defined.\")\n```"}]}

Manter a consistência com os dados de produção

Os exemplos nos seus conjunto de dados precisam corresponder ao tráfego de produção esperado. Se o conjunto de dados contiver formatação, palavras-chave, instruções ou informações específicas, os dados de produção deverão ser formatados da mesma maneira e conter as mesmas instruções.

Por exemplo, se os exemplos no seu conjunto de dados incluem um "question:" e um "context:", o tráfego de produção também deve ser formatado para incluir um "question:" e um "context:" na mesma ordem em que aparece no exemplos de conjuntos de dados. Se você excluir o contexto, o modelo não reconhecerá o padrão, mesmo que a pergunta exata esteja em um exemplo no conjunto de dados.

Incluir instruções em exemplos

Para tarefas como geração de código, crie um conjunto de dados de exemplos que não contenham instruções. No entanto, a exclusão de instruções dos exemplos no conjunto de dados leva a um desempenho pior após o ajuste do que a inclusão de instruções, especialmente para conjuntos de dados menores.

Não inclui instruções:

{
  "input_text": "Calculate the sum of a list of integers.",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

Inclui instruções:

{
  "input_text": "Write the code in Python: calculate the sum of a list of integers",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

Fazer upload de conjuntos de dados de ajuste para o Cloud Storage

Para executar um job de ajuste, é preciso fazer upload de um ou mais conjuntos de dados para um bucket do Cloud Storage. É possível criar um novo bucket do Cloud Storage ou usar um existente para armazenar arquivos de conjuntos de dados. A região do bucket não importa, mas recomendamos que você use um bucket que esteja no mesmo projeto do Google Cloud em que planeja executar o ajuste do modelo.

Quando o bucket estiver pronto, faça o upload do arquivo do conjunto de dados para o bucket.

Configurações de região do ajuste supervisionado

É possível especificar três configurações de região do Google Cloud ao configurar um job de ajuste supervisionado. Uma região é onde o pipeline que ajusta o modelo é executado. A outra região é onde o job de ajuste do modelo é executado e o modelo ajustado é transferido.

Região do job do pipeline

A região do job do pipeline é onde esse job é executado. Se a região de upload do modelo opcional não for especificada, o modelo será transferido e implantado na região do job do pipeline. Os dados intermediários, como o conjunto de dados transformados, são armazenados na região do job do pipeline. Para saber quais regiões podem ser usadas como região do job do pipeline, consulte Regiões compatíveis de upload do modelo e job do pipeline. Especifique a região do job do pipeline usando um dos seguintes métodos:

  • Se você usar o SDK da Vertex AI, especifique a região onde o job do pipeline será executado usando o parâmetro tuning_job_location no método tune_model do objeto que representa o modelo que você ajustará (por exemplo, o método TextGenerationModel.tune_model).

  • Se você criar um job de ajuste supervisionado enviando uma solicitação POST com o método pipelineJobs.create, use o URL para especificar a região onde o job do pipeline será executado. No URL a seguir, substitua as duas instâncias de PIPELINE_JOB_REGION pela região onde o pipeline será executado:

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Se você usar o console do Google Cloud para criar um job de ajuste de modelo supervisionado, especifique a região do job do pipeline no controle Região ao criar o job de ajuste. No console do Google Cloud, o controle Região especifica a região do job do pipeline e a região de upload do modelo. Quando você usa o console do Google Cloud para criar um job de ajuste de modelo supervisionado, as duas regiões são sempre iguais.

Região de upload do modelo

Use o parâmetro opcional tuned_model_location para especificar para onde o modelo ajustado será transferido. Se a região de upload do modelo não for especificada, o modelo ajustado será transferido para a região do job do pipeline. É possível usar uma das Regiões compatíveis de upload do modelo e job do pipeline como região de upload do modelo. É possível especificar a região de upload do modelo usando um dos seguintes métodos:

  • Se você usar o SDK da Vertex AI, o parâmetro tuned_model_location será especificado no método tune_model do objeto que representa o modelo que você ajustará (por exemplo, o método TextGenerationModel.tune_model).

  • Se você criar um job de ajuste de modelo supervisionado enviando uma solicitação POST com o método pipelineJobs, use o parâmetro location para especificar a região de upload do modelo.

  • Se você usar o console do Google Cloud para criar um job de ajuste de modelo supervisionado, especifique a região de upload do modelo no controle Região ao criar o job de ajuste. No console do Google Cloud, o controle Região especifica a região de upload do modelo e a região do job do pipeline. Quando você usa o console do Google Cloud para criar um job de ajuste de modelo supervisionado, as duas regiões são sempre iguais.

Região de ajuste do modelo

A região de ajuste do modelo é onde ocorre o processamento desse modelo. Essa região é determinada pelo tipo de acelerador escolhido. Se você especificar TPU como tipo de acelerador, o processamento do ajuste do modelo acontecerá em europe-west4. Se você especificar GPU como tipo de acelerador, o ajuste do modelo acontecerá em us-central1.

Regiões compatíveis de upload do modelo e job do pipeline

É possível usar uma das regiões a seguir para especificar a região de upload do modelo e a região do job do pipeline:

  • us-central1
  • europe-west4
  • asia-southeast1
  • us-west1
  • europe-west3
  • europe-west2
  • asia-northeast1
  • us-east4
  • us-west4
  • northamerica-northeast1
  • europe-west9
  • europe-west1
  • asia-northeast3

Criar um job de ajuste de modelo de código

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

Criar um job de ajuste de modelos de geração de código

Veja a seguir como criar um job de ajuste de modelo de geração de código usando o console do Google Cloud ou os comandos da API REST.

REST

Para criar um job de ajuste de modelo de geração de código, envie uma solicitação POST usando o método pipelineJobs.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • TUNINGPIPELINE_DISPLAYNAME: um nome de exibição do pipelineJob.
  • OUTPUT_DIR: o URI do bucket de saída dos artefatos do pipeline.
  • MODEL_DISPLAYNAME: um nome de exibição do modelo enviado (criado) pelo pipelineJob.
  • DATASET_URI: URI do arquivo do conjunto de dados.
  • EVAL_DATASET_URI: (opcional) o URI do arquivo JSONL que contém o conjunto de dados de avaliação para avaliação e previsão em lote. Não há suporte à avaliação de codechat-bison. Para mais informações, consulte Formato do conjunto de dados para ajustar um modelo de código. O conjunto de dados de avaliação requer de 10 a 250 exemplos.
  • EVAL_INTERVAL: (opcional, 20 padrão) o número de etapas de ajuste entre cada avaliação. Um intervalo de avaliação não é compatível com modelos de chat. Como a avaliação é executada em todo o conjunto de dados de avaliação, um intervalo de avaliação menor resulta em um tempo de ajuste mais longo. Por exemplo, se steps for 200 e EVAL_INTERVAL for 100, você terá apenas dois pontos de dados para as métricas de avaliação. Esse parâmetro exige que a evaluation_data_uri seja definida.
  • PIPELINE_JOB_REGION: a região onde o job de ajuste do pipeline é executado. Essa também é a região padrão para onde o modelo ajustado é transferido. Se você quiser fazer upload do modelo para uma região diferente, use o parâmetro location para especificar a região de upload do modelo ajustado. Para mais informações, consulte Região do job do pipeline.
  • MODEL_UPLOAD_REGION (opcional): a região para onde o modelo ajustado é transferido. Se você não especificar uma região de upload do modelo, o modelo ajustado será transferido para a mesma região onde o job do pipeline é executado. Para mais informações, consulte Região de upload do modelo.
  • ACCELERATOR_TYPE (opcional, GPU padrão): o tipo de acelerador a ser usado para ajuste do modelo. As opções válidas são:
    • GPU: usa oito GPUs A100 de 80 GB para ajuste. Verifique se você tem cota suficiente. Se você escolher GPU, o VPC‐SC será permitido. A CMEK será permitida se os locais de ajuste e de upload do modelo forem us-centra1. Para mais informações, consulte Configurações de região do ajuste supervisionado. Se você escolher GPU, os processamentos de ajuste do modelo acontecerão na região us-central1.
    • TPU: usa 64 núcleos do pod da TPU v3 para ajuste. Verifique se você tem cota suficiente. A CMEK não é permitida, mas sim o VPC‐SC. Se você escolher TPU, os processamentos de ajuste do modelo acontecerão na região europe-west4.
  • ENABLE_EARLY_STOPPING: (opcional, true padrão) uma boolean que, se definida como true, interrompe o ajuste antes de concluir todas as etapas de ajuste quando o desempenho do modelo, medido pela acurácia dos tokens previstos, não melhora o suficiente entre as execuções de avaliações. Se false, o ajuste continuará até que todas as etapas de ajuste sejam concluídas. Esse parâmetro exige que a evaluation_data_uri seja definida. A ativação da parada antecipada não é compatível com modelos de chat.
  • ENABLE_CHECKPOINT_SELECTION: um valor de string que pode ser true, false ou default. Quando definido como "true", a Vertex AI seleciona e retorna o ponto de verificação com o melhor desempenho de avaliação do modelo de todos os checkpoints criados durante o job de ajuste. Quando definido como "false", o checkpoint final criado durante o job de ajuste é retornado. Cada checkpoint se refere a um snapshot do modelo durante um job de ajuste.
  • TENSORBOARD_RESOURCE_ID: (opcional) o ID de uma instância do TensorBoard da Vertex AI. A instância do Vertex AI TensorBoard é usada para criar um experimento após a conclusão do job de ajuste. A instância do TensorBoard da Vertex AI precisa estar na mesma região do pipeline de ajuste.
  • ENCRYPTION_KEY_NAME: (opcional) o nome totalmente qualificado de uma chave de criptografia gerenciada pelo cliente (CMEK) que você quer usar para criptografia de dados. Uma CMEK está disponível apenas em us-central1. Se você usar us-central1 e não especificar uma CMEK, uma chave do Google e gerenciada pelo Google será usada. As chaves de propriedade do Google e gerenciadas pelo Google são usadas por padrão em todas as outras regiões disponíveis. Para mais informações, consulte Informações gerais da CMEK.
  • STEPS: a quantidade de etapas a serem executadas para ajustar o modelo. O valor padrão é 300. O tamanho do lote varia de acordo com o local de ajuste e o tamanho do modelo. Para modelos 8k, como text-bison@002, chat-bison@002, code-bison@002 e codechat-bison@002:
    • us-central1 tem um tamanho de lote de 8.
    • europe-west4 tem um tamanho de lote de 24.
    Para modelos 32k, como text-bison-32k, chat-bison-32k, code-bison-32k e codechat-bison-32k:
    • us-central1 tem um tamanho de lote de 8.
    • europe-west4 tem um tamanho de lote de 8.

    Por exemplo, se você treinar text-bison@002 em europe-west4, haverá 240 exemplos em um conjunto de dados de treinamento e você definirá steps como 20, então o número de exemplos de treinamento será o produto de 20 etapas e o tamanho do lote de 24 ou 480 etapas de treinamento. Nesse caso, haverá dois períodos no processo de treinamento porque ele passará pelos exemplos duas vezes. Em us-central1, se houver 240 exemplos em um conjunto de dados de treinamento e você definir steps como 15, o número de exemplos de treinamento será o produto de 15 etapas e o tamanho do lote de 8 ou 120 etapas de treinamento. Nesse caso, haverá 0,5 período porque haverá metade do número de etapas de treinamento que o número de exemplos.

  • LEARNING_RATE_MULTIPLIER: a taxa de aprendizado em cada iteração. O valor padrão é 1.

Método HTTP e URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

Corpo JSON da solicitação:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "evaluation_data_uri": "EVAL_DATASET_URI",
      "evaluation_interval": "EVAL_INTERVAL",
      "enable_early_stopping": "ENABLE_EARLY_STOPPING",
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "code-bison@002",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  }
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a seguinte. pipelineSpec foi truncado para economizar espaço.

Console

Para ajustar um modelo de geração de código ou bate-papo de código com ajuste supervisionado usando o console do Google Cloud, execute as seguintes etapas:

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

    Acessar o Vertex AI Studio

  2. Clique na guia Ajustar e destilar.
  3. Clique em Criar modelo ajustado.
  4. Clique em Ajuste supervisionado.
  5. Configure os detalhes do modelo:
    • Nome do modelo ajustado: insira um nome para o modelo ajustado.
    • Modelo base: selecione o modelo base que você quer ajustar.
    • Região: selecione a região onde o job de ajuste do pipeline será executado e onde o modelo ajustado será implantado.
    • Diretório de saída: insira o local do Cloud Storage em que os artefatos são armazenados quando o modelo é ajustado.
  6. Expanda Opções avançadas para definir configurações avançadas.
    • Etapas de treinamento: digite o número de etapas a serem executadas para o ajuste do modelo. O valor padrão é 300. O tamanho do lote varia de acordo com o local de ajuste e o tamanho do modelo. Para modelos 8k, como text-bison@002, chat-bison@002, code-bison@002 e codechat-bison@002:
      • us-central1 tem um tamanho de lote de 8.
      • europe-west4 tem um tamanho de lote de 24.
      Para modelos 32k, como text-bison-32k, chat-bison-32k, code-bison-32k e codechat-bison-32k:
      • us-central1 tem um tamanho de lote de 8.
      • europe-west4 tem um tamanho de lote de 8.

      Por exemplo, se você treinar text-bison@002 em europe-west4, haverá 240 exemplos em um conjunto de dados de treinamento e você definirá steps como 20, então o número de exemplos de treinamento será o produto de 20 etapas e o tamanho do lote de 24 ou 480 etapas de treinamento. Nesse caso, haverá dois períodos no processo de treinamento porque ele passará pelos exemplos duas vezes. Em us-central1, se houver 240 exemplos em um conjunto de dados de treinamento e você definir steps como 15, o número de exemplos de treinamento será o produto de 15 etapas e o tamanho do lote de 8 ou 120 etapas de treinamento. Nesse caso, haverá 0,5 período porque haverá metade do número de etapas de treinamento que o número de exemplos.

    • Multiplicador de taxa de aprendizado: digite o tamanho da etapa em cada iteração. O valor padrão é 1.
    • Tipo de acelerador (opcional): insira o tipo de acelerador a ser usado para ajuste do modelo. As opções válidas são:
      • GPU: usa oito GPUs A100 de 80 GB para ajuste. Verifique se você tem cota suficiente. Se você escolher GPU, o VPC‐SC será permitido. A CMEK será permitida se os locais de ajuste e de upload do modelo forem us-centra1. Para mais informações, consulte Configurações de região do ajuste supervisionado. Se você escolher GPU, os processamentos de ajuste do modelo acontecerão na região us-central1.
      • TPU: usa 64 núcleos do pod da TPU v3 para ajuste. Verifique se você tem cota suficiente. A CMEK não é permitida, mas sim o VPC‐SC. Se você escolher TPU, os processamentos de ajuste do modelo acontecerão na região europe-west4.
    • Adicionar uma instância do TensorBoard: (opcional) o ID de uma instância do TensorBoard da Vertex AI. A instância do Vertex AI TensorBoard é usada para criar um experimento após a conclusão do job de ajuste. A instância do TensorBoard da Vertex AI precisa estar na mesma região do pipeline de ajuste.
    • Criptografia (Opcional) Escolha usar uma chave de propriedade do Google e gerenciada pelo Google ou uma chave de criptografia gerenciada pelo cliente (CMEK). Uma CMEK está disponível para criptografia apenas na região us-central1. Em todas as outras regiões disponíveis, uma chave de propriedade do Google e gerenciada pelo Google será usada. Para mais informações, consulte Informações gerais da CMEK.
    • Conta de serviço (opcional): escolha uma conta de serviço gerenciada pelo usuário. Uma conta de serviço determina quais recursos do Google Cloud podem ser acessados com seu código de serviço. Se você não escolher uma conta de serviço, será usado um agente de serviço que inclui permissões apropriadas para a maioria dos modelos.
  7. Clique em Continuar.
  8. Se você quiser fazer upload do arquivo do conjunto de dados, selecione  Fazer upload do arquivo JSONL no Cloud Storage. Se o arquivo do conjunto de dados já estiver em um bucket do Cloud Storage, selecione  Arquivo JSONL no Cloud Storage.

    Fazer upload de um arquivo JSONL

    • Em 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.

    Usar um arquivo JSONL

    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 avaliar o modelo ajustado, selecione Ativar avaliação do modelo e configure a avaliação do modelo:
    • Conjunto de dados de avaliação (opcional): o URI do arquivo JSONL que contém o conjunto de dados de avaliação para avaliação e previsão em lote. Não há suporte à avaliação de codechat-bison. Para mais informações, consulte Formato do conjunto de dados para ajustar um modelo de código. O conjunto de dados de avaliação requer de 10 a 250 exemplos.
    • Intervalo de avaliação: (opcional, 20 padrão) o número de etapas de ajuste entre cada avaliação. Um intervalo de avaliação não é compatível com modelos de chat. Como a avaliação é executada em todo o conjunto de dados de avaliação, um intervalo de avaliação menor resulta em um tempo de ajuste mais longo. Por exemplo, se steps for 200 e EVAL_INTERVAL for 100, você terá apenas dois pontos de dados para as métricas de avaliação. Esse parâmetro exige que a evaluation_data_uri seja definida.
    • Ativar parada antecipada: (opcional, padrão true) uma boolean que, se definida como true, interrompe o ajuste antes de concluir todas as etapas de ajuste quando o desempenho do modelo, medido pela acurácia dos tokens previstos, não melhora o suficiente entre as execuções de avaliações. Se false, o ajuste continuará até que todas as etapas de ajuste sejam concluídas. Esse parâmetro exige que a evaluation_data_uri seja definida. A ativação da parada antecipada não é compatível com modelos de chat.
    • Ativar seleção de checkpoints: quando ativada, a Vertex AI seleciona e retorna o checkpoint com o melhor desempenho de avaliação do modelo de todos os checkpoints criados durante o job de ajuste. Quando desativado, o checkpoint final criado durante o job de ajuste é retornado. Cada checkpoint se refere a um snapshot do modelo durante um job de ajuste.
    • ID do TensorBoard: (opcional) o ID de uma instância do TensorBoard da Vertex AI. A instância do Vertex AI TensorBoard é usada para criar um experimento após a conclusão do job de ajuste. A instância do TensorBoard da Vertex AI precisa estar na mesma região do pipeline de ajuste.
  10. Clique em Iniciar ajuste.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

from __future__ import annotations

import os

import vertexai
from vertexai.language_models import CodeGenerationModel

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")


def tune_code_generation_model() -> CodeGenerationModel:
    # Initialize Vertex AI
    vertexai.init(project=PROJECT_ID, location="us-central1")

    model = CodeGenerationModel.from_pretrained("code-bison@002")

    # TODO(developer): Update the training data path
    tuning_job = model.tune_model(
        training_data="gs://cloud-samples-data/ai-platform/generative_ai/headline_classification.jsonl",
        tuning_job_location="europe-west4",
        tuned_model_location="us-central1",
    )

    print(tuning_job._status)
    # Example response:
    # ...
    # pipeline_job = aiplatform.PipelineJob.get('projects/1234567890/locations/europe-west4/pipelineJobs/tune...
    # PipelineState.PIPELINE_STATE_PENDING
    return model

Exemplo de comando curl para ajustar um modelo de geração de código

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
EVAL_DATASET_URI=gs://cloud-samples-data/vertex-ai/model-evaluation/eval_sample.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "The display name for your model in the UI",
      "dataset_uri": "'${DATASET_URI}'",
      "evaluation_data_uri:": "'${EVAL_DATASET_URI}'",
      "location": "'${LOCATION}'",
      "accelerator_type": "'${ACCELERATOR_TYPE}'",
      "large_model_reference": "code-bison@002",
      "learning_rate_multiplier": 1,
      "train_steps": 300
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}'

Criar um job de ajuste de modelo do chat de código

Veja a seguir como criar um job de ajuste de modelo de chat de código usando o console do Google Cloud ou os comandos da API REST.

REST

Para criar um job de ajuste de modelo de chat de código, envie uma solicitação POST usando o método pipelineJobs.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • TUNINGPIPELINE_DISPLAYNAME: um nome de exibição do pipelineJob.
  • OUTPUT_DIR: o URI do bucket de saída dos artefatos do pipeline.
  • PIPELINE_JOB_REGION: a região onde o job de ajuste do pipeline é executado. Essa também é a região padrão para onde o modelo ajustado é transferido. Se você quiser fazer upload do modelo para uma região diferente, use o parâmetro location para especificar a região de upload do modelo ajustado. Para mais informações, consulte Região do job do pipeline.
  • MODEL_UPLOAD_REGION (opcional): a região para onde o modelo ajustado é transferido. Se você não especificar uma região de upload do modelo, o modelo ajustado será transferido para a mesma região onde o job do pipeline é executado. Para mais informações, consulte Região de upload do modelo.
  • ACCELERATOR_TYPE (opcional, GPU padrão): o tipo de acelerador a ser usado para ajuste do modelo. As opções válidas são:
    • GPU: usa oito GPUs A100 de 80 GB para ajuste. Verifique se você tem cota suficiente. Se você escolher GPU, o VPC‐SC será permitido. A CMEK será permitida se os locais de ajuste e de upload do modelo forem us-centra1. Para mais informações, consulte Configurações de região do ajuste supervisionado. Se você escolher GPU, os processamentos de ajuste do modelo acontecerão na região us-central1.
    • TPU: usa 64 núcleos do pod da TPU v3 para ajuste. Verifique se você tem cota suficiente. A CMEK não é permitida, mas sim o VPC‐SC. Se você escolher TPU, os processamentos de ajuste do modelo acontecerão na região europe-west4.
  • MODEL_DISPLAYNAME: um nome de exibição do modelo enviado (criado) pelo pipelineJob.
  • DATASET_URI: URI do arquivo do conjunto de dados.
  • TENSORBOARD_RESOURCE_ID: (opcional) o ID de uma instância do TensorBoard da Vertex AI. A instância do Vertex AI TensorBoard é usada para criar um experimento após a conclusão do job de ajuste. A instância do TensorBoard da Vertex AI precisa estar na mesma região do pipeline de ajuste.
  • ENCRYPTION_KEY_NAME: (opcional) o nome totalmente qualificado de uma chave de criptografia gerenciada pelo cliente (CMEK) que você quer usar para criptografia de dados. Uma CMEK está disponível apenas em us-central1. Se você usar us-central1 e não especificar uma CMEK, uma chave do Google e gerenciada pelo Google será usada. As chaves de propriedade do Google e gerenciadas pelo Google são usadas por padrão em todas as outras regiões disponíveis. Para mais informações, consulte Informações gerais da CMEK.
  • DEFAULT_CONTEXT: o contexto que se aplica a todos os exemplos de ajuste no conjunto de dados de ajuste. Definir o campo context em um exemplo substitui o contexto padrão.
  • STEPS: a quantidade de etapas a serem executadas para ajustar o modelo. O valor padrão é 300. O tamanho do lote varia de acordo com o local de ajuste e o tamanho do modelo. Para modelos 8k, como text-bison@002, chat-bison@002, code-bison@002 e codechat-bison@002:
    • us-central1 tem um tamanho de lote de 8.
    • europe-west4 tem um tamanho de lote de 24.
    Para modelos 32k, como text-bison-32k, chat-bison-32k, code-bison-32k e codechat-bison-32k:
    • us-central1 tem um tamanho de lote de 8.
    • europe-west4 tem um tamanho de lote de 8.

    Por exemplo, se você treinar text-bison@002 em europe-west4, haverá 240 exemplos em um conjunto de dados de treinamento e você definirá steps como 20, então o número de exemplos de treinamento será o produto de 20 etapas e o tamanho do lote de 24 ou 480 etapas de treinamento. Nesse caso, haverá dois períodos no processo de treinamento porque ele passará pelos exemplos duas vezes. Em us-central1, se houver 240 exemplos em um conjunto de dados de treinamento e você definir steps como 15, o número de exemplos de treinamento será o produto de 15 etapas e o tamanho do lote de 8 ou 120 etapas de treinamento. Nesse caso, haverá 0,5 período porque haverá metade do número de etapas de treinamento que o número de exemplos.

  • LEARNING_RATE_MULTIPLIER: a taxa de aprendizado em cada iteração. O valor padrão é 1.

Método HTTP e URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

Corpo JSON da solicitação:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "codechat-bison@002",
      "default_context": "DEFAULT_CONTEXT",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a seguinte.
pipelineSpec foi truncado para economizar espaço.

Console

Para ajustar um modelo de geração de código ou bate-papo de código com ajuste supervisionado usando o console do Google Cloud, execute as seguintes etapas:

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

    Acessar o Vertex AI Studio

  2. Clique na guia Ajustar e destilar.
  3. Clique em Criar modelo ajustado.
  4. Clique em Ajuste supervisionado.
  5. Configure os detalhes do modelo:
    • Nome do modelo ajustado: insira um nome para o modelo ajustado.
    • Modelo base: selecione o modelo base que você quer ajustar.
    • Região: selecione a região onde o job de ajuste do pipeline será executado e onde o modelo ajustado será implantado.
    • Diretório de saída: insira o local do Cloud Storage em que os artefatos são armazenados quando o modelo é ajustado.
  6. Expanda Opções avançadas para definir configurações avançadas.
    • Etapas de treinamento: digite o número de etapas a serem executadas para o ajuste do modelo. O valor padrão é 300. O tamanho do lote varia de acordo com o local de ajuste e o tamanho do modelo. Para modelos 8k, como text-bison@002, chat-bison@002, code-bison@002 e codechat-bison@002:
      • us-central1 tem um tamanho de lote de 8.
      • europe-west4 tem um tamanho de lote de 24.
      Para modelos 32k, como text-bison-32k, chat-bison-32k, code-bison-32k e codechat-bison-32k:
      • us-central1 tem um tamanho de lote de 8.
      • europe-west4 tem um tamanho de lote de 8.

      Por exemplo, se você treinar text-bison@002 em europe-west4, haverá 240 exemplos em um conjunto de dados de treinamento e você definirá steps como 20, então o número de exemplos de treinamento será o produto de 20 etapas e o tamanho do lote de 24 ou 480 etapas de treinamento. Nesse caso, haverá dois períodos no processo de treinamento porque ele passará pelos exemplos duas vezes. Em us-central1, se houver 240 exemplos em um conjunto de dados de treinamento e você definir steps como 15, o número de exemplos de treinamento será o produto de 15 etapas e o tamanho do lote de 8 ou 120 etapas de treinamento. Nesse caso, haverá 0,5 período porque haverá metade do número de etapas de treinamento que o número de exemplos.

    • Multiplicador de taxa de aprendizado: digite o tamanho da etapa em cada iteração. O valor padrão é 1.
    • Tipo de acelerador (opcional): insira o tipo de acelerador a ser usado para ajuste do modelo. As opções válidas são:
      • GPU: usa oito GPUs A100 de 80 GB para ajuste. Verifique se você tem cota suficiente. Se você escolher GPU, o VPC‐SC será permitido. A CMEK será permitida se os locais de ajuste e de upload do modelo forem us-centra1. Para mais informações, consulte Configurações de região do ajuste supervisionado. Se você escolher GPU, os processamentos de ajuste do modelo acontecerão na região us-central1.
      • TPU: usa 64 núcleos do pod da TPU v3 para ajuste. Verifique se você tem cota suficiente. A CMEK não é permitida, mas sim o VPC‐SC. Se você escolher TPU, os processamentos de ajuste do modelo acontecerão na região europe-west4.
    • Adicionar uma instância do TensorBoard: (opcional) o ID de uma instância do TensorBoard da Vertex AI. A instância do Vertex AI TensorBoard é usada para criar um experimento após a conclusão do job de ajuste. A instância do TensorBoard da Vertex AI precisa estar na mesma região do pipeline de ajuste.
    • Criptografia (Opcional) Escolha usar uma chave de propriedade do Google e gerenciada pelo Google ou uma chave de criptografia gerenciada pelo cliente (CMEK). Uma CMEK está disponível para criptografia apenas na região us-central1. Em todas as outras regiões disponíveis, uma chave de propriedade do Google e gerenciada pelo Google será usada. Para mais informações, consulte Informações gerais da CMEK.
    • Conta de serviço (opcional): escolha uma conta de serviço gerenciada pelo usuário. Uma conta de serviço determina quais recursos do Google Cloud podem ser acessados com seu código de serviço. Se você não escolher uma conta de serviço, será usado um agente de serviço que inclui permissões apropriadas para a maioria dos modelos.
  7. Clique em Continuar.
  8. Se você quiser fazer upload do arquivo do conjunto de dados, selecione  Fazer upload do arquivo JSONL no Cloud Storage. Se o arquivo do conjunto de dados já estiver em um bucket do Cloud Storage, selecione  Arquivo JSONL no Cloud Storage.

    Fazer upload de um arquivo JSONL

    • Em 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.

    Usar um arquivo JSONL

    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 avaliar o modelo ajustado, selecione Ativar avaliação do modelo e configure a avaliação do modelo:
    • Conjunto de dados de avaliação (opcional): o URI do arquivo JSONL que contém o conjunto de dados de avaliação para avaliação e previsão em lote. Não há suporte à avaliação de codechat-bison. Para mais informações, consulte Formato do conjunto de dados para ajustar um modelo de código. O conjunto de dados de avaliação requer de 10 a 250 exemplos.
    • Intervalo de avaliação: (opcional, 20 padrão) o número de etapas de ajuste entre cada avaliação. Um intervalo de avaliação não é compatível com modelos de chat. Como a avaliação é executada em todo o conjunto de dados de avaliação, um intervalo de avaliação menor resulta em um tempo de ajuste mais longo. Por exemplo, se steps for 200 e EVAL_INTERVAL for 100, você terá apenas dois pontos de dados para as métricas de avaliação. Esse parâmetro exige que a evaluation_data_uri seja definida.
    • Ativar parada antecipada: (opcional, padrão true) uma boolean que, se definida como true, interrompe o ajuste antes de concluir todas as etapas de ajuste quando o desempenho do modelo, medido pela acurácia dos tokens previstos, não melhora o suficiente entre as execuções de avaliações. Se false, o ajuste continuará até que todas as etapas de ajuste sejam concluídas. Esse parâmetro exige que a evaluation_data_uri seja definida. A ativação da parada antecipada não é compatível com modelos de chat.
    • Ativar seleção de checkpoints: quando ativada, a Vertex AI seleciona e retorna o checkpoint com o melhor desempenho de avaliação do modelo de todos os checkpoints criados durante o job de ajuste. Quando desativado, o checkpoint final criado durante o job de ajuste é retornado. Cada checkpoint se refere a um snapshot do modelo durante um job de ajuste.
    • ID do TensorBoard: (opcional) o ID de uma instância do TensorBoard da Vertex AI. A instância do Vertex AI TensorBoard é usada para criar um experimento após a conclusão do job de ajuste. A instância do TensorBoard da Vertex AI precisa estar na mesma região do pipeline de ajuste.
  10. Clique em Iniciar ajuste.

Exemplo de comando curl para ajustar um modelo de chat de código

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-chat-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "your-model-display-name",
      "dataset_uri": "'${DATASET_URI}'",
      "location": "'${LOCATION}'",
      "large_model_reference": "codechat-bison@002",
      "train_steps": 300,
      "learning_rate_multiplier": 1,
      "encryption_spec_key_name": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}'

A tabela a seguir mostra as configurações recomendadas para ajustar um modelo de código por tarefa:

Tarefa Nº de exemplos no conjunto de dados Etapas de treinamento
Geração de códigos 500+ 200-1000
Chat de código 500+ 200-1000

Nas etapas de treinamento, você pode testar mais de um valor para ter o melhor desempenho em um determinado conjunto de dados, por exemplo, 100, 200, 500.

Ver uma lista de modelos ajustados

Use o Console do Google Cloud ou o SDK da Vertex AI para Python para ver uma lista dos modelos de código ajustados no projeto atual.

Ver uma lista de modelos de código ajustados (console)

Para ver os modelos ajustados de chat e geração de código ajustados no Console do Google Cloud, acesse a página do Vertex AI Model Registry.

Acessar o Vertex AI Model Registry

Ver uma lista de modelos de geração de código (SDK) ajustados

O exemplo de código a seguir usa o SDK da Vertex AI para Python para listar os modelos de geração de código ajustados no projeto atual:

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.from_pretrained("code-bison@002").list_tuned_model_names()

Ver uma lista de modelos de chat de código (SDK) ajustados

O exemplo de código a seguir usa o SDK da Vertex AI para Python para listar os modelos de chat de código ajustados no projeto atual:

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.from_pretrained("codechat-bison@002").list_tuned_model_names()

Carregar um modelo ajustado

Use o SDK da Vertex AI para Python para carregar um modelo de código ajustado.

Carregar um modelo de geração de código ajustado

O código de amostra a seguir usa o SDK da Vertex AI para Python para carregar um modelo de geração de código ajustado: No exemplo de código, substitua TUNED_MODEL_NAME pelo nome do recurso qualificado do modelo ajustado. Esse nome está no formato projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID. Encontre o ID do modelo ajustado no Vertex AI Model Registry.

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

Carregar um modelo de bate-papo de código ajustado

O código de amostra a seguir usa o SDK da Vertex AI para Python para carregar um modelo de chat de código ajustado:

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.get_tuned_model(TUNED_MODEL_NAME)

Métricas de ajuste e avaliação

É possível configurar um job de ajuste de modelo para coletar e relatar métricas de ajuste e avaliação de modelos, que podem ser visualizadas usando o TensorBoard da Vertex AI.

Métricas de ajuste de modelos

É possível configurar um job de ajuste de modelo para coletar as seguintes métricas de ajuste para chat-bison, code-bison, codechat-bison e text-bison:
  • /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 avaliação de modelo

É possível configurar um job de ajuste de modelo para coletar as seguintes métricas de avaliação para code-bison e text-bison:

  • /eval_total_loss: perda do conjunto de dados de avaliação em uma etapa de avaliação.
  • /eval_fraction_of_correct_next_step_preds: a precisão do token em uma etapa de avaliação. 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 avaliação.
  • /eval_num_predictions: número de tokens previstos em uma etapa de avaliação.

As visualizações de métricas ficam disponíveis após a conclusão do job de ajuste do modelo. Se você especificar apenas um ID de instância do TensorBoard da Vertex AI e não um conjunto de dados de avaliação ao criar o job de ajuste, apenas as visualizações das métricas de ajuste estarão disponíveis.

Cota

Os jobs de ajuste em us-central1 usam oito GPUs A100 de 80 GB.

Os jobs de ajuste em europe-west4 usam 64 núcleos do recurso de treinamento de modelo personalizado TPU v3 pod.

Se você não tiver cota suficiente ou quiser executar vários jobs de ajuste simultâneos no seu projeto do Google Cloud, será preciso solicitar uma cota adicional:

  • Para us-central1, envie uma solicitação de Restricted image training Nvidia A100 80 GB GPUs per region na região us-central1 em múltiplos de oito.

  • Para europe-west4, envie uma solicitação para Restricted image training TPU V3 pod cores per region na região europe-west4 em múltiplos de 64.

A seguir

  • Para mais modelos, recursos avançados e a capacidade de transcrever arquivos em até oito horas, consulte a Conversão de voz em texto.