本教學課程可協助您開始使用 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
方法查看現有的調校模型。
# Sending a page_size is optional
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${access_token}" \
-H "x-goog-user-project: ${project_id}" > tuned_models.json
jq .tunedModels[].name < tuned_models.json
# Send the nextPageToken to get the next page.
page_token=$(jq .nextPageToken < tuned_models.json | tr -d '"')
if [[ "$page_token" != "null"" ]]; then
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5\&page_token=${page_token}?key=$GOOGLE_API_KEY \
-H "Content-Type: application/json" > tuned_models2.json
jq .tunedModels[].name < tuned_models.json
fi
建立調整後模型
如要建立經過調整的模型,您必須在 tunedModels.create
方法中將資料集傳遞至模型。
在這個範例中,您將調整模型,以便產生序列中的下一個數字。舉例來說,如果輸入內容是 1
,則模型應輸出 2
。如果輸入值為 one hundred
,輸出值應為 one hundred one
。
curl -X POST "https://generativelanguage.googleapis.com/v1beta/tunedModels?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '
{
"display_name": "number generator model",
"base_model": "models/gemini-1.5-flash-001-tuning",
"tuning_task": {
"hyperparameters": {
"batch_size": 2,
"learning_rate": 0.001,
"epoch_count":5,
},
"training_data": {
"examples": {
"examples": [
{
"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",
}
]
}
}
}
}' | tee tunemodel.json
# Check the operation for status updates during training.
# Note: you can only check the operation on v1/
operation=$(cat tunemodel.json | jq ".name" | tr -d '"')
tuning_done=false
while [[ "$tuning_done" != "true" ]];
do
sleep 5
curl -X GET "https://generativelanguage.googleapis.com/v1/${operation}?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
2> /dev/null > tuning_operation.json
complete=$(jq .metadata.completedPercent < tuning_operation.json)
tput cuu1
tput el
echo "Tuning...${complete}%"
tuning_done=$(jq .done < tuning_operation.json)
done
# Or get the TunedModel and check it's state. The model is ready to use if the state is active.
modelname=$(cat tunemodel.json | jq ".metadata.tunedModel" | tr -d '"')
curl -X GET https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' > tuned_model.json
cat tuned_model.json | jq ".state"
訓練週期數、批量和學習率的最佳值取決於週期數、批量和學習率 例如資料集和用途的其他限制如要進一步瞭解 這些值,請參閱 進階調整設定和 「超參數」。
調整後的模型會立即加入調整後的模型清單 狀態設為「建立」來檢視模型資料
試用模型
您可以使用 tunedModels.generateContent
方法,並指定經過調整的模型名稱來測試其效能。
curl -X POST https://generativelanguage.googleapis.com/v1beta/$modelname:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"parts": [{
"text": "LXIII"
}]
}]
}' 2> /dev/null
刪除模型
您可以刪除不再需要的模型,清理已調整模型清單。使用 tunedModels.delete
方法:
刪除模型如果您已取消任何調整工作,建議您刪除這些項目,
成效難以預測
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json'