API de ajuste

El ajuste de modelos es un proceso fundamental para adaptar Gemini y que así realice tareas específicas con mayor precisión y exactitud. El ajuste del modelo proporciona un modelo con un conjunto de datos de entrenamiento que contiene un conjunto de ejemplos de tareas descendentes específicas.

Usa la API de ajuste de Gemini para los siguientes casos de uso:

Modelos compatibles:

Puedes usar el ajuste supervisado en los siguientes modelos de Gemini:

Modelo Versión
Gemini 1.0 Pro gemini-1.0-pro-002

Ejemplo de sintaxis

Sintaxis para ajustar un 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

Consulta ejemplos para obtener detalles sobre la implementación.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con los siguientes parámetros:

Parámetros

source_model

Opcional: string

Nombre del modelo de base que se está ajustando. Los valores admitidos son: gemini-1.0-pro-002.

tunedModelDisplayName

string

El nombre visible del TunedModel. El nombre puede tener hasta 128 caracteres y puede constar de caracteres UTF-8.

supervisedTuningSpec

Parámetros

training_dataset

string

Es el URI de Cloud Storage de tu conjunto de datos de entrenamiento. Tu conjunto de datos debe tener el formato de un archivo JSONL. Para obtener mejores resultados, proporciona al menos entre 100 y 500 ejemplos. Para obtener más información, consulta Acerca de los conjuntos de datos de ajuste supervisado.

validation_dataset

Opcional: string

El URI de Cloud Storage de tu conjunto de datos de validación. Tu conjunto de datos debe tener el formato de un archivo JSONL. Un conjunto de datos puede contener hasta 256 ejemplos. Si proporcionas este archivo, los datos se usarán para generar métricas de validación de forma periódica durante el ajuste. Para obtener más información, consulta Acerca de los conjuntos de datos de ajuste supervisado .

epoch_count

Opcional: int

Cantidad de pases completos que el modelo realiza en todo el conjunto de datos de entrenamiento durante el entrenamiento.

learning_rate_multiplier

Opcional: float

Multiplicador para ajustar la tasa de aprendizaje predeterminada.

adapter_size

Opcional: AdapterSize

Tamaño del adaptador para el ajuste.

tuned_model_display_name

Opcional: string

Nombre visible de TunedModel. El nombre puede tener hasta 128 caracteres y puede constar de caracteres UTF-8.

AdapterSize

Tamaño del adaptador para el trabajo de ajuste.

Parámetros

ADAPTER_SIZE_UNSPECIFIED

Tamaño del adaptador no especificado.

ADAPTER_SIZE_ONE

Tamaño del adaptador 1.

ADAPTER_SIZE_FOUR

Tamaño del adaptador 4.

ADAPTER_SIZE_EIGHT

Tamaño del adaptador 8.

ADAPTER_SIZE_SIXTEEN

Tamaño del adaptador 16.

AdapterSize predeterminado si no se especifica:

Modelo Versión AdapterSize predeterminado
Gemini 1.0 Pro gemini-1.0-pro-002 ADAPTER_SIZE_ONE

Ejemplos

Crea un trabajo de ajuste supervisado

Puedes crear un trabajo de ajuste supervisado con el SDK de Vertex AI para Python o mediante una solicitud POST.

Caso de uso básico

El caso de uso básico solo establece valores para baseModel y training_dataset_uri. Todos los demás parámetros usan los valores predeterminados.

REST

Para crear un trabajo de ajuste de modelos, envía una solicitud POST mediante el método tuningJobs.create. Ten en cuenta que algunos de los parámetros no son compatibles con todos los modelos. Asegúrate de incluir solo los parámetros aplicables del modelo que estás ajustando.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
  • BASE_MODEL: El nombre del modelo de base para ajustar. Valores admitidos: gemini-1.0-pro-002.
  • TRAINING_DATASET_URI: Es el URI de Cloud Storage de tu conjunto de datos de entrenamiento. Tu conjunto de datos debe tener el formato de un archivo JSONL. Para obtener mejores resultados, proporciona al menos entre 100 y 500 ejemplos. Para obtener más información, consulta Acerca de los conjuntos de datos de ajuste supervisado .

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project_id and location
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 avanzado

El caso de uso avanzado expande el caso de uso básico, pero también establece valores para hyper_parameters opcional, como epoch_count, learning_rate_multiplier y adapter_size.

REST

Para crear un trabajo de ajuste de modelos, envía una solicitud POST mediante el método tuningJobs.create. Ten en cuenta que algunos de los parámetros no son compatibles con todos los modelos. Asegúrate de incluir solo los parámetros aplicables del modelo que estás ajustando.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
  • BASE_MODEL: El nombre del modelo de base para ajustar. Valores admitidos: gemini-1.0-pro-002.
  • TRAINING_DATASET_URI: Es el URI de Cloud Storage de tu conjunto de datos de entrenamiento. Tu conjunto de datos debe tener el formato de un archivo JSONL. Para obtener mejores resultados, proporciona al menos entre 100 y 500 ejemplos. Para obtener más información, consulta Acerca de los conjuntos de datos de ajuste supervisado .
  • VALIDATION_DATASET_URIOpcional: Es el URI de Cloud Storage de tu archivo de conjunto de datos de validación.
  • EPOCH_COUNTOpcional: Es la cantidad de pases completos que el modelo realiza en todo el conjunto de datos de entrenamiento durante el entrenamiento. Déjala sin configurar para usar el valor recomendado.
  • ADAPTER_SIZEOpcional: el tamaño del adaptador que se usará para el trabajo de ajuste. El tamaño del adaptador influye en la cantidad de parámetros entrenables para el trabajo de ajuste. Un tamaño de adaptador más grande implica que el modelo puede aprender tareas más complejas, pero requiere un conjunto de datos de entrenamiento más grande y tiempos de entrenamiento más largos.
  • LEARNING_RATE_MULTIPLIER: Opcional: Un multiplicador para aplicar a la tasa de aprendizaje recomendada. Déjala sin configurar para usar el valor recomendado.
  • TUNED_MODEL_DISPLAYNAMEOpcional: Un nombre visible para el modelo ajustado. Si no se establece, se genera un nombre aleatorio.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project_id and location
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,
    adapter_size=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)

Enumera trabajos de ajuste

Puedes ver una lista de trabajos de ajuste en tu proyecto actual mediante el SDK de Vertex AI para Python o mediante el envío de una solicitud GET.

REST

Para crear un trabajo de ajuste de modelos, envía una solicitud POST mediante el método tuningJobs.create. Ten en cuenta que algunos de los parámetros no son compatibles con todos los modelos. Asegúrate de incluir solo los parámetros aplicables del modelo que estás ajustando.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Python

import vertexai
from vertexai.preview.tuning import sft

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

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)

Obtén detalles de un trabajo de ajuste

Puedes obtener los detalles de un trabajo de ajuste mediante el SDK de Vertex AI para Python o enviando una solicitud GET.

REST

Para ver una lista de trabajos de ajuste de modelos, envía una solicitud GET con el método tuningJobs.get y especifica TuningJob_ID.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
  • TUNING_JOB_ID: Es el ID del trabajo de ajuste.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

Python

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update project_id and 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)

Cancela un trabajo de ajuste

Puedes cancelar un trabajo de ajuste con el SDK de Vertex AI para Python o mediante una solicitud POST.

REST

Para ver una lista de trabajos de ajuste de modelos, envía una solicitud GET con el método tuningJobs.cancel y especifica TuningJob_ID.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto.
  • TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
  • TUNING_JOB_ID: Es el ID del trabajo de ajuste.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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()

¿Qué sigue?

Para obtener documentación detallada, consulta lo siguiente: