برنامج تعليمي حول التوليف الدقيق

سيساعدك هذا الدليل التعليمي في بدء استخدام خدمة الضبط لواجهة 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'