微調教學課程

本教學課程將說明如何使用 Python SDK 或 REST API (使用 curl) 開始使用 Gemini API 調整服務。這些範例說明如何調整 Gemini API 文字生成服務背後的文字模型。

在 ai.google.dev 上查看 試用 Colab 筆記本 在 GitHub 中查看筆記本

限制

調整模型前,請注意下列限制:

微調資料集

精細調整 Gemini 1.5 Flash 的資料集時,請注意下列限制:

  • 每個範例的輸入大小上限為 40,000 個半形字元。
  • 每個範例的輸出大小上限為 5,000 個字元。
  • 系統僅支援輸入/輸出組合的範例。不支援即時通訊風格的多回合對話。

調整後的模型

經過調整的模型有下列限制:

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

事前準備:設定專案和 API 金鑰

在呼叫 Gemini API 之前,您必須設定專案並設定 API 金鑰。

列出調整後的模型

您可以使用 tunedModels.list 方法查看現有的調校模型。

import google.generativeai as genai

for model_info in genai.list_tuned_models():
    print(model_info.name)

建立調整後模型

如要建立經過調整的模型,您必須在 tunedModels.create 方法中將資料集傳遞至模型。

在這個範例中,您將調整模型,以便產生序列中的下一個數字。舉例來說,如果輸入內容是 1,模型應輸出 2。如果輸入值為 one hundred,輸出值應為 one hundred one

import google.generativeai as genai

import time

base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
    {"text_input": "1", "output": "2"},
    # ... more examples ...
    # ...
    {"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
    # You can use a tuned model here too. Set `source_model="tunedModels/..."`
    display_name="increment",
    source_model=base_model,
    epoch_count=20,
    batch_size=4,
    learning_rate=0.001,
    training_data=training_data,
)

for status in operation.wait_bar():
    time.sleep(10)

result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')

model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text)  # IV

迭代次數、批次大小和學習率的最佳值取決於資料集和用途的其他限制。如要進一步瞭解這些值,請參閱「進階調整設定」和「超參數」。

由於調整模型可能需要大量時間,這個 API 不會等待調整完成。而是傳回 google.api_core.operation.Operation 物件,讓您查看調整作業的狀態,或等待作業完成,然後查看結果。

調整後的模型會立即加入調整後模型清單,但在模型調整期間,其狀態會設為「建立中」。

查看調整進度

您可以使用 wait_bar() 方法查看調校作業的進度:

for status in operation.wait_bar():
    time.sleep(10)

您也可以使用 operation.metadata 查看調整步驟的總數,並使用 operation.update() 重新整理作業狀態。

您隨時可以使用 cancel() 方法取消調整作業。

operation.cancel()

試用模型

您可以使用 tunedModels.generateContent 方法,並指定經過調整的模型名稱來測試其效能。

import google.generativeai as genai

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

更新說明

您隨時可以使用 genai.update_tuned_model 方法更新已調整模型的說明。

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

刪除模型

您可以刪除不再需要的模型,清理已調整模型清單。請使用 tunedModels.delete 方法刪除模型。如果您取消了任何調整工作,建議您刪除這些工作,因為這些工作的成效可能無法預測。

genai.delete_tuned_model("tunedModels/my-increment-model")