使用 Gemini API 進行微調

提示設計策略 (例如幾個提示) 不一定能產生您需要的結果。微調是一種可改善模型在特定任務上的效能,或在操作說明不足時,協助模型遵循特定的輸出要求的程序,前提是您必須有一系列示例,說明您想要的輸出內容。

本頁面提供 Gemini API 文字服務背後文字模型的微調概念總覽。準備好開始調整時,請試試精細調整教學課程。如要進一步瞭解如何針對特定用途自訂 LLM,請參閱 機器學習密集課程中的「大型語言模型:微調、提煉和提示工程」。

微調的運作方式

微調的目標是進一步改善模型在特定任務上的效能。微調的運作方式是為模型提供訓練資料集,資料集內有許多任務範例。對於特殊任務,只要少量的樣本就能調整模型,大幅提升模型成效。這類模型調整作業有時會稱為監督式微調,以便與其他類型的微調作業有所區別。

訓練資料的結構應為包含提示輸入內容和預期回應輸出內容的範例。您也可以直接在 Google AI Studio 中使用示例資料調整模型。目標是透過提供許多範例,讓模型模仿所需行為或工作。

執行調整作業時,模型會學習額外參數,以便將必要資訊編碼,並執行所需工作或瞭解所需行為。這些參數可在推論時使用。調整工作產生的輸出內容是新模型,實際上是新學習參數和原始模型的組合。

準備資料集

您必須先準備資料集,才能開始微調。為獲得最佳成效,資料集中的範例應具備高品質、多元性,並能代表實際輸入和輸出內容。

格式

資料集中的範例應與預期的實際工作環境流量相符。如果資料集含有特定格式、關鍵字、操作說明或資訊,則實際工作環境資料的格式應相同,並包含相同的操作說明。

舉例來說,如果資料集的範例包含 "question:""context:",則實際工作環境流量的格式也應包含 "question:""context:",且與在資料集範例顯示的順序相同。如果排除內容,即便資料集中的範例出現一個確切的問題,模型也會無法辨識模式。

以下是另一個範例,這是應用程式產生序列中下一個數字的 Python 訓練資料:

training_data = [
  {"text_input": "1", "output": "2"},
  {"text_input": "3", "output": "4"},
  {"text_input": "-3", "output": "-2"},
  {"text_input": "twenty two", "output": "twenty three"},
  {"text_input": "two hundred", "output": "two hundred one"},
  {"text_input": "ninety nine", "output": "one hundred"},
  {"text_input": "8", "output": "9"},
  {"text_input": "-98", "output": "-97"},
  {"text_input": "1,000", "output": "1,001"},
  {"text_input": "10,100,000", "output": "10,100,001"},
  {"text_input": "thirteen", "output": "fourteen"},
  {"text_input": "eighty", "output": "eighty one"},
  {"text_input": "one", "output": "two"},
  {"text_input": "three", "output": "four"},
  {"text_input": "seven", "output": "eight"},
]

在資料集中為每個範例新增提示或前置詞,也有助於改善經過微調的模型效能。請注意,如果資料集中包含提示或前置文字,則在推論時,提示也應包含在經過調整的模型中。

限制

注意:Gemini 1.5 Flash 的精細調整資料集有以下限制:

  • 每個範例的輸入大小上限為 40,000 個半形字元。
  • 每個範例的輸出大小上限為 5,000 個字元。

訓練資料大小

您只需使用 20 個樣本,即可微調模型。一般來說,提供更多資料可提升回覆品質。請根據應用程式,設定 100 到 500 個範例的目標。下表列出針對各種常見工作精調文字模型時的建議資料集大小:

工作 資料集中的樣本數
分類 100 以上
摘要 100-500+
文件搜尋 100 以上

上傳調整資料集

資料會透過 API 或在 Google AI 工作室中上傳的檔案,以內嵌方式傳遞。

如要使用用戶端程式庫,請在 createTunedModel 呼叫中提供資料檔案。檔案大小上限為 4 MB。請參閱使用 Python 進行精細調整的快速入門課程,瞭解如何開始使用。

如要使用 cURL 呼叫 REST API,請將 JSON 格式的訓練範例提供給 training_data 引數。請參閱使用 cURL 進行調整的快速入門指南,瞭解如何開始使用。

進階調整設定

建立調整工作時,您可以指定下列進階設定:

  • 訓練週期:對整個訓練集進行完整訓練,以便處理每個範例一次。
  • 批量:單一訓練疊代中使用的範例組合。批次大小會決定批次中的示例數量。
  • 學習率:浮點數,可告知演算法在每次疊代時調整模型參數的強度。舉例來說,學習率為 0.3 的調整權重和偏差的效果,比學習率為 0.1 的效果強大三倍。高學習率和低學習率各有優缺,應根據用途進行調整。
  • 學習率調節係數:調節係數會修改模型的原始學習率。值為 1 時,系統會使用模型的原始學習率。值大於 1 會提高學習率,值介於 1 和 0 之間則會降低學習率。

下表列出精細調整基礎模型的建議設定:

超參數 預設值 建議調整
訓練週期 5

如果損失值在 5 個訓練週期前開始趨於穩定,請使用較小的值。

如果損失值正在收斂,且似乎不會達到平穩狀態,請使用較高的值。

批量 4
學習率 0.001 針對較小資料集使用較小的值。

損失曲線會顯示模型在每個訓練週期後,預測結果與訓練範例中理想預測結果的差異程度。理想情況下,您應該在曲線趨於平坦之前,在曲線最低點停止訓練。舉例來說,下圖顯示損失曲線在第 4 至 6 個 epoch 處達到平衡,表示您可以將 Epoch 參數設為 4,仍可獲得相同的效能。

折線圖顯示模型的損失曲線。在第一個和第二個訓練週期之間,線條會急遽上升,然後在三個訓練週期後急遽下降至幾乎為 0,並趨於平穩。

查看調整工作狀態

您可以在 Google AI Studio 的「我的程式庫」分頁中,查看調校工作的狀態,也可以使用 Gemini API 中已調校模型的 metadata 屬性。

排解錯誤

本節提供一些提示,說明如何解決在建立經過調整的模型時可能遇到的錯誤。

驗證

使用 API 和用戶端程式庫進行調整時,需要進行驗證。您可以使用 API 金鑰 (建議做法) 或 OAuth 憑證設定驗證機制。如需設定 API 金鑰的說明文件,請參閱「設定 API 金鑰」。

如果您看到 'PermissionDenied: 403 Request had insufficient authentication scopes' 錯誤,可能需要使用 OAuth 憑證設定使用者驗證。如要設定 Python 的 OAuth 憑證,請參閱 OAuth 設定教學課程

已取消的模型

您可以在精細調整作業完成前隨時取消作業。不過,取消的模型推論效能無法預測,尤其是在訓練初期取消調整工作時。如果您想在較早的 epoch 停止訓練,因此取消了調整作業,請建立新的調整作業,並將 epoch 設為較低的值。

調整後模型的限制

注意:調校模型有下列限制:

  • 經過調校的 Gemini 1.5 Flash 模型輸入上限為 40,000 個半形字元。
  • 經過調整的模型不支援 JSON 模式。
  • 經過調整的模型不支援系統指令。
  • 僅支援文字輸入。

後續步驟

開始使用精細調整教學課程: