
قم بإنشاء نماذج مقطرة من كل نموذج لغة مقنعة على مركز Huggingface مع أمر باش واحد فقط.
سمات:
أولاً ، استنساخ المشروع وتثبيت التبعيات.
# clone project
git clone https://github.com/iPieter/universal-distillation
# install project
cd universal-distillation
pip install -e .
pip install -r requirements.txtفي هذا البرنامج التعليمي ، سوف نوضح لك كيفية إعداد مهمة التقطير من سطر الأوامر. ستحتاج إلى شيئين:
bert-base-uncased .سوف نستخدم القسم الإنجليزي في Europarl Corpus. هذا مجموعة موازية عالية الجودة للغاية من الباروس الأوروبي الذي أنشأه المترجمين الفوريين والمترجمين المحترفين. كما أنه صغير جدًا بالنسبة إلى مجموعة لغة في الوقت الحاضر ، فقط 114 ميغابايت ، ولكن بالنسبة لبرنامج التقطير الخاص بنا ، لا بأس بذلك.
wget https://opus.nlpl.eu/download.php ? f = Europarl/v8/mono/en.txt.gz -O en.txt.gz
gunzip en.txt.gz يتم الآن فصل البيانات وتخزينها في الملف en.txt .
الآن لدينا البيانات ، يمكننا البدء في التدريب. سيحدث تنزيل نموذج المعلم تلقائيًا ، لذلك لا داعي للقيام بذلك يدويًا. إذا شعرت أن هذا يستغرق وقتًا طويلاً وتريد فقط تجربة التدريب ، على سبيل المثال للتعرف على التوقيت ، يمكنك إضافة --limit_train_batches N . هذا يحد من كل عصر على دفعات N أثناء التدريب.
python universal_distillation/distillation.py
--batch_size 8
--gpus 1
--max_epochs 3
--save_dir my_distilled_model/
--teacher bert-base-uncased
--data en.txt هناك بعض الأشياء التي تحدث في الخلفية بمجرد تشغيل هذا الأمر. أولاً ، تنشئ هذه المكتبة طالبًا ونموذجًا للمعلم. المعلم bert-base-uncased وسيستخدم الطالب نفس الهندسة المعمارية مثل المعلم افتراضيًا ، فقط عدد الرؤوس أصغر: 6 بدلاً من 12. نظرًا لأننا نتدرب على مجال معين (Europarl) ، يجب أن يكون هذا كافيًا. بالطبع ، يمكنك مزج ومطابقة المعلمين المختلفين والأكبر مع طلاب أصغر ، ولكن الأداء سيختلف كثيرًا.
ثانياً ، تقوم مكتبة Huggingface بتنزيل نموذج المعلم و Tokenizer. ثالثًا ، يتم تحميل مجموعة البيانات من القرص وتهيئته باستخدام الرمز المميز ، لاحظ أن الرمز المميز نفسه يحدث لاحقًا بشكل افتراضي. أخيرًا ، تبدأ حلقة التقطير.
أخيرًا ، يمكنك استخدام النموذج مع مكتبة Huggingface! يتم حفظ جميع الملفات من الطالب (نموذج Pytorch و Tokenizer) في المجلد الذي حددناه سابقًا: my_distilled_model/ . يمكنك استيراد النموذج من هذا المجلد مباشرة واختبار مهمة نمذجة اللغة المقنعة مع 3 أسطر فقط:
from transformers import pipeline
p = pipeline ( "fill-mask" , model = "my_distilled_model/" )
p ( "This is a [MASK]." )على الرغم من أن هذا كان مثالًا على المضيق ، إلا أن هذا غالبًا ما يكون كافياً لإنشاء نموذج الخاص بك الذي تم تكييفه. في هذه الحالة ، إنه
يمكنك أيضًا تشغيل تقييم جوهري باستخدام pseudo-perplexity. تحتاج إلى تحديد المعلم والنموذج المقطر ، ولكن إذا قمت بتشغيل التقييم فقط ، فيمكنك إعطاء النموذج المستهدف لكلتا الوسيطتين.
python universal_distillation/evaluation.py
--gpus=0
--limit_test_batches=500
--teacher=pdelobelle/robbert-v2-dutch-base
--data=data/oscar_dutch/nl_dedup_part_2.txt
--checkpoint=DTAI-KULeuven/robbertje-39-gb-non-shuffled تستخدم قاعدة الكود هذه أيضًا لورقة ECML-PKDD 2022 ، حيث نجمع بين تقطير المعرفة لنماذج اللغة مع قيود الإنصاف. القيود التي اختبرناها في الورقة هي استبدال المضيق للضمائر بين الجنسين ، لكن القانون يدعم أي استبدال واحد. يمكن إضافة هذه إلى عملية التقطير من خلال تحديد الرموز التي تريد تحصيلها. على سبيل المثال ، he she معرفات رمزية 2016 و 2002 ، حتى نتمكن من تحديد زوج بديل مع كلا الرموز. الاحتمالات على كلا الرموبين الحصول على المساواة.
BaseTransformer إضافة الرموز المميزة عن طريق تعديل universal-distillation/distillation.py .
constraints = [[ 2016 , 2002 ]] # she # he
model = BaseTransformer ( args . teacher , constraints = constraints , ** vars ( args ))