سيساعدك هذا الدليل التعليمي في بدء استخدام خدمة الضبط لواجهة 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 مع النماذج التي تم ضبطها.
- لا يتوفّر إدخال سوى النصوص.
قبل البدء: عليك إعداد مشروعك ومفتاح واجهة برمجة التطبيقات.
قبل طلب Gemini 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'