המדריך הזה יעזור לך להתחיל להשתמש בשירות הכוונון של Gemini API באמצעות Python SDK או 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
יצירת מודל שעבר כוונון
כדי ליצור מודל שעבר כוונון, צריך להעביר את dataset
את המודל ב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'