使用监督式微调功能来调优翻译 LLM 模型

本文档介绍如何使用监督式微调来调优翻译 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 请求。

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

  • PROJECT_ID:您的项目 ID
  • TUNING_JOB_REGION:运行调优作业的区域。这也是上传调优后模型的默认区域。

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

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7c85287b2680>
# resource name: projects/12345678/locations/us-central1/tuningJobs/123456789012345

控制台

如需在 Google Cloud 控制台中查看调优作业,请前往 Vertex AI Studio 页面。

进入 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

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
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)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7cc4bb20baf0>
# resource name: projects/1234567890/locations/us-central1/tuningJobs/4982013113894174720

控制台

  1. 如需在 Google Cloud 控制台中查看调优的模型的详细信息,请前往 Vertex AI Studio 页面。

    进入 Vertex AI Studio

  2. 翻译 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

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
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()

控制台

  1. 如需在 Google Cloud 控制台中取消调优作业,请前往 Vertex AI Studio 页面。

    进入 Vertex AI Studio

  2. 翻译调优的模型表中,点击 管理运行

  3. 点击取消

通过提示测试调优后的模型

您可以通过使用 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 中直观呈现这些指标。

  1. 如需在 Google Cloud 控制台中查看调优的模型的详细信息,请前往 Vertex AI Studio 页面。

    进入 Vertex AI Studio

  2. 调优和提炼表格中,点击要查看指标的调优模型的名称。

    调优指标会显示在监控标签页下。

模型调优指标

模型调优作业会自动为 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:一个验证步长中的预测词元数。

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

后续步骤