本文說明如何使用監督式微調功能調整 Gemini 模型。
事前準備
開始之前,您必須先準備監督式精修資料集。視應用情況而定,您可能需要滿足不同的需求。
支援的模型
下列 Gemini 模型支援監督式調整:
建立調整工作
您可以使用 REST API、Python 適用的 Vertex AI SDK、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 資源 ID。金鑰的格式為
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
權限授予 Tuning Service Agent。
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」頁面。
按一下「Create tuned model」(建立調整後的模型)。
在「調整方法」下方,選取「監督式調整」圓形按鈕。
在「Model details」(模型詳細資料) 下方,設定下列項目:
- 在「Tuned model name」欄位中,輸入新調整後模型的名稱,最多 128 個半形字元。
- 在「Base model」(基礎模型) 欄位中,選取
gemini-2.0-flash-001
。 - 在「Region」下拉式欄位中,選取管道調整工作執行的區域,以及調整後模型的部署位置。
在「Tuning setting」下方,設定下列項目:
- 在「Epoch 數量」欄位中,輸入用於執行模型微調的步驟數量。
- 在「Adapter Size」欄位中,輸入要用於調整模型的轉接器大小。
- 在「學習率調節係數」欄位中,輸入每次疊代的步距。預設值為 1。。
選用:如要停用中繼查核點,並只使用最新的查核點,請按一下「僅匯出最後一個查核點」切換鈕。
按一下「繼續」。
系統會開啟「調整資料集」頁面。
如要上傳資料集檔案,請選取下列其中一個選項:
- 如果您尚未上傳資料集,請選取「上傳檔案至 Cloud Storage」單選按鈕。
- 在「Select JSONL file」欄位中,按一下「Browse」,然後選取資料集檔案。
- 在「Dataset location」(資料集位置) 欄位中,按一下「Browse」(瀏覽),然後選取要儲存資料集檔案的 Cloud Storage 值區。
- 如果資料集檔案已在 Cloud Storage 值區中,請選取「Cloud Storage 中的現有檔案」單選按鈕。
- 在「Cloud Storage file path」欄位中,按一下「Browse」,然後選取資料集檔案所在的 Cloud Storage 值區。
(選用) 如要在訓練期間取得驗證指標,請按一下「Enable model validation」切換鈕。
- 在「Validation dataset」檔案中,輸入驗證資料集的 Cloud Storage 路徑。
按一下「Start Tuning」。
新的模型會顯示在「Tune and Distill」頁面的「Gemini Pro 調整模型」部分下方。模型完成調整後,「狀態」會顯示「成功」。
Colab Enterprise
您可以使用 Colab Enterprise 的側邊面板,在 Vertex AI 中建立模型調整工作。側邊面板會將相關程式碼片段新增至您的筆記。接著,您可以修改程式碼片段並執行,以建立調整工作。如要進一步瞭解如何搭配使用側邊面板和 Vertex AI 調整工作,請參閱「與 Vertex AI 互動,以便調整模型」。
-
在 Google Cloud 控制台中,前往 Colab Enterprise 的「My notebooks」頁面。
-
在「Region」選單中,選取含有筆記本的區域。
-
按一下要開啟的筆記本。如果您尚未建立筆記本,請建立筆記本。
-
在 Notebook 右側的側邊面板中,按一下「Tuning」按鈕。
側邊面板會展開「Tuning」分頁。
-
按一下「調整 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」 按鈕。 -
側邊面板會顯示模型調整工作的相關資訊。
- 當指標準備就緒時,「監控」分頁會顯示調整指標。
- 資料集處理完畢後,「資料集」分頁會顯示資料集的摘要和指標。
- 「Details」分頁會顯示調整工作相關資訊,例如調整方法和您使用的基礎模型 (來源模型)。
-
調整工作完成後,您可以直接從「Tuning details」分頁前往測試模型的頁面。按一下「測試」。
Google Cloud 控制台會開啟 Vertex AI 的「文字聊天」頁面,您可以在其中測試模型。
調整超參數
建議您提交第一個調整工作時,不要變更超參數。預設值是根據基準測試結果推薦的值,可提供最佳模型輸出品質。
- 訓練週期:模型在訓練期間,對整個訓練資料集完成的通過次數。Vertex AI 會自動調整預設值,以符合訓練資料集的大小。這個值是根據基準測試結果計算,可提升模型輸出品質。
- 轉接器大小:要用於調整工作的轉接器大小。轉接器大小會影響調整工作可訓練參數的數量。轉接器越大,模型就能學習更複雜的工作,但需要更大的訓練資料集和更長的訓練時間。
- 學習率調節係數:要套用至建議學習率的調節係數。您可以增加這個值來加快收斂速度,也可以降低這個值來避免過度擬合。
如要瞭解監督式精細調整的最佳做法,請參閱網誌文章「Gemini 的監督式精細調整:最佳做法指南」。
查看調整工作清單
您可以使用 Google Cloud 主控台、Python 適用的 Vertex AI SDK 或 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 主控台、Python 適用的 Vertex AI SDK 或 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:溫度會在回覆產生期間用於取樣,這會在套用
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 會影響模型選取輸出符記的方式。如果「前 K 個」設為
1
,代表下一個所選詞元是模型詞彙表的所有詞元中可能性最高者 (也稱為「貪婪解碼」)。如果「前 K 個」設為3
,則代表模型會依據溫度參數,從可能性最高的 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 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 中以視覺化方式呈現。
如要在控制台中查看經過微調的模型詳細資料,請前往 Vertex AI Studio 頁面。 Google Cloud
在「Tune and Distill」表格中,按一下要查看指標的已調校模型名稱。
調整指標會顯示在「監控」分頁下方。
模型調整指標
模型調整工作會自動收集 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 知識庫」。