API Tuning

O ajuste de modelos é um processo crucial na adaptação do Gemini para executar tarefas específicas com maior precisão. O ajuste de modelos fornece um modelo com um conjunto de dados de treinamento que contém um conjunto de exemplos de tarefas downstream específicas.

Use a API Gemini Tuning para os seguintes casos de uso:

Modelos compatíveis:

É possível usar o ajuste fino supervisionado nos seguintes modelos do Gemini:

Modelo Versão
Gemini 1.0 Pro gemini-1.0-pro-002

Exemplo de sintaxe

Sintaxe para ajustar um modelo.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs \
-d '{
  "baseModel": "...",
  "supervisedTuningSpec" : {
    ...
      "hyper_parameters": {
        ...
      },
  },
  "tunedModelDisplayName": "",
}'

Lista de parâmetros

Confira exemplos para detalhes de implementação.

Corpo da solicitação

O corpo da solicitação contém dados com os seguintes parâmetros:

Parâmetros

source_model

Opcional: string

Nome do modelo de fundação que está sendo ajustado. Os valores aceitos são: gemini-1.0-pro-002.

tunedModelDisplayName

string

TunedModel: o nome de exibição do . O nome pode ter até 128 caracteres e conter qualquer caractere UTF-8.

supervisedTuningSpec

Parâmetros

training_dataset

string

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

Opcional: string

URI do Cloud Storage do conjunto de dados de validação. Seu conjunto de dados precisa estar formatado como um arquivo JSONL. Um conjunto de dados pode conter até 256 exemplos. Se você fornecer esse arquivo, os dados serão usados para gerar métricas de validação periodicamente durante o ajuste. Para mais informações, consulte Sobre conjuntos de dados de ajuste supervisionados .

epoch_count

Opcional: int

Número de passes completos que o modelo faz em todo o conjunto de dados de treinamento durante o treinamento.

learning_rate_multiplier

Opcional: float

Multiplicador para ajustar a taxa de aprendizado padrão.

adapter_size

Opcional: AdapterSize

Tamanho do adaptador para ajuste.

tuned_model_display_name

Opcional: string

Nome de exibição da TunedModel. O nome pode ter até 128 caracteres e conter qualquer caractere UTF-8.

AdapterSize

Tamanho do adaptador para o job de ajuste.

Parâmetros

ADAPTER_SIZE_UNSPECIFIED

Tamanho do adaptador não especificado.

ADAPTER_SIZE_ONE

Tamanho do adaptador 1.

ADAPTER_SIZE_FOUR

Tamanho do adaptador 4.

ADAPTER_SIZE_EIGHT

Tamanho do adaptador 8.

ADAPTER_SIZE_SIXTEEN

Tamanho do adaptador 16.

Exemplos

Criar um job de ajuste supervisionado

É possível criar um job de ajuste de modelo de texto supervisionado usando o SDK da Vertex AI para Python ou enviando uma solicitação POST.

Caso de uso básico

O caso de uso básico define apenas valores para baseModel e training_dataset_uri. Todos os outros parâmetros usam os valores padrão.

REST

Para criar um job de ajuste do modelo, envie uma solicitação POST usando o método tuningJobs.create. Alguns dos parâmetros não são compatíveis com todos os modelos. Inclua apenas os parâmetros aplicáveis ao modelo que você está ajustando.

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

  • PROJECT_ID: o ID do projeto.
  • TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.
  • BASE_MODEL: nome do modelo de fundação a ser ajustado. Valores aceitos: gemini-1.0-pro-002.
  • TRAINING_DATASET_URI: URI do Cloud Storage do conjunto de dados de treinamento. O conjunto de dados precisa estar formatado como um arquivo JSONL. Para melhores resultados, forneça pelo menos 100 a 500 exemplos. Para mais informações, consulte Sobre conjuntos de dados de ajuste supervisionados .

Método HTTP e URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Corpo JSON da solicitação:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "training_dataset_uri": "TRAINING_DATASET_URI"
  },
}

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.

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.0-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)

Caso de uso avançado

O caso de uso avançado expande o caso de uso básico, mas também define valores para hyper_parameters opcional, como epoch_count, learning_rate_multiplier e adapter_size.

REST

Para criar um job de ajuste do modelo, envie uma solicitação POST usando o método tuningJobs.create. Alguns dos parâmetros não são compatíveis com todos os modelos. Inclua apenas os parâmetros aplicáveis ao modelo que você está ajustando.

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

  • PROJECT_ID: o ID do projeto.
  • TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.
  • BASE_MODEL: nome do modelo de fundação a ser ajustado. Valores aceitos: gemini-1.0-pro-002.
  • TRAINING_DATASET_URI: URI do Cloud Storage do conjunto de dados de treinamento. O conjunto de dados precisa estar formatado como um arquivo JSONL. Para melhores resultados, forneça pelo menos 100 a 500 exemplos. Para mais informações, consulte Sobre conjuntos de dados de ajuste supervisionados .
  • VALIDATION_DATASET_URIOpcional: o URI do Cloud Storage do arquivo do conjunto de dados de validação.
  • EPOCH_COUNTOpcional: o número de períodos a serem treinados. Deixe sem definição para usar o valor recomendado.
  • ADAPTER_SIZEOpcional: o tamanho do adaptador que será usado para o job de ajuste.
  • LEARNING_RATE_MULTIPLIER: Opcional: um multiplicador para aplicar à taxa de aprendizado recomendada. Não defina essa configuração para usar o valor recomendado.
  • TUNED_MODEL_DISPLAYNAMEOpcional: um nome de exibição para o modelo ajustado. Se não for definido, um nome aleatório será gerado.

Método HTTP e URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Corpo JSON da solicitação:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "training_dataset_uri": "TRAINING_DATASET_URI",
      "validation_dataset_uri": "VALIDATION_DATASET_URI",
      "hyper_parameters": {
          "epoch_count": EPOCH_COUNT,
          "adapter_size": ADAPTER_SIZE,
          "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME,
}

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

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a seguinte.

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.0-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
    # The following parameters are optional
    validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl",
    epochs=4,
    learning_rate_multiplier=1.0,
    tuned_model_display_name="tuned_gemini_pro",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)

Listar jobs de ajuste

É possível visualizar uma lista de jobs de ajuste no projeto atual usando o SDK da Vertex AI para Python ou enviando uma solicitação GET.

REST

Para criar um job de ajuste do modelo, envie uma solicitação POST usando o método tuningJobs.create. Alguns dos parâmetros não são compatíveis com todos os modelos. Inclua apenas os parâmetros aplicáveis ao modelo que você está ajustando.

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

  • PROJECT_ID: o ID do projeto.
  • TUNING_JOB_REGION: a região onde o job de ajuste é executado. Essa também é a região padrão para onde o modelo ajustado é transferido.

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

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)

Detalhes de um job de ajuste

É possível conferir os detalhes de um job de ajuste usando o SDK da Vertex AI para Python ou enviando uma solicitação GET.

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

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project, location
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
response = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)

print(response)

Cancelar um job de ajuste

É possível cancelar um job de ajuste usando o SDK da Vertex AI para Python ou enviando uma solicitação POST.

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

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project, location
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
job = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)
job.cancel()

A seguir

Para consultar a documentação detalhada, acesse: