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

ستساعدك هذه المقالة التعليمية على بدء استخدام خدمة ضبط Gemini API باستخدام حزمة Python SDK أو واجهة برمجة التطبيقات REST باستخدام 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)

إنشاء نموذج معدَّل

لإنشاء نموذج معدَّل، عليك تمرير مجموعة البيانات إلى النموذج في الأسلوب 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")