PEFT documentation

طرق الضبط الدقيق الفعّالة من حيث المعلمات

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

طرق الضبط الدقيق الفعّالة من حيث المعلمات

تدرب طرق PEFT على أقل عدد ممكن من المعاملات مع السعي لتحقيق أداء مماثل لأداء الضبط الدقيق الكامل. نظرًا لأن عددًا أقل من المعاملات القابلة للتدريب يكون أقل تعبيرية، فلا يُكفَل تحقيق الأداء نفسه. مقابل ذلك، تستهلك ذاكرة أقل، وغالبًا ما تستهلك قدرًا أقل من الحوسبة، وتحصل على ميزات مثل التبديل السريع بين محولات الخبراء، وتقليل نسيان المعرفة السابقة.

من الصعب تقديم نصائح عامة لتدريب النماذج الكبيرة، لكن بالنسبة للنماذج التوليدية، ولا سيما نماذج اللغة، يمكنك اتباع الخطوات التالية:

  1. استخدم التوجيه (مثل أمثلة قليلة في الاستعلام) للتحقق مما إذا كان النموذج قادرًا بالفعل على أداء المهمة. إذا كان النموذج يحل مشكلتك، فممتاز! يمكنك الآن استخدام طرق مبنية على التوجيه لتعلم الاستعلام وتوفير الرموز الثمينة.
  2. إذا لم تكن الأساليب القائمة على المُوجِّهات كافية، يمكنك استخدام ضبط الطبقات وأساليب المُكيِّفات. بشكل عام، تكون هذه الأساليب أكثر تعبيراً من الأساليب القائمة على المُوجِّهات وتقترب أكثر من الضبط الكامل.
  3. تأكد من قياس الاحتفاظ بالمعرفة المكتسبة مسبقًا، حيث أن كل خطوة من خطوات الضبط الدقيق قد تؤدي إلى نسيان المعرفة السابقة.

تهدف حزمة مقارنة طرق PEFT إلى تقديم نظرة عامة تقريبية على (معظم) الطرق المُنفَّذة على مجموعة مختارة من المعايير والنماذج.

لا تتساوى جميع طرق PEFT من حيث القدرات، إذ توجد فروق بينها:

  • الكمّية: لا تدعم جميع الطرق النماذج الأساسية المُكمَّمة
  • الميزات: لا تدعم جميع الميزات جميع الأساليب (مثل: عدة محوِّلات، الاستدلال بمحوِّلات مختلطة، الدمج/إلغاء الدمج)
  • أنواع الطبقات: تُدعم الطبقات الخطية بشكل عام، لكن ليس جميع طرق المحوِّلات (adapters) تدعم التضمين (وهو أمر مهم لتوسيع المفردات) أو الطبقات التلافيفية (وهو أمر مهم لبعض نماذج الصور)
  • وقت التشغيل: تضيف طرق PEFT عادةً عبئًا إضافيًا على وقت التشغيل، لكن يمكن التخفيف من بعض ذلك (مثلًا، عن طريق دمج أوزان المحوّل)

طرق تعتمد على المحفز

يُهيّئ التوجيه (Prompting) نموذجًا مُسبَق التدريب المجمّد لمهمة تالية محددة من خلال تضمين موجه نصي يصف المهمة أو حتى يُظهر مثالًا عليها. وبفضل التوجيه، يمكنك تجنّب تدريب نموذج منفصل بالكامل لكل مهمة تالية، واستخدام النموذج المُسبَق التدريب المجمّد نفسه بدلاً من ذلك. وهذا أسهل بكثير لأنك يمكنك استخدام النموذج نفسه لعدة مهام مختلفة، كما أن تدريب مجموعة أصغر من معاملات التوجيه وتخزينها أكثر كفاءة بكثير من تدريب جميع معاملات النموذج.

توجد فئتان من طرق التوجيه:

  • التلميحات الصلبة هي تلميحات نصية مصممة يدويًا تحتوي على رموز إدخال منفصلة؛ والعيوب هي أنها تتطلب جهدًا كبيرًا لإنشاء تلميح جيد
  • التلميحات الناعمة هي متجهات قابلة للتعلم تُدمج مع تمثيلات الإدخال ويمكن تحسينها لمجموعة بيانات محددة؛ والعيب فيها أنها غير قابلة للقراءة البشرية لأنك لا تطابق هذه "الرموز الافتراضية" مع تمثيلات كلمة حقيقية

تدعم مكتبة PEFT عدة أنواع من طرق التوجيه (p-tuning، وprefix tuning، وprompt tuning، ...)، واستكشف فهرس المحتويات للحصول على قائمة كاملة بطرق التوجيه الناعمة. إذا كنت مهتمًا بتطبيق هذه الطرق على مهام وحالات استخدام أخرى، فتفضل بالاطلاع على مجموعة الدفاتر الخاصة بنا!

تكون بعض الإلمام بالعملية العامة لتدريب نموذج لغة سببي مفيدة للغاية، وتتيح لك التركيز على طرق التلميح الناعم. إذا كنت جديدًا في هذا المجال، فننصحك بالاطلاع أولًا على دليل نمذجة اللغة السببية من وثائق Transformers. وعندما تكون مستعدًا، عدّ إلى هنا لترى مدى سهولة دمج PEFT في تدريبك!

ضبط الطبقات

تصنّف طريقة ضبط الطبقات (Layer Tuning) الأساليب التي تستهدف نوعًا واحدًا من الطبقات أو جانبًا محددًا من طبقة بعينها، على سبيل المثال تستهدف ضبط طبقات LayerNorm طبقات LayerNorm فقط، بينما تستهدف TrainableTokens رموزًا محددة في مصفوفة التضمين (embedding matrix) فقط. ويتناقض ذلك مع الأساليب القائمة على الأوامر (prompt-based) التي تعمل على مدخلات النموذج، أو أساليب المحوّل (adapter) التي توسّع الأوزان الموجودة، وهي عمومًا أكثر استقلالاً عن نوع الطبقة، حيث تستهدف الطبقات الخطية أو التلافيفية.

طرق المحوّل

يمكن النظر إلى طرق المُكيِّف (Adapter) بوصفها سبلًا لإضافة مصفوفات قابلة للتدريب، تكون صغيرة نسبيًا، إلى النماذج القائمة بغرض الضبط الدقيق. والهدف هو إدخال عدد قليل من المعاملات القابلة للتدريب لتوجيه النموذج الكبير نحو اتجاه المهمة التي تتطلب ضبطًا دقيقًا، وذلك لتوفير الموارد مثل الذاكرة أو القدرة الحاسوبية.

طريقة شائعة لتطبيق المحوِّلات (Adapters) هي إدراج مصفوفات قابلة للتدريب أصغر حجماً، تكون تحليلاً رتبةً منخفضةً (low-rank decomposition) لتخطيط الأوزان المُكيَّفة، وذلك لتوفير الذاكرة. هناك عدة طرق مختلفة للتعبير عن مصفوفة الأوزان كتحليل رتبةً منخفضةً، لكن التكيّف رتبةً منخفضةً (LoRA) هو الطريقة الأكثر شيوعاً. يدعم مكتبة PEFT عدة تنويعات أخرى لهذا الصياغة - بعضها تنويعات مباشرة لـ LoRA وموثقة تحت بند LoRA، وبعضها مختلف بما يكفي ليُعدّ طرقاً مستقلة، مثل الجداء هادامارد رتبةً منخفضةً (LoHa)، والجداء كرونكر رتبةً منخفضةً (LoKr)، والتكيّف رتبةً منخفضةً التكيفي (AdaLoRA). إذا كنت مهتماً بتطبيق هذه الطرق على مهام وحالات استخدام أخرى مثل التقسيم الدلالي (semantic segmentation) وتصنيف الرموز (token classification)، فتفضل بالاطلاع على مجموعة الدفاتر (notebooks) الخاصة بنا!

تُعد LoRA واحدة من أكثر طرق PEFT شيوعًا، وهي نقطة انطلاق جيدة إذا كنت تبدأ للتو في استخدام PEFT. تم تطويرها في الأصل للنماذج اللغوية الكبيرة، لكنها أصبحت طريقة تدريب شائعة للغاية لنماذج الانتشار (diffusion models) نظرًا لكفاءتها وفعاليتها.

المُكيِّفات منخفضة الرتبة ليست سوى صياغة واحدة ممكنة للمُكيِّفات، إذ ينفّذ PEFT العديد من الأنواع الأخرى من المُكيِّفات أيضًا. على سبيل المثال، تستخدم طرق الضبط الدقيق المتعامد (OFT، BOFT، …) التفكيكات المتعامدة لأوزان المُكيِّف لتحقيق حجم صغير. أما طرق مثل MiSS فتُقسّم المصفوفات وتشارك هذه الأجزاء لتوفير الذاكرة. ويقدّم IA3 متجهات متعلَّمة تعيد تحجيم تفعيلات المفتاح والقيمة والطبقات الأمامية.

Update on GitHub