使用偏好調整功能調整 Gemini 模型

本文說明如何對 Gemini 模型執行偏好設定調整作業。

事前準備

開始之前,請先按照「準備 Gemini 模型的偏好設定調整資料」一文中的操作說明準備資料集。

建立微調工作

控制台

如要使用 Google Cloud 控制台設定偏好設定調整功能,請按照下列步驟操作:

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

    前往 Vertex AI Studio

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

  3. 選取「偏好設定調整」

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

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

    1. 在「Number of epochs」(訓練週期數) 欄位中,輸入用於執行模型微調的步驟數量。
    2. 在「Adapter Size」(轉接器大小) 欄位中,輸入要用於調整模型轉接器的大小。
    3. 選用:在「Beta」欄位中,輸入所需的 Beta 值。Beta 是用來控制調整後模型與基準模型一致程度的係數。
    4. 在「學習率調節係數」欄位中,輸入每次疊代的步距。預設值為 1。。
  6. 選用:如要停用中繼檢查點,只使用最新的檢查點,請點選「僅匯出最後一個檢查點」切換鈕。

  7. 按一下「繼續」

    「調整資料集」頁面隨即開啟。

  8. 如要上傳資料集檔案,請選取下列其中一個選項:

    1. 如果尚未上傳資料集,請選取「將檔案上傳至 Cloud Storage」的單選按鈕。
    2. 在「Select JSONL file」(選取 JSONL 檔案) 欄位中,按一下「Browse」(瀏覽) 並選取資料集檔案。
    3. 在「資料集位置」欄位中,按一下「瀏覽」,然後選取要儲存資料集檔案的 Cloud Storage bucket。
    4. 如果資料集檔案已在 Cloud Storage bucket 中,請選取「Existing file on Cloud Storage」(Cloud Storage 中的現有檔案) 的單選按鈕。
    5. 在「Cloud Storage file path」(Cloud Storage 檔案路徑) 欄位中,按一下「Browse」(瀏覽),然後選取資料集檔案所在的 Cloud Storage bucket。
  9. (選用) 如要在訓練期間取得驗證指標,請按一下「啟用模型驗證」切換鈕。

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

    新模型會顯示在「Tune and Distill」(調整及精煉) 頁面的「Managed tuning」(管理調整) 專區下方。模型微調完成後,「狀態」會顯示「成功」

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選用:模型在訓練期間完整通過整個訓練資料集的次數。如未設定,系統會使用預先填入的建議值
  • BETA選用:係數,用於控管微調模型與基準的相符程度。
  • 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",
  "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": "EPOCH_COUNT",
          "beta": "BETA",
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": "LEARNING_RATE_MULTIPLIER"
      },
      "exportLastCheckpointOnly": EXPORT_LAST_CHECKPOINT_ONLY,
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME",
  "encryptionSpec": {
    "kmsKeyName": "KMS_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT"
}

請展開以下其中一個選項,以傳送要求:

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": "${BASE_MODEL}",
   "preferenceOptimizationSpec" : {
      "trainingDatasetUri": "gs://mybucket/preference_tuning/data/train_data.jsonl",
      "validationDatasetUri": "gs://mybucket/preference_tuning/data/validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_gemini"
}'

調整超參數

建議您提交第一個微調工作時,不要變更超參數。預設值是根據基準化結果建議的值,可產生最佳模型輸出品質。

  • 訓練週期:模型在訓練期間完整處理整個訓練資料集的次數。Vertex AI 會根據訓練資料集大小自動調整預設值。這個值是根據基準化結果計算得出,可提升模型輸出內容的品質。
  • Beta:這個係數可控制微調模型與基準的相符程度。Beta 值越低,模型越會積極更新,以提供偏好的回覆。建議範圍為 0.01 至 0.5 (含)。如果 Beta 值為 0,模型就會停止學習。
  • 轉接器大小:用於微調工作的轉接器大小。轉接器大小會影響調整工作可訓練的參數數量。轉接器越大,模型就能學習更複雜的工作,但需要更大的訓練資料集和更長的訓練時間。
  • 學習率調節係數:要套用至建議學習率的調節係數。您可以增加值來加快收斂速度,或減少值來避免過度擬合。

查看或取消調整工作

如要列出微調工作、查看微調工作詳細資料、取消微調工作或刪除微調模型,請參閱監督式微調文件中的下列章節:

模型調整指標

模型微調作業會自動收集下列微調指標:

  • /preference_optimization_train_loss:訓練步驟中微調資料集的偏好設定損失。

模型驗證指標

提供驗證資料後,模型微調作業會自動收集下列驗證指標:

  • /eval_total_loss:驗證步驟中驗證資料集的偏好設定損失。

調整工作開始執行後,即可查看指標的視覺化資料。 這些指標會隨著微調作業的進展即時更新。如果您在建立調整工作時未指定驗證資料集,則只能查看調整指標的視覺化資料。

後續步驟