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

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

import google.generativeai as genai

for model_info in genai.list_tuned_models():
    print(model_info.name)

إنشاء نموذج مضبوط

لإنشاء نموذج مضبوط، يجب تمرير dataset إلى النموذج الموجود في tunedModels.create .

في هذا المثال، ستقوم بضبط أحد النماذج لإنشاء الرقم التالي في التسلسل. على سبيل المثال، إذا كان الإدخال هو 1، من المفترض أن يعرض النموذج 2. إذا كان الإدخال هو one hundred، يجب أن يكون الناتج هو one hundred one.

import google.generativeai as genai

import time

base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
    {"text_input": "1", "output": "2"},
    # ... more examples ...
    # ...
    {"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
    # You can use a tuned model here too. Set `source_model="tunedModels/..."`
    display_name="increment",
    source_model=base_model,
    epoch_count=20,
    batch_size=4,
    learning_rate=0.001,
    training_data=training_data,
)

for status in operation.wait_bar():
    time.sleep(10)

result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')

model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text)  # IV

تعتمد القيم المثلى لعدد الفترات وحجم الحزمة ومعدّل التعلّم على مجموعة البيانات والقيود الأخرى لحالة الاستخدام. لمزيد من المعلومات عن هذه القيم، اطّلِع على إعدادات الضبط المتقدّمة و المَعلمات الفائقة.

ونظرًا لأن ضبط أحد النماذج يمكن أن يستغرق وقتًا طويلاً، فلا تنتظر واجهة برمجة التطبيقات هذه التوليف حتى يكتمل. بدلاً من ذلك، يتم عرض عنصر google.api_core.operation.Operation يتيح لك التحقّق من حالة مهمة الضبط، أو الانتظار إلى أن تتم معالجتها، والاطّلاع على النتيجة.

تتم إضافة النموذج الذي تم ضبطه مباشرةً إلى قائمة النماذج التي تم ضبطها، ولكن تم تعيين الحالة على "إنشاء" بينما يتم ضبط النموذج.

التحقّق من مستوى تقدّم عملية الضبط

يمكنك التحقّق من مستوى تقدّم عملية الضبط باستخدام wait_bar() الطريقة التالية:

for status in operation.wait_bar():
    time.sleep(10)

يمكنك أيضًا استخدام operation.metadata للاطّلاع على إجمالي عدد خطوات الضبط وoperation.update() لإعادة تحميل حالة العملية.

يمكنك إلغاء عملية الضبط في أي وقت باستخدام الطريقة cancel().

operation.cancel()

تجربة النموذج

يمكنك استخدام صفحة tunedModels.generateContent وتحديد اسم النموذج الذي تم ضبطه لاختبار أدائه.

import google.generativeai as genai

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

تعديل الوصف

يمكنك تعديل وصف النموذج الذي ضبطته في أي وقت باستخدام طريقة genai.update_tuned_model.

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

حذف النموذج

يمكنك تنظيف قائمة النماذج التي تم ضبطها من خلال حذف النماذج التي لم تعُد بحاجة إليها. استخدِم الطريقة tunedModels.delete من أجل حذف نموذج. إذا ألغيت أي مهام ضبط، ننصحك بحذفها لأنّه قد يكون أداؤها غير متوقّع.

genai.delete_tuned_model("tunedModels/my-increment-model")