本文档介绍如何使用监督式微调来调优翻译 LLM 模型。
准备工作
在开始之前,您必须准备好监督式微调数据集。 根据您的应用场景,要求会有所不同。
- 准备用于调优的文本数据集:文本调优
支持的模型
translation-llm-002
(处于预览版阶段,仅支持文本调优)
创建调优作业
您可以使用 REST API 或 Vertex AI SDK for Python 创建监督式微调作业。
REST
如需创建模型调优作业,请使用 tuningJobs.create
方法发送 POST 请求。某些参数只受部分模型支持。确保仅包含您要调优的模型的适用参数。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID。
- TUNING_JOB_REGION:运行调优作业的区域。这也是上传调优后模型的默认区域。受支持的区域:
us-central1
。 - BASE_MODEL:要调优的翻译模型的名称。支持的值:
translation-llm-002
。 - TRAINING_DATASET_URI:训练数据集的 Cloud Storage URI。数据集必须采用 JSONL 文件格式。为获得最佳效果,请提供至少 100 到 500 个样本。如需了解详情,请参阅监督式调优数据集简介。
- VALIDATION_DATASET_URI可选:验证数据集文件的 Cloud Storage URI。
- TUNED_MODEL_DISPLAYNAME可选:调优后模型的显示名称。如果未设置,则会生成随机名称。
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", }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME" }
如需发送请求,请选择以下方式之一:
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": "translation-llm-002",
"supervisedTuningSpec" : {
"training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_translation_llm"
}'
Python
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))
import time
import vertexai
from vertexai.tuning import sft
# TODO(developer): Update and un-comment below line.
# PROJECT_ID = os.environ["GOOGLE_CLOUD_PROJECT"]
vertexai.init(project=PROJECT_ID, location="us-central1")
sft_tuning_job = sft.train(
source_model="translation-llm-002",
train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_train_data.jsonl",
# The following parameters are optional
validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-2_0/text/sft_validation_data.jsonl",
tuned_model_display_name="tuned_translation_llm_002",
)
# 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)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# <google.cloud.aiplatform.metadata.experiment_resources.Experiment object at 0x7b5b4ae07af0>
查看调优作业列表
您可以使用 Google Cloud 控制台、Vertex AI SDK for Python 或使用 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
控制台
如需在 Google Cloud 控制台中查看调优作业,请前往 Vertex AI Studio 页面。
翻译 LLM 调优作业列在翻译 LLM 调优模型部分下的表格中。
获取调优作业的详细信息
如需获取当前项目中调优作业的详细信息,您可以使用 Google Cloud 控制台、Vertex AI SDK for Python 或使用 tuningJobs
方法发送 GET 请求。
REST
如需查看模型调优作业列表,请使用 tuningJobs.get
方法发送 GET 请求并指定 TuningJob_ID
。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:。
- TUNING_JOB_REGION:运行调优作业的区域。这也是上传调优后模型的默认区域。
- TUNING_JOB_ID:调优作业的 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
控制台
如需在 Google Cloud 控制台中查看调优的模型的详细信息,请前往 Vertex AI Studio 页面。
在翻译 LLM 调优的模型表中,找到您的模型,然后点击详细信息。
系统会显示模型的详细信息。
取消调优作业
您可以通过使用 Google Cloud 控制台、Vertex AI SDK for Python 或使用 tuningJobs
方法发送 POST 请求,在当前项目中测试调优作业。
REST
如需查看模型调优作业列表,请使用 tuningJobs.cancel
方法发送 GET 请求并指定 TuningJob_ID
。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:。
- TUNING_JOB_REGION:运行调优作业的区域。这也是上传调优后模型的默认区域。
- TUNING_JOB_ID:调优作业的 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
控制台
如需在 Google Cloud 控制台中取消调优作业,请前往 Vertex AI Studio 页面。
在翻译调优的模型表中,点击
管理运行。点击取消。
通过提示测试调优后的模型
您可以通过使用 Vertex AI SDK for Python 或使用 tuningJobs
方法发送 POST 请求,在当前项目中测试调优作业。
以下示例向模型提示“为什么天空是蓝色的?”这一问题。
REST
如需使用提示测试调优的模型,请发送 POST 请求并指定 TUNED_ENDPOINT_ID
。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:。
- TUNING_JOB_REGION:运行调优作业的区域。这也是上传调优后模型的默认区域。
- ENDPOINT_ID:来自 GET API 的调优的模型端点 ID。
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" : "English: Hello. Spanish:" } } ], }
如需发送请求,请选择以下方式之一:
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
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))
调优和验证指标
您可以配置模型调优作业,以收集和报告模型调优和模型评估指标,然后在 Vertex AI Studio 中直观呈现这些指标。
如需在 Google Cloud 控制台中查看调优的模型的详细信息,请前往 Vertex AI Studio 页面。
在调优和提炼表格中,点击要查看指标的调优模型的名称。
调优指标会显示在监控标签页下。
模型调优指标
模型调优作业会自动为 translation-llm-002
收集以下调优指标。
/train_total_loss
:一个训练步长中调整数据集的损失。/train_fraction_of_correct_next_step_preds
:一个训练步长中的词元准确率。单个预测由一系列词元组成。该指标衡量预测词元的准确率(与调优数据集中的标准答案相比)。/train_num_predictions:
:一个训练步长中的预测词元数。
模型验证指标:
您可以配置模型调优作业,以便为 translation-llm-002
收集以下验证指标。
/eval_total_loss
:验证步骤中验证数据集的损失。/eval_fraction_of_correct_next_step_preds
:一个验证步长中的词元准确率。单个预测由一系列词元组成。该指标衡量评估词元的准确率(与验证数据集中的标准答案相比)。/eval_num_predictions
:一个验证步长中的预测词元数。
调优作业开始运行后,指标可视化即可使用。 随着调优的进行,它会实时更新。 如果您在创建调优作业时未指定验证数据集,则系统只提供调优指标的可视化内容。
后续步骤
- 如需了解如何在构建生成式 AI 知识库的解决方案中使用监督式微调,请参阅快速起步解决方案:生成式 AI 知识库。