本教學課程可協助您開始使用 Gemini API 調整服務 透過 Python SDK 或 REST API curl。這些範例說明如何調整 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")