使用監督式微調功能調整 Gemini 模型

本指南說明如何使用監督式微調功能調整 Gemini 模型。

本頁面涵蓋下列主題:

下圖概略說明整體工作流程:

事前準備

您必須先準備監督式微調資料集,才能調整模型。如需操作說明,請參閱資料模態的說明文件:

支援的模型

下列 Gemini 模型支援監督式微調:

建立微調工作

您可以使用 Google Cloud 控制台、Google Gen AI SDK、Python 適用的 Vertex AI SDK、REST API 或 Colab Enterprise,建立監督式微調工作。下表可協助您判斷哪一個選項最適合您的用途。

方法 說明 用途
Google Cloud 控制台 用於建立及管理微調工作的圖形使用者介面。 適合用於入門、視覺化探索,或執行一次性調整作業,不必編寫程式碼。
Google Gen AI SDK 專為生成式 AI 工作流程設計的高階 Python SDK。 適合偏好簡化介面,且以生成式 AI 為主的 Python 開發人員。
Python 適用的 Vertex AI SDK 適用於所有 Vertex AI 服務的 Python SDK。 建議用於將模型微調整合至較大的機器學習運作管道和自動化指令碼。
REST API 這個介面與語言無關,可直接向 Vertex AI API 發出 HTTP 要求。 適用於自訂整合、非 Python 環境,或需要精細控制要求的用途。
Colab Enterprise 互動式筆記本環境,附有可產生微調程式碼片段的側邊面板。 非常適合實驗、反覆開發,以及在筆記本中記錄微調程序。

主控台

如要使用 Google Cloud 控制台微調文字模型,請按照下列步驟操作:

  1. 在 Google Cloud 控制台的 Vertex AI 專區中,前往「Vertex AI Studio」頁面。

    前往 Vertex AI Studio

  2. 按一下「Create tuned model」(建立調整後的模型)

  3. 在「Model details」(模型詳細資料) 下方,設定下列項目:

    1. 在「調整後模型名稱」欄位中,輸入新調整後模型的名稱,最多 128 個半形字元。
    2. 在「Base model」(基礎模型) 欄位中,選取「gemini-2.5-flash」。
    3. 在「Region」(區域) 下拉式選單中,選取管道調整工作執行的區域,以及調整後模型的部署位置。
  4. 在「微調設定」下方,設定下列項目:

    1. 在「Number of epochs」(訓練週期數) 欄位中,輸入模型微調的訓練週期數。
    2. 在「Adapter Size」(轉接器大小) 欄位中,輸入要用於調整模型轉接器的大小。
    3. 在「學習率調節係數」欄位中,輸入每次疊代的步距。預設值為 1。。
  5. 選用:如要停用中途查核點,只使用最新查核點,請選取「僅匯出最後一個查核點」切換鈕。

  6. 按一下「繼續」。「Tuning dataset」(微調資料集) 頁面隨即開啟。

  7. 選取微調資料集:

    • 如要從電腦上傳新的資料集檔案,請選取「Upload file to Cloud Storage」(將檔案上傳至 Cloud Storage)
    • 在「Select JSONL file」(選取 JSONL 檔案) 欄位中,按一下「Browse」(瀏覽) 並選取資料集檔案。
    • 在「資料集位置」欄位中,按一下「瀏覽」,然後選取要儲存資料集檔案的 Cloud Storage 值區。
    • 如要使用 Cloud Storage 值區中已有的資料集檔案,請選取「Cloud Storage 中的現有檔案」
    • 在「Cloud Storage file path」(Cloud Storage 檔案路徑) 欄位中,按一下「Browse」(瀏覽),然後選取資料集檔案所在的 Cloud Storage 值區。
  8. 選用:如要在訓練期間取得驗證指標,請選取「Enable model validation」(啟用模型驗證) 切換鈕。

    1. 在「驗證資料集」欄位中,輸入驗證資料集的 Cloud Storage 路徑。
  9. 按一下「開始調整」

    新模型會顯示在「調整及精煉」頁面的「Gemini Pro 調整模型」部分。模型調整完畢後,「狀態」會顯示「成功」

Google Gen AI SDK

import time

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

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

training_dataset = TuningDataset(
    gcs_uri="gs://cloud-samples-data/ai-platform/generative_ai/gemini/text/sft_train_data.jsonl",
)

tuning_job = client.tunings.tune(
    base_model="gemini-2.5-flash",
    training_dataset=training_dataset,
    config=CreateTuningJobConfig(
        tuned_model_display_name="Example tuning job",
    ),
)

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'

Python 適用的 Vertex AI SDK


import time

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")

sft_tuning_job = sft.train(
    source_model="gemini-2.0-flash-001",
    # 1.5 and 2.0 models use the same JSONL format
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-1_5/text/sft_train_data.jsonl",
)

# 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>

REST

如要建立模型微調作業,請使用 tuningJobs.create 方法傳送 POST 要求。部分參數不支援所有模型。請只加入要微調模型適用的參數。 <

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_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 資源 ID。金鑰格式為 projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key。金鑰必須與運算資源的建立位置位於相同區域。詳情請參閱客戶管理的加密金鑰 (CMEK)
  • SERVICE_ACCOUNT選用:tuningJob 工作負載執行的服務帳戶。如未指定,則會使用專案中的 Vertex AI 安全微調服務代理。請參閱「調整服務代理程式」。如要使用客戶管理的服務帳戶,請務必將 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",
  "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=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": "gemini-2.5-flash",
   "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"
}'

Colab Enterprise

您可以在 Colab Enterprise 中使用側邊面板,在 Vertex AI 建立模型微調作業。側邊面板會將相關程式碼片段新增至筆記本。接著,您可以修改程式碼片段並執行,建立微調工作。如要進一步瞭解如何搭配使用側邊面板和 Vertex AI 調整作業,請參閱「與 Vertex AI 互動來調整模型」。

  1. 前往 Google Cloud 控制台的 Colab Enterprise「我的筆記本」頁面。

    前往「我的筆記本」

  2. 在「Region」(區域) 選單中,選取包含筆記本的區域。

  3. 按一下要開啟的筆記本。如果尚未建立筆記本,請建立筆記本

  4. 在筆記本右側的側邊面板中,按一下「微調」按鈕。

    側邊面板會展開「微調」分頁。

  5. 按一下「調整 Gemini 模型」按鈕。

    Colab Enterprise 會在筆記本中加入程式碼儲存格,用於調整 Gemini 模型。

  6. 在筆記本中,找出儲存參數值的程式碼儲存格。 您將使用這些參數與 Vertex AI 互動。

  7. 更新下列參數的值:

    • PROJECT_ID:筆記本所在的專案 ID。
    • REGION:筆記本所在的區域。
    • TUNED_MODEL_DISPLAY_NAME:微調後模型的名稱。
  8. 在下一個程式碼儲存格中,更新模型微調參數:

    • source_model:要使用的 Gemini 模型,例如 gemini-2.0-flash-001
    • train_dataset:訓練資料集的網址。
    • validation_dataset:驗證資料集的網址。
    • 視需要調整其餘參數。
  9. 執行側邊面板新增至筆記本的程式碼儲存格。

  10. 最後一個程式碼儲存格執行完畢後,按一下顯示的「View tuning job」(查看微調工作) 按鈕。

  11. 側邊面板會顯示模型微調工作的相關資訊。

    • 指標準備就緒時,「監控」分頁會顯示調整指標。
    • 資料集處理完畢後,「資料集」分頁會顯示資料集的摘要和指標。
    • 「詳細資料」分頁會顯示調整工作的相關資訊,例如您使用的調整方法和基礎模型 (來源模型)。
  12. 調整作業完成後,您可以直接從「調整詳細資料」分頁前往模型測試頁面。按一下「測試」

    Google Cloud 控制台會開啟 Vertex AI 的「Text chat」(文字對話) 頁面,您可以在其中測試模型。

調整超參數

第一次執行微調工作時,請使用預設超參數。系統會根據基準化結果,將這些值設為建議值。

  • 訓練週期:模型查看整個訓練資料集的次數。Vertex AI 會根據訓練資料集大小自動調整預設值,以提升模型品質。
  • 轉接器大小:影響可訓練參數的數量。轉接器越大,模型就能學習更複雜的任務,但需要更大的資料集和更長的訓練時間。
  • 學習率調節係數:套用至建議學習率的係數。您可以增加這個值來加快收斂速度,或減少這個值來避免過度擬合。

如要瞭解監督式微調的最佳做法,請參閱「Gemini 的監督式微調:最佳做法指南」網誌文章。

查看及管理調整工作

您可以查看微調工作清單、取得特定工作的詳細資料,或取消執行中的工作。

查看調整工作清單

如要查看專案中的微調工作清單,請使用 Google Cloud 控制台、Google Gen AI SDK、Python 適用的 Vertex AI SDK,或使用 tuningJobs 方法傳送 GET 要求。

主控台

如要在 Google Cloud 控制台中查看微調作業,請前往 Vertex AI Studio 頁面。

前往 Vertex AI Studio

Gemini 調整工作會列在「Gemini Pro 調整過的模型」表格中。

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

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

responses = client.tunings.list()
for response in responses:
    print(response.name)
    # Example response:
    # projects/123456789012/locations/us-central1/tuningJobs/123456789012345

Python 適用的 Vertex AI SDK

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

REST

如要查看模型微調工作清單,請使用 tuningJobs.list 方法傳送 GET 要求。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_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 回應。

取得調整工作的詳細資料

如要取得特定微調工作的詳細資料,請使用 Google Cloud 控制台、Google Gen AI SDK、Python 適用的 Vertex AI SDK,或使用 tuningJobs 方法傳送 GET 要求。

主控台

  1. 如要在 Google Cloud 控制台中查看微調模型的詳細資料,請前往 Vertex AI Studio 頁面。

    前往 Vertex AI Studio

  2. 在「Gemini Pro 調整過的模型」表格中找出您的模型,然後按一下「詳細資料」

    模型詳細資料頁面隨即開啟。

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

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

Python 適用的 Vertex AI SDK

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

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 回應。

取消微調工作

如要取消正在執行的微調工作,請使用 Google Cloud 控制台、Python 適用的 Vertex AI SDK,或使用 tuningJobs 方法傳送 POST 要求。

主控台

  1. 如要在 Google Cloud 控制台中取消微調作業,請前往「Vertex AI Studio」頁面。

    前往 Vertex AI Studio

  2. 在「Gemini Pro tuned models」(Gemini Pro 微調模型) 表格中,按一下「」(管理執行)

  3. 按一下「取消」

Python 適用的 Vertex AI SDK

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()

REST

如要取消模型微調工作,請使用 tuningJobs.cancel 方法傳送 POST 要求,並指定 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 回應。

評估微調後的模型

模型調整完畢後,您可以像使用基礎 Gemini 模型一樣,與其端點互動。您可以使用 Python 適用的 Vertex AI SDK、Google Gen AI SDK,或使用 generateContent 方法傳送 POST 要求。

對於支援推理的模型 (例如 Gemini 2.5 Flash),請將微調工作的思考預算設為 0,以提升效能並節省成本。在監督式微調期間,模型會學習模仿微調資料集中的基準真相,並省略思考過程。因此,微調模型可以有效處理工作,不需要思考預算。

下列範例顯示如何使用「為什麼天空是藍的?」問題提示微調模型。

主控台

  1. 如要在 Google Cloud 控制台中測試微調模型,請前往「Vertex AI Studio」頁面。

    前往 Vertex AI Studio

  2. 在「Gemini Pro 調整過的模型」表格中找到模型,然後點選「測試」

    系統會開啟新頁面,讓您與調整後模型展開對話。

Google Gen AI SDK

from google import genai
from google.genai.types import HttpOptions

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

# Get the tuning job and the tuned model.
# Eg. tuning_job_name = "projects/123456789012/locations/us-central1/tuningJobs/123456789012345"
tuning_job = client.tunings.get(name=tuning_job_name)

contents = "Why is the sky blue?"

# Predicts with the tuned endpoint.
response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents=contents,
)
print(response.text)
# Example response:
# The sky is blue because ...

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))

REST

如要使用提示測試微調模型,請傳送 POST 要求並指定 TUNED_ENDPOINT_ID

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:。
  • TUNING_JOB_REGION:執行微調工作的區域。這也是上傳微調模型的預設區域。
  • ENDPOINT_ID:來自 GET API 的微調模型端點 ID。
  • TEMPERATURE: 溫度用於在生成回覆期間取樣,這會在套用 topPtopK 時發生。溫度參數會決定選取詞元時的隨機程度。 如果希望提示生成較不具開放性和創意性的回覆,建議調低溫度參數。另一方面,如果溫度參數較高,則可能產生較多元或有創意的結果。如果溫度參數為 0,模型一律會選取可能性最高的詞元。在這種情況下,特定提示的回覆大多是確定性的,但仍可能出現少量差異。

    如果模型的回覆太普通、太短或提供了備用回覆,再試試看調高 Temperature。

  • TOP_P: Top-P 會影響模型選取輸出詞元的方式。模型會按照可能性最高到最低的順序選取符記,直到所選符記的可能性總和等於 Top-P 值。舉例來說,假設詞元 A、B 和 C 的可能性分別為 0.3、0.2 和 0.1,而「Top-P」值為 0.5,模型會依據 temperature 選擇 A 或 B 做為下一個詞元,並排除 C。

    如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。

  • TOP_K: Top-K 會影響模型選取輸出詞元的方式。如果 Top-K 設為 1,代表下一個所選詞元是模型詞彙表的所有詞元中可能性最高者 (也稱為「貪婪解碼」)。如果 Top-K 設為 3,則代表模型會依據 temperature,從可能性最高的 3 個詞元中選取下一個詞元。

    在每個符記選取步驟中,模型會對機率最高的「Top-K」符記取樣,接著進一步根據「Top-P」篩選詞元,最後依 temperature 選出最終詞元。

    如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。

  • MAX_OUTPUT_TOKENS: 回覆內可以生成的詞元數量上限。一個詞元約為四個字元。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 google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=LOCATION)

# To find out which models are available in Model Registry
models = aiplatform.Model.list()

model = aiplatform.Model(MODEL_ID)
model.delete()

REST

呼叫 models.delete 方法。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:。
  • REGION:調整後模型所在的區域。
  • MODEL_ID:要刪除的模型。

HTTP 方法和網址:

DELETE https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID

如要傳送要求,請選擇以下其中一個選項:

curl

執行下列指令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID"

PowerShell

執行下列指令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID" | Select-Object -Expand Content

您應該會收到執行成功的狀態碼 (2xx) 和空白回應。

調整及驗證指標

您可以設定模型微調工作,收集及回報微調和評估指標,然後在 Vertex AI Studio 中以視覺化方式呈現。

如要查看微調模型的指標,請按照下列步驟操作:

  1. 在 Google Cloud 控制台的 Vertex AI 專區中,前往「Vertex AI Studio」頁面。

    前往 Vertex AI Studio

  2. 在「微調和蒸餾」表格中,按一下要查看的微調模型名稱。

指標會顯示在「Monitor」分頁中。調整工作開始後,系統就會提供視覺化資料,並即時更新。

模型調整指標

模型微調作業會自動收集 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:驗證步驟中預測的權杖數量。

後續步驟