本文档介绍如何使用监督式微调来调优 Gemini 模型。
准备工作
在开始之前,您必须准备好监督式微调数据集。具体要求因用例而异。
支持的模型
以下 Gemini 模型支持监督式调优:
创建调优作业
您可以使用 REST API、Vertex AI SDK for Python、Google Gen AI SDK、 Google Cloud 控制台或 Colab Enterprise 创建监督式微调作业。
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可选:在训练期间,模型完整通过整个训练数据集的次数。如果不设置,则使用预先填充的建议值。
- 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_ACCOUNT可选:tuningJob 工作负载以哪个服务账号运行。如果未指定,系统会使用项目中的 Vertex AI 安全微调服务代理。请参阅调优服务代理。如果您计划使用客户管理的服务账号,则必须向该服务账号授予
roles/aiplatform.tuningServiceAgent
角色。此外,您还要向调优服务代理授予vertex-ai-service-account
权限。
HTTP 方法和网址:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
请求 JSON 正文:
{ "baseModel": "BASE_MODEL", "supervisedTuningSpec" : { "trainingDatasetUri": "TRAINING_DATASET_URI", "validationDatasetUri": "VALIDATION_DATASET_URI", "hyperParameters": { "epochCount": "EPOCH_COUNT", "adapterSize": "ADAPTER_SIZE", "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER" }, "export_last_checkpoint_only": EXPORT_LAST_CHECKPOINT_ONLY, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME", "encryptionSpec": { "kmsKeyName": "KMS_KEY_NAME" }, "serviceAccount": "SERVICE_ACCOUNT" }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
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
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应。
示例 curl 命令
PROJECT_ID=myproject
LOCATION=us-central1
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": "gemini-2.0-flash-001",
"supervisedTuningSpec" : {
"training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_gemini"
}'
Python 版 Vertex AI SDK
Google Gen AI SDK
控制台
如需使用 Google Cloud 控制台通过监督式微调功能来调整文本模型,请执行以下步骤:
在 Google Cloud 控制台的 Vertex AI 部分中,前往 Vertex AI Studio 页面。
点击创建经调整的模型。
在调优方法下,选择监督式调优单选按钮。
在模型详情下,配置以下内容:
- 在已调优模型的名称字段中,输入新的调优后模型的名称,最多 128 个字符。
- 在基本模型字段中,选择
gemini-2.0-flash-001
。 - 在区域下拉字段中,选择运行流水线调优作业以及部署调优后模型的区域。
在调整设置下,配置以下内容:
- 在周期数字段中,输入要为模型调优运行的步数。
- 在适配器大小字段中,输入要用于模型调优的适配器大小。
- 在学习速率调节系数字段中,输入每次迭代的步长。默认值为 1。。
可选:如需停用中间检查点并仅使用最新的检查点,请点击仅导出最后一个检查点切换开关。
点击继续。
调优数据集页面随即会打开。
如需上传数据集文件,请选择以下选项之一:
- 如果您尚未上传数据集,请选中将文件上传到 Cloud Storage 单选按钮。
- 在选择 JSONL 文件字段中,点击浏览,然后选择数据集文件。
- 在数据集位置字段中,点击浏览并选择要存储数据集文件的 Cloud Storage 存储桶。
- 如果您的数据集文件已在 Cloud Storage 存储桶中,请选择 Cloud Storage 上的现有文件单选按钮。
- 在 Cloud Storage 文件路径字段中,点击浏览,然后选择数据集文件所在的 Cloud Storage 存储桶。
(可选)如需在训练期间获取验证指标,请点击启用模型验证切换开关。
- 在验证数据集文件中,输入验证数据集的 Cloud Storage 路径。
点击开始调优。
您的新模型会显示在“调优和提炼”页面上的 Gemini Pro 调优模型部分下。模型调优完成后,状态会显示成功。
Colab Enterprise
您可以使用 Colab Enterprise 中的侧边栏在 Vertex AI 中创建模型调优作业。侧边栏会将相关代码段添加到您的笔记本中。然后,修改代码段并运行它们,以创建优化作业。如需详细了解如何将侧边栏与 Vertex AI 调优作业搭配使用,请参阅与 Vertex AI 交互以调优模型。
-
在 Google Cloud 控制台中,前往 Colab Enterprise 我的笔记本页面。
-
在区域菜单中,选择包含您的笔记本的区域。
-
点击您要打开的笔记本。如果您尚未创建笔记本,请创建一个笔记本。
-
在侧边栏中,点击笔记本右侧的
调优按钮。侧边栏会展开调优标签页。
-
点击调优 Gemini 模型按钮。
Colab Enterprise 会在您的笔记本中添加代码单元,以便您调优 Gemini 模型。
-
在笔记本中,找到用于存储参数值的代码单元格。 您将使用这些参数与 Vertex AI 交互。
-
更新以下参数的值:
-
PROJECT_ID
:笔记本所在项目的 ID。 -
REGION
:您的记事本所在的区域。 -
TUNED_MODEL_DISPLAY_NAME
:经过调优的模型的名称。
-
-
在下一个代码单元中,更新模型调优参数:
-
source_model
:您要使用的 Gemini 模型,例如gemini-2.0-flash-001
。 -
train_dataset
:训练数据集的网址。 -
validation_dataset
:验证数据集的网址。 - 根据需要调整其余参数。
-
-
运行侧边栏向您的笔记本添加的代码单元。
-
最后一个代码单元运行完毕后,点击随即显示的
View tuning job(查看优化作业)按钮。 -
侧边栏会显示有关模型调优作业的相关信息。
- 当指标准备就绪时,监控标签页会显示调优指标。
- 数据集标签页会在数据集处理完毕后显示有关数据集的摘要和指标。
- 详细信息标签页显示有关调优作业的相关信息,例如调优方法和您使用的基准模型(源模型)。
-
调优作业完成后,您可以直接从调优详情标签页前往用于测试模型的页面。 点击测试。
Google Cloud 控制台会打开 Vertex AI Text chat 页面,您可以在其中测试模型。
调整超参数
建议您提交第一个调优作业,而无需更改超参数。默认值是根据我们的基准测试结果推荐的值,可生成最佳模型输出质量。
- 周期数:在训练期间,模型完整通过整个训练数据集的次数。 Vertex AI 会根据您的训练数据集大小自动调整默认值。此值基于基准测试结果,用于优化模型输出质量。
- 适配器大小:用于调优作业的适配器大小。适配器大小会影响调优作业的可训练参数数量。适配器越大,意味着模型可以学习更复杂的任务,但需要更大的训练数据集和更长的训练时间。
- 学习速率调节系数:输入要应用于建议的学习速率的调节系数。您可以增加该值以加快收敛速度,也可以降低该值以避免过拟合。
如需了解有关监督式微调最佳实践的讨论,请参阅博文 Gemini 的监督式微调:最佳实践指南。
查看调优作业列表
您可以使用 Google Cloud 控制台、Vertex AI SDK for Python 或 Google Gen AI SDK 或使用 tuningJobs
方法发送 GET 请求来查看当前项目中的调优作业列表。
REST
如需查看模型调优作业列表,请使用 tuningJobs.list
方法发送 GET 请求。
在使用任何请求数据之前,请先进行以下替换:
HTTP 方法和网址:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
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
执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应。
Python 版 Vertex AI SDK
Google Gen AI SDK
控制台
如需在 Google Cloud 控制台中查看调优作业,请前往 Vertex AI Studio 页面。
Gemini 调优作业列在 Gemini Pro 调优模型部分下的表格中。
获取调优作业的详细信息
如需获取当前项目中调优作业的详细信息,您可以使用 Google Cloud 控制台、Vertex AI SDK for Python 或 Google Gen AI SDK,也可以使用 tuningJobs
方法发送 GET 请求。
REST
如需查看模型调优作业列表,请使用 tuningJobs.get
方法发送 GET 请求并指定 TuningJob_ID
。
在使用任何请求数据之前,请先进行以下替换:
HTTP 方法和网址:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
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
执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应。
Python 版 Vertex AI SDK
Google Gen AI SDK
控制台
如需在 Google Cloud 控制台中查看调优后模型的详细信息,请前往 Vertex AI Studio 页面。
在 Gemini Pro 调优模型表中,找到您的模型,然后点击详细信息。
系统会显示模型的详细信息。
取消调优作业
您可以使用 Google Cloud 控制台或 Vertex AI SDK for Python 或使用 tuningJobs
方法发送 POST 请求来取消当前项目中的调优作业。
REST
如需查看模型调优作业列表,请使用 tuningJobs.cancel
方法发送 GET 请求并指定 TuningJob_ID
。
在使用任何请求数据之前,请先进行以下替换:
HTTP 方法和网址:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
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
执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应。
Python 版 Vertex AI SDK
控制台
如需在 Google Cloud 控制台中取消调优作业,请前往 Vertex AI Studio 页面。
在 Gemini Pro 调优模型表格中,点击
管理运行作业。点击取消。
评估调优后的模型
您可以使用 Vertex AI SDK for Python 或 Google Gen AI SDK 与经过调优的模型端点进行交互,
方法与使用基本 Gemini 相同,或者您也可以使用 generateContent
方法发送 POST 请求。
对于 Gemini 2.5 Flash 等思考型模型,我们建议将思考预算设为 0,以关闭对经过优化的任务的思考,从而实现最佳性能和成本效益。在监督式微调期间,模型会学习模仿调优数据集中的标准答案,从而省略思考过程。因此,经过调整的模型能够有效地处理任务,而无需考虑预算。
以下示例向模型提示“为什么天空是蓝色的?”这一问题。
REST
如需使用提示测试经过调优的模型,请发送 POST 请求并指定 TUNED_ENDPOINT_ID
。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID。
- TUNING_JOB_REGION:运行调优作业的区域。这也是上传调优后模型的默认区域。
- ENDPOINT_ID:GET API 中的经过调优的模型端点 ID。
- TEMPERATURE:温度 (temperature) 在生成回答期间用于采样,在应用
topP
和topK
时会生成回答。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为0
表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。如果模型返回的回答过于笼统、过于简短,或者模型给出后备回答,请尝试提高温度。
- TOP_P:Top-P 可更改模型选择输出词元的方式。系统会按照概率从最高到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。例如,如果词元 A、B 和 C 的概率分别为 0.3、0.2 和 0.1,并且 top-P 值为
0.5
,则模型将选择 A 或 B 作为下一个词元(通过温度确定),并会排除 C,将其作为候选词元。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- TOP_K:Top-K 可更改模型选择输出词元的方式。如果 top-K 设为
1
,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为3
,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。
指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- MAX_OUTPUT_TOKENS:回答中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
HTTP 方法和网址:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent
请求 JSON 正文:
{ "contents": [ { "role": "USER", "parts": { "text" : "Why is sky blue?" } } ], "generation_config": { "temperature":TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "maxOutputTokens": MAX_OUTPUT_TOKENS } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
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/endpoints/ENDPOINT_ID:generateContent"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$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/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应。
Python 版 Vertex AI SDK
from vertexai.generative_models import GenerativeModel
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))
Google Gen AI SDK
控制台
如需在 Google Cloud 控制台中查看调优后模型的详细信息,请前往 Vertex AI Studio 页面。
在 Gemini Pro 调优模型表中,选择测试。
此操作会打开一个页面,您可以在其中创建与调优后模型进行的对话。
删除调优的模型
无法删除调优的模型。
调优和验证指标
您可以配置模型调优作业,以收集和报告模型调优和模型评估指标,然后在 Vertex AI Studio 中直观呈现这些指标。
如需在 Google Cloud 控制台中查看调优后模型的详细信息,请进入 Vertex AI Studio 页面。
在调优和提炼表格中,点击要查看指标的调优模型的名称。
调优指标会显示在监控标签页下。
模型调优指标
模型调优作业会自动为 Gemini 2.0 Flash
收集以下调优指标:
/train_total_loss
:一个训练步长中调整数据集的损失。/train_fraction_of_correct_next_step_preds
:一个训练步长中的词元准确率。单个预测由一系列词元组成。该指标衡量预测词元的准确率(与调优数据集中的标准答案相比)。/train_num_predictions
:一个训练步长中的预测词元数。
模型验证指标
您可以配置模型调优作业,以便为 Gemini 2.0 Flash
收集以下验证指标:
/eval_total_loss
:一个验证步长中验证数据集的损失。/eval_fraction_of_correct_next_step_preds
:一个验证步长中的词元准确率。单个预测由一系列词元组成。该指标衡量评估词元的准确率(与验证数据集中的标准答案相比)。/eval_num_predictions
:一个验证步长中的预测词元数。
调优作业开始运行后,系统会提供指标可视化内容。 随着调优的进行,它会实时更新。 如果您在创建调优作业时未指定验证数据集,则系统只提供调优指标的可视化内容。
后续步骤
了解如何部署经过调优的 Gemini 模型。
如需了解如何在构建生成式 AI 知识库的解决方案中使用监督式微调,请参阅快速起步解决方案:生成式 AI 知识库。