Ajusta los modelos de Gemini con el ajuste según preferencias

En este documento, se describe cómo realizar el ajuste de preferencias en un modelo de Gemini.

Antes de comenzar

Antes de comenzar, debes preparar un conjunto de datos siguiendo las instrucciones que se indican en Prepara los datos de ajuste de preferencias para los modelos de Gemini.

Crea un trabajo de ajuste.

Console

Para configurar el ajuste de preferencias con la consola de Cloud de Confiance , sigue estos pasos:

  1. En la sección Gemini Enterprise Agent Platform de la consola de Cloud de Confiance , ve a la página Ajuste.

    Ir a Ajuste

  2. Haz clic en Crear modelo ajustado.

  3. Selecciona Ajuste de preferencias.

  4. En Detalles del modelo, configura lo siguiente:

    1. En el campo Nombre del modelo ajustado, ingresa un nombre para el modelo ajustado nuevo, de hasta 128 caracteres.
    2. En el campo Modelo base, selecciona el modelo de base que deseas ajustar.
    3. En el campo desplegable Región, selecciona la región en la que se ejecuta el trabajo de ajuste de canalización y en la que se implementa el modelo ajustado.
  5. En Configuración de ajuste, establece los siguientes parámetros:

    1. En el campo Cantidad de ciclos de entrenamiento, ingresa la cantidad de pasos que se ejecutarán para el ajuste del modelo.
    2. En el campo Adapter Size, ingresa el tamaño del adaptador que se usará para el ajuste del modelo.
    3. Opcional: En el campo Beta, ingresa el valor de beta que desees. Beta es el coeficiente que controla qué tan cerca se alinea el modelo ajustado con su modelo de referencia.
    4. En el campo Multiplicador de tasa de aprendizaje, ingresa el tamaño del paso en cada iteración. El valor predeterminado es 1. .
  6. Opcional: Para inhabilitar los puntos de control intermedios y usar solo el punto de control más reciente, haz clic en el botón de activación Exportar solo el último punto de control.

  7. Haz clic en Continuar.

    Se abrirá la página Conjunto de datos de ajuste.

  8. Para subir un archivo de conjunto de datos, selecciona una de las siguientes opciones:

    1. Si aún no subiste un conjunto de datos, selecciona el botón de selección para Subir archivo a Cloud Storage.
    2. En el campo Seleccionar archivo JSONL, haz clic en Explorar y elige tu archivo de conjunto de datos.
    3. En Ubicación del conjunto de datos, haz clic en Explorar y elige el bucket de Cloud Storage en el que deseas almacenar el archivo del conjunto de datos.
    4. Si tu archivo de conjunto de datos ya se encuentra en un bucket de Cloud Storage, selecciona el botón de selección de Archivo existente en Cloud Storage.
    5. En Ruta del archivo de Cloud Storage, haz clic en Explorar y elige el bucket de Cloud Storage en el que se encuentra el archivo de conjunto de datos.
  9. Para obtener métricas de validación durante el entrenamiento, haz clic en el botón de activación Habilitar validación del modelo (opcional).

    1. En el archivo Conjunto de datos de validación, ingresa la ruta de Cloud Storage de tu conjunto de datos de validación.
  10. Haz clic en Iniciar ajuste.

    Tu modelo nuevo aparece en la sección Ajuste administrado en la página Ajustar y sintetizar. Cuando el modelo termina de ajustarse, el Estado dice Completado.

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: 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.
  • 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 prepropagado.
  • BETAOpcional: Es el coeficiente que controla qué tan cerca se alinea el modelo ajustado con su modelo de referencia.
  • 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.
  • EXPORT_LAST_CHECKPOINT_ONLYOpcional: Se establece en true para usar solo el punto de control más reciente.
  • TUNED_MODEL_DISPLAYNAMEOpcional: Un nombre visible para el modelo ajustado. Si no se establece, se genera un nombre aleatorio.
  • KMS_KEY_NAMEOpcional: Es el identificador de recursos de Cloud KMS de la clave de encriptación administrada por el cliente que se usa para proteger un recurso. La clave tiene el siguiente formato: projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key. La clave debe estar en la misma región en la que se crea el recurso de procesamiento. Para obtener más información, consulta Claves de encriptación administradas por el cliente (CMEK).
  • SERVICE_ACCOUNTOpcional: Es la cuenta de servicio con la que se ejecuta la carga de trabajo de tuningJob. Si no se especifica, se usa el agente de servicio de ajuste seguro de Agent Platform en el proyecto. Consulta Agente de servicio de ajuste. Si planeas usar una cuenta de servicio administrada por el cliente, debes otorgarle el rol roles/aiplatform.tuningServiceAgent. También otorga el rol de agente de servicio de ajuste roles/iam.serviceAccountTokenCreator a la cuenta de servicio administrada por el cliente.

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

Ejemplo del comando curl

PROJECT_ID=myproject
LOCATION=global
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
   "baseModel": "${BASE_MODEL}",
   "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "gs://mybucket/preference_tuning/data/train_data.jsonl",
      "validationDatasetUri": "gs://mybucket/preference_tuning/data/validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

SDK de IA generativa de Google

import time

from google import genai
from google.genai.types import CreateTuningJobConfig, HttpOptions, TuningDataset

client = genai.Client(http_options=HttpOptions(api_version="v1"))

training_dataset = TuningDataset(
    gcs_uri="gs://mybucket/preference_tuning/data/train_data.jsonl",
)
validation_dataset = TuningDataset(
    gcs_uri="gs://mybucket/preference_tuning/data/validation_data.jsonl",
)

# Refer to https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini-use-continuous-tuning#google-gen-ai-sdk
# for example to continuous tune from SFT tuned model.
tuning_job = client.tunings.tune(
    base_model="gemini-3.5-flash",
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
        method="PREFERENCE_TUNING",
        validation_dataset=validation_dataset,
    ),
)

running_states = set([
    "JOB_STATE_PENDING",
    "JOB_STATE_RUNNING",
])

while tuning_job.state in running_states:
    print(tuning_job.state)
    tuning_job = client.tunings.get(name=tuning_job.name)
    time.sleep(60)

print(tuning_job.tuned_model.model)
print(tuning_job.tuned_model.endpoint)
print(tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# projects/123456789012/locations/us-central1/metadataStores/default/contexts/tuning-experiment-2025010112345678

if tuning_job.tuned_model.checkpoints:
    for i, checkpoint in enumerate(tuning_job.tuned_model.checkpoints):
        print(f"Checkpoint {i + 1}: ", checkpoint)
    # Example response:
    # Checkpoint 1:  checkpoint_id='1' epoch=1 step=10 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789000000'
    # Checkpoint 2:  checkpoint_id='2' epoch=2 step=20 endpoint='projects/123456789012/locations/us-central1/endpoints/123456789012345'

Ajusta hiperparámetros

Se recomienda que envíes tu primer trabajo de ajuste sin cambiar los hiperparámetros. El valor predeterminado es el valor recomendado según nuestros resultados de comparativas para obtener la mejor calidad de los resultados del modelo.

  • Ciclos de entrenamiento: Es la cantidad de pases completos que el modelo realiza en todo el conjunto de datos de entrenamiento durante el entrenamiento. Gemini Enterprise Agent Platform ajusta automáticamente el valor predeterminado al tamaño de tu conjunto de datos de entrenamiento. Este valor se basa en los resultados de las comparativas para optimizar la calidad de los resultados del modelo.
  • Beta: Es el coeficiente que controla qué tan cerca se alinea el modelo ajustado con su modelo de referencia. Una beta más baja significa actualizaciones más agresivas hacia las respuestas preferidas. El rango recomendado es de 0.01 a 0.5, inclusive. Un valor beta de 0 impide que el modelo aprenda.
  • Tamaño del adaptador: Es 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.
  • Multiplicador de tasa de aprendizaje: Ingresa un multiplicador para aplicar a la tasa de aprendizaje recomendada. Puedes aumentar el valor para que converja más rápido o disminuirlo para evitar el sobreajuste.

Visualiza o cancela un trabajo de ajuste

Para enumerar los trabajos de ajuste, ver los detalles de un trabajo de ajuste, cancelar un trabajo de ajuste o borrar un modelo ajustado, consulta las siguientes secciones en la documentación de ajuste supervisado:

Métricas de ajuste de modelos

El trabajo de ajuste de modelos recopila de forma automática las siguientes métricas de ajuste:

  • /preference_optimization_train_loss: Es la pérdida de preferencia del conjunto de datos de ajuste en un paso de entrenamiento.

Métricas de validación de modelos

Cuando se proporcionan datos de validación, el trabajo de ajuste de modelos recopila de forma automática las siguientes métricas de validación:

  • /eval_total_loss: Es la pérdida de preferencia del conjunto de datos de validación en un paso de validación.

Las visualizaciones de métricas están disponibles después de que se inicia el trabajo de ajuste. Se actualizan en tiempo real a medida que avanza el ajuste. Si no especificas un conjunto de datos de validación cuando creas el trabajo de ajuste, solo las visualizaciones para las métricas de ajuste están disponibles.

¿Qué sigue?