使用偏好调优对 Gemini 模型进行调优

本文档介绍如何对 Gemini 模型执行偏好调优。

准备工作

在开始之前,您必须按照为 Gemini 模型准备偏好调优数据中的说明准备数据集。

创建调优作业

控制台

如需使用 Google Cloud 控制台 配置偏好设置调优,请执行以下步骤:

  1. 在 Google Cloud 控制台的 Gemini Enterprise Agent Platform 部分中,前往 Agent Platform Studio 页面。

    前往 Agent Platform Studio

  2. 点击创建经调整的模型 。

  3. 选择偏好设置调优 。

  4. 在模型详情下,配置以下内容:

    1. 在已调优模型的名称字段中,输入新的调优后模型的名称,最多 128 个字符。
    2. 在基本模型 字段中,选择要调优的基础模型。
    3. 在区域 下拉字段中,选择运行流水线调优作业以及部署调优后模型的区域。
  5. 在调优设置下,配置以下内容:

    1. 在周期数字段中,输入要为模型调优运行的步数。
    2. 在适配器大小字段中,输入要用于模型调优的适配器大小。
    3. 可选:在 Beta 字段中,输入所需的 Beta 值。Beta 是用于控制调优后的模型与基准模型的一致程度的系数。
    4. 在学习速率调节系数 字段中,输入 每个迭代的步长。默认值为 1。 .
  6. 可选:如需停用中间检查点并仅使用最新的检查点,请点击仅导出最后一个检查点 开关。

  7. 点击继续。

    调优数据集页面随即会打开。

  8. 如需上传数据集文件,请选择以下选项之一:

    1. 如果您尚未上传数据集,请选中将文件上传到 Cloud Storage 单选按钮。
    2. 在选择 JSONL 文件字段中,点击浏览,然后选择数据集文件。
    3. 在数据集位置字段中,点击浏览并选择要存储数据集文件的 Cloud Storage 存储桶。
    4. 如果您的数据集文件已在 Cloud Storage 存储桶中,请选择 Cloud Storage 上的现有文件单选按钮。
    5. 在 Cloud Storage 文件路径字段中,点击浏览,然后选择数据集文件所在的 Cloud Storage 存储桶。
  9. (可选)如需在训练期间获取验证指标,请点击启用模型验证 开关。

    1. 在验证数据集 文件中,输入验证数据集的 Cloud Storage 路径。
  10. 点击开始调优。

    您的新模型会显示在“调优和蒸馏”页面上的托管式调优部分下。模型调优完成后,状态会显示成功。

REST

如需创建模型调优作业,请使用 tuningJobs.create 方法发送 POST 请求。某些参数只受部分模型支持。确保仅包含您要调优的模型的适用参数。

在使用任何请求数据之前, 请先进行以下替换:

  • PROJECT_ID:您的项目 ID。
  • TUNING_JOB_REGION:运行调优作业的区域。这也是上传调优后模型的默认区域。
  • BASE_MODEL:要调整的基础模型的名称。
  • TRAINING_DATASET_URI:训练数据集的 Cloud Storage URI。数据集必须采用 JSONL 文件格式。为获得最佳效果,请提供至少 100 到 500 个样本。如需了解详情,请参阅监督式调优数据集简介。
  • VALIDATION_DATASET_URI可选:验证数据集文件的 Cloud Storage URI。
  • EPOCH_COUNT可选:在训练期间,模型完整通过整个训练数据集的次数。如果不设置,则使用预填充的建议值。
  • BETAOptional:用于控制调优后的模型与基准模型的一致程度的系数。
  • ADAPTER_SIZE可选:用于调优作业的适配器大小。 适配器大小会影响调优作业的可训练参数数量。适配器越大,意味着模型可以学习更复杂的任务,但需要更大的训练数据集和更长的训练时间。
  • LEARNING_RATE_MULTIPLIER:可选:要应用于建议的学习速率的调节系数。如果不设置,则使用建议的值。
  • EXPORT_LAST_CHECKPOINT_ONLY(可选):设置为 true 可仅使用最新的检查点。
  • TUNED_MODEL_DISPLAYNAME可选:调优后模型的显示名称。如果未设置,则会生成随机名称。
  • KMS_KEY_NAME(可选):用于保护资源的客户管理的加密密钥的 Cloud KMS 资源标识符。密钥的格式为 projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key。密钥需要与计算资源创建位置处于同一区域。如需了解详情,请参阅客户管理的加密密钥 (CMEK)。
  • SERVICE_ACCOUNTOptional:运行 tuningJob 工作负载所用的服务账号。如果未指定,则使用项目中的 Agent Platform Secure Fine-Tuning Service Agent。请参阅 Tuning Service Agent。如果您计划使用客户管理的服务账号,则必须向该服务账号授予 roles/aiplatform.tuningServiceAgent 角色。此外,还要向客户管理的服务账号授予 Tuning Service Agent roles/iam.serviceAccountTokenCreator 角色。

HTTP 方法和网址:

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

请求 JSON 正文:

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

如需发送您的请求,请展开以下选项之一:

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

Google Gen AI SDK

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'

调整超参数

建议您提交第一个调优作业,而无需更改超参数。默认值是基于基准测试结果的建议值,可实现最佳模型输出质量。

  • 周期数:在训练期间,模型完整通过整个 训练数据集的次数。Gemini Enterprise Agent Platform 会根据训练数据集大小自动调整默认值。此值 基于基准测试结果,可优化模型输出质量。
  • Beta:用于控制调优后的模型与基准模型的一致程度的系数。Beta 值越低,意味着模型会更积极地更新为首选 响应。建议的范围是 0.01 到 0.5(含 0.01 和 0.5)。Beta 值为 0 会阻止模型学习。
  • 适配器大小:用于调优作业的适配器大小。适配器大小会影响调优作业的可训练参数数量。适配器越大,意味着模型可以学习更复杂的任务,但需要更大的训练数据集和更长的训练时间。
  • 学习速率调节系数:要应用于建议的学习速率的调节系数。您可以增加该值以加快收敛速度,也可以减小该值以避免过拟合。

查看或取消调优作业

如需列出调优作业、查看调优作业详细信息、取消调优作业或删除调优后的模型,请参阅监督式微调文档中的以下部分:

模型调优指标

模型调优作业会自动收集以下调优指标:

  • /preference_optimization_train_loss:一个训练步长中调优数据集的偏好损失。

模型验证指标

如果提供了验证数据,模型调优作业会自动收集以下验证指标:

  • /eval_total_loss:验证步骤中验证数据集的偏好损失。

调优作业开始运行后,指标可视化即可使用。 随着调优的进行,它们会实时更新。如果您在创建调优作业时未指定验证数据集,则系统只提供调优指标的可视化内容。

后续步骤