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

سيساعدك هذا الدليل التعليمي في بدء ضبط واجهة Gemini API. باستخدام إما Python SDK أو REST API باستخدام curl. تعرض الأمثلة كيفية ضبط نموذج النص خلف خدمة إنشاء النصوص من Gemini API

العرض على ai.google.dev التنفيذ في Google Colab عرض المصدر على GitHub

ضبط إعدادات المصادقة

تتيح لك Gemini API تعديل النماذج استنادًا إلى بياناتك. نظرًا لأنها بياناتك النماذج التي تم ضبطها، فهذا يتطلب عناصر تحكم أكثر صرامة في الوصول يمكن أن توفرها مفاتيح واجهة برمجة التطبيقات.

قبل تشغيل هذا البرنامج التعليمي، يجب إعداد OAuth لـ مشروعك.

إدراج النماذج التي تم ضبطها

يمكنك الاطّلاع على النماذج التي ضبطتها حاليًا باستخدام genai.list_tuned_models. .

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

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

ولإنشاء نموذج مضبوط، يجب تمرير مجموعة البيانات إلى النموذج طريقة genai.create_tuned_model. يمكنك القيام بذلك عن طريق تحديد قيم الإدخال والإخراج في المكالمة أو الاستيراد من ملف إلى إطار بيانات وتمريره إلى الطريقة.

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

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()

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

يمكنك استخدام الطريقة genai.generate_text وتحديد اسم نموذجك. لاختبار أداء نموذجك.

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."})

حذف النموذج

يمكنك تنظيف قائمة النماذج التي تم ضبطها عن طريق حذف النماذج التي لم تعد بحاجة إليها. يمكنك استخدام طريقة genai.delete_tuned_model لحذف نموذج. في حال إلغاء أي وظائف ضبط الوظائف، فقد ترغب في حذف تلك الوظائف حيث قد يكون أداؤها لا يمكن التنبؤ به.

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