تنسيق ضبط التعليمات
يتم تدريب نماذج المحتوى المضبوط على التعليمات باستخدام تنسيق محدّد ويضيف تعليقات توضيحية إلى جميع أمثلة ضبط التعليمات بمعلومات إضافية، وكلاهما في التدريب والاستنتاج. للتنسيق غرضان:
- الإشارة إلى الأدوار في إحدى المحادثات، مثل النظام أو المستخدم أو المساعد.
- تحديد الانعطافات في المحادثة، خاصة في الأدوار المتعددة محادثة.
نحدد أدناه رموز التحكّم المميّزة التي تستخدمها Gemma وحالات استخدامها. ملاحظة أن رموز التحكم تكون محجوزة وخاصة بأداة إنشاء الرموز المميزة.
- رمز مميز يشير إلى دور المستخدم:
user
- رمز مميز يشير إلى دوران النموذج:
model
- رمز مميز يشير إلى بداية منعطف الحوار:
<start_of_turn>
- رمز مميز يشير إلى نهاية الحوار:
<end_of_turn>
إليك مثال على مربّع الحوار:
<start_of_turn>user
knock knock<end_of_turn>
<start_of_turn>model
who is there<end_of_turn>
<start_of_turn>user
Gemma<end_of_turn>
<start_of_turn>model
Gemma who?<end_of_turn>
الرمز المميز "<end_of_turn>\n"
هو فاصل الانعطاف، وبادئة الطلب هي
"<start_of_turn>model\n"
وهذا يعني أنك إذا أردت مطالبة النموذج
بسؤال مثل، "ما قاعدة كرامر؟"، فيجب عليك بدلاً من ذلك إطعام
النموذج على النحو التالي:
"<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model"
لاحظ أنك إذا كنت تريد تحسين نماذج Gemma الأساسية المدرَّبة مسبقًا باستخدام يمكنك استخدام أي مخطط لرموز التحكم، طالما أنها متسقة بين حالات الاستخدام للتدريب والاستنتاج.
تعليمات النظام
لكل من الضبط الدقيق (SFT) والتعلّم التعزِّزي الخاضع للإشراف من الإنسان
التعقيبات (RLHF)، لم يتم تدريب النماذج باستخدام إرشادات النظام. نتيجة لذلك، أُنشئت مكتبة مات بلوت ليب في
فإن رموز التنسيق الوحيدة ذات الصلة لـ Gemma هي <start_of_turn>
،
<end_of_turn>
وuser
وmodel
على سبيل المثال:
<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model
Cramer's Rule is ...<end_of_turn>
تنسيق مهام FIM
الخياران CodeGemma 2B و7B يتم ضبطها خصيصًا لمهام ملء الرموز.
وعلى وجه التحديد، يتم تدريبهم على أربعة رموز مميزة للتحكم في التنسيق يمكنك استخدامها للمساعدة في إنشاء مطالبات نموذجية لمهام ترميز التعبئة الوسيط (FIM).
السياق | الرمز المميز |
---|---|
بادئة FIM | <|fim_prefix|> |
لاحقة FIM | <|fim_suffix|> |
نموذج FIM الأوسط | <|fim_middle|> |
فاصل الملف | <|file_separator|> |
استخدِم رموز FIM لتحديد موقع المؤشر والسياق المحيط به حتى يقوم CodeGemma بإدخال الرمز. استخدم الرمز المميز لفاصل الملفات سياقات متعددة الملفات.
مثال: إنشاء طلب FIM
يعيد هذا القسم استخدام المثال في مستند Keras CodeGemma البدء السريع لعرض كيفية إنشاء مطالبة لمهام FIM.
ضع في اعتبارك التعليمة البرمجية التالية:
import |⏎ # Line 1
if __name__ == '__main__':⏎ # Line 2
sys.exit(0) # Line 3
تشير السمة |
إلى موقع المؤشر وهو المكان الذي يجب وضع الرمز فيه.
مكتملة. لاحظ أن هناك مسافة قبل المؤشر وأن السطرين 1 و2
تحتوي على رجوع إلى أول حرف في النهاية.
البادئة هي عندئذ،
import
مع تضمين مسافة واحدة في النهاية.
اللاحقة هي:
⏎
if __name__ == '__main__':⏎
sys.exit(0)
بخط جديد في البداية.
ويجب إنشاء الطلب على النحو التالي:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name == '__main__':⏎
sys.exit(0)<|fim_middle|>
تجدر الإشارة إلى ما يلي:
- يجب عدم وجود مسافات بيضاء إضافية بين أي رموز FIM والبادئة ولاحقة
- يجب أن يكون الرمز المميز الأوسط FIM في النهاية لإعداد النموذج للمتابعة ملء
- قد تكون البادئة أو اللاحقة فارغة بناءً على مكان المؤشر الموجودة حاليًا في الملف، أو مقدار السياق الذي تريد توفيره في النموذج مع
فهم ناتج النموذج
ستكون استجابة النموذج للمثال أعلاه هي:
<|fim_prefix|>import <|fim_suffix|>⏎
if __name__ == "__main__":\n sys.exit(0)<|fim_middle|>sys\n<|file_separator|>
يكرر النموذج طلب الإدخال ويوفر sys
كعملية إكمال للرمز.
عند استخدام نماذج CodeGemma في مهام FIM، يمكنك الاستفادة من الرموز المميزة للبث واستخدام رموز FIM أو رموز فاصل الملفات كمحددات لإيقاف البث والحصول على نتيجة إكمال التعليمات البرمجية.