במדריך הזה נסביר איך להתחיל להשתמש בשירות לכוונון של Gemini API באמצעות ה-SDK ל-Python או באמצעות ה-API ל-REST באמצעות curl. בדוגמאות מוסבר איך לשפר את מודל הטקסט שמאחורי שירות היצירה של טקסט ב-Gemini API.
הצגה ב-ai.google.dev | רוצים לנסות notebook של Colab? | הצגת ה-notebook ב-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"
הערכים האופטימליים למספר האפוקים, לגודל האצווה ולשיעור הלמידה תלויים במערך הנתונים ובאילוצים אחרים של תרחיש לדוגמה. מידע נוסף על הערכים האלה זמין במאמרים הגדרות כוונון מתקדמות ופרמטרים היפר-מופשטים.
המודל המכוונן מתווסף באופן מיידי לרשימת המודלים המכווננים, אבל הסטטוס שלו מוגדר כ'יצירה' בזמן הכוונון.
ניסיון של המודל
כדי לבדוק את הביצועים של המודל המכוונן, אפשר להשתמש ב-method 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'