سطر واحد من التعليمات البرمجية يحسن أداء النموذج الكبير بنسبة 10٪ ، المطور: غداء مجاني

المصدر الأصلي: كيوبيتس

مصدر الصورة: تم إنشاؤه بواسطة الذكاء الاصطناعي غير محدود

هناك "غداء مجاني" لضبط النماذج الكبيرة ، حيث يمكن لسطر واحد من التعليمات البرمجية تحسين الأداء بنسبة 10٪ على الأقل.

كان هناك حتى مضاعفة الأداء على Llama 2 مع معلمات 7B ، وشهدت Mistral أيضا زيادة ربعية.

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

来自马里兰州大学、纽约大学等机构的研究人员提出了名为NEFT(une) طريقة الضبط الدقيق.

هذه تقنية تنظيم جديدة يمكن استخدامها لتحسين أداء نماذج الإشراف الدقيقة (SFT).

تم تضمين هذه الطريقة في مكتبة TRL بواسطة HuggingFace ويمكن استدعاؤها عن طريق إضافة سطر إضافي من التعليمات البرمجية للاستيراد.

ليس فقط NEFT سهل التشغيل ، ولكنه لا يضيف تكاليف كبيرة ، ويسميه المؤلفون "غداء مجاني".

حاول بعض مستخدمي الإنترنت ضبط Mistral-7B استنادا إلى Guanaco (نموذج لعائلة الألبكة) بهذه الطريقة ، وكان تحسين الأداء واضحا.

لذا ، كيف تقوم NEFTune "بالدم" لعدد كبير من النماذج الكبيرة بسطر واحد من التعليمات البرمجية؟

إضافة ضوضاء إلى النموذج

الاسم الكامل ل NEFTune هو الضبط الدقيق للتضمين الصاخب ، والذي يرمز إلى "الضبط المضمن مع الضوضاء".

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

على وجه التحديد ، يتم أولا ترميز النص الموجود في قاعدة بيانات التدريب وتحويله إلى متجه تضمين.

ثم يقوم النظام بإنشاء متجه ضوضاء بشكل عشوائي وضبط الضوضاء إلى شدة محددة باستخدام قشور.

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

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

من torch.nn استيراد وظيفية ك F

def NEFTune (نموذج ، noise_alpha = 5)
def noised_embed (orig_embed ، noise_alpha):
def new_func (x):
إذا كان النموذج.التدريب:
embed_init = orig_embed (س)
الخافتات = الشعلة.الموتر (embed_init.الحجم (1) * embed_init.الحجم (2))
mag_norm = noise_alpha/torch.sqrt (خافتات)
إرجاع embed_init + torch.zeros_like(embed_init).uniform_(-mag_norm, mag_norm)
اخر:
إرجاع orig_embed (x)
new_func العودة
model.base_model.model.model.embed_tokens.forward = noised_embed(model.base_model.model.model.embed_tokens, noise_alpha)
نموذج العودة

في هذا التعليمة البرمجية ، تكون المعلمة noise_alpha في الدالة NEFTune هي شدة الضوضاء (المعامل) ، و mag_norm هي نطاق الضوضاء في العملية الفعلية.

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

في وضع التدريب ، تكون قيمة إرجاع الدالة الجديدة \ _func هي طبقة التضمين بعد إضافة الضوضاء.

يتم نشر هذا الرمز لشرح الحاجة ، إذا كنت ترغب فقط في الاتصال ب NEFT ، فيمكنك الاتصال به مباشرة من مكتبة TRL دون استخدام الكود الكامل أعلاه.

التعليمة البرمجية التالية هي مثال على ضبط طراز OPT-350M:

من load_dataset استيراد مجموعات البيانات
من استيراد TRL SFTTrainer

مجموعة البيانات = load_dataset("IMDb"، انقسام = "قطار")

المدرب = SFTTrainer(
"فيسبوك/الأراضي الفلسطينية المحتلة 350M"،
train_dataset= مجموعة البيانات،
dataset_text_field="نص"،
max_seq_length=512,
)
مدرب.قطار()

فيما يتعلق بمجموعات البيانات ، استخدم المطورون ما مجموعه أربع مجموعات بيانات مختلفة مثل Alpaca و ShareGPT لضبطها.

وفقا للمؤلفين ، فإن أسباب اختيار هذه البيانات تشمل أنها أكثر شهرة ، وكانت SOTA ، وما إلى ذلك.

بالإضافة إلى ذلك ، نظرا لاعتبارات أداء الأجهزة ، تم اختيار مجموعات بيانات الحوار أحادية الجولة أثناء التجربة.

إذن ، كيف يعمل النموذج الكبير بعد الضبط باستخدام طريقة NEFT؟

** أداء أفضل حتى 1x **

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

تعتمد جودتها الصينية بشكل أساسي على مجموعة بيانات Aplaca ، التي تم تقييمها باستخدام ChatGPT و GPT-4.

النموذج المستخدم كمرجع هو Text-Davinci-003 ، ونسبة النموذج المدرب الذي يتفوق على TD3 هو مؤشر التقييم.

من أجل توفير الموارد ، استخدم فريق البحث أولا ChatGPT لتحديد ما إذا كان سيتم تقييم GPT-4 أو الاتصال به بأنفسهم ، وفي بعض الحالات يتم الحكم عليه يدويا.

النتائج في مجموعات بيانات التدريب المختلفة ، يتمتع Llama 2 بتحسن في الأداء بنسبة 10٪ على الأقل بعد التعديل ، ويتم مضاعفته مباشرة على مجموعة بيانات الألبكة.

يمكن لنهج NEFT ، الذي تم طرحه في OPT و Llama 1 ، أن يحقق أيضا بعض التحسينات في الأداء.

المهمة المستخدمة لتقييم قدرة الدردشة للنموذج هي OpenLLM Leadorboard.

وجد أن قدرة الدردشة لنموذج NEFT المعدل قد تم تحسينها أيضا مقارنة ب Evol-Instruct.

يقيم المؤلفون أيضا ما إذا كان تحسين جودة النص وقدرات الدردشة دون زيادة كبيرة في التكلفة سيؤدي إلى انخفاض في القدرات الأخرى.

أظهرت النتائج أن طريقة NEFT ليس لها تأثير كبير على القدرات الأخرى للنموذج على مجموعات البيانات والنماذج المختلفة.

خلال التجربة ، وجد المؤلفون أيضا أن النص الذي تم إنشاؤه بواسطة النموذج لم ينسخ بيانات التدريب ، مما يشير إلى أن النموذج لديه قدرات تعميم معينة.

لتأكيد ذلك ، قام المؤلفون بتقييم خسارة النموذج ووجدوا أن فقدان مجموعة بيانات الاختبار كان أقل من بيانات التدريب ، مما يؤكد هذا الرأي.

بالإضافة إلى ذلك ، وجد المؤلفون أنه بعد تعديلات NEFT ، لم يزد النص الناتج عن النموذج من حيث الجودة والطول فحسب ، بل زاد أيضا المحتوى دون تكرار.

من أجل التأكد من أن التحسن في جودة النص كان ناتجا عن إضافة الضوضاء وليس عن الزيادة في طول النص ، أجرى الباحثون أيضا تجارب الاستئصال.

تظهر النتائج أن مجرد إجبار النموذج على إنشاء نص أطول لا يمكن أن يحقق تأثير NEFT.

عنوان الورقة:

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • تثبيت