تنفيذ Pytorch غير رسمي
Electra: ترميز النص المسبق للتدريب على أنه تمييز بدلاً من المولدات من قبل Kevin Clark. Minh-thang luong. Quoc V. Le. كريستوفر مانينغ
※ للحصول على التحديثات والمزيد من العمل في المستقبل ، اتبع
لقد قمت بتسوية Electra-Small من الصفر وقد نجحت في تكرار نتائج الورقة على الغراء.
| نموذج | كولا | SST | MRPC | STS | QQP | mnli | qnli | RTE | متوسط. من AVG. |
|---|---|---|---|---|---|---|---|---|---|
| Electra-small-owt | 56.8 | 88.3 | 87.4 | 86.8 | 88.3 | 78.9 | 87.9 | 68.5 | 80.36 |
| Electra-small-owt (my) | 58.72 | 88.03 | 86.04 | 86.16 | 88.63 | 80.4 | 87.45 | 67.46 | 80.36 |
الجدول 1: نتائج على مجموعة الغراء ديف. النتيجة الرسمية تأتي من النتائج المتوقعة. الدرجات هي متوسط الدرجات التي تم تحريكها من نقطة التفتيش نفسها. (انظر هذه المشكلة) تأتي نتيجتي من تدريج نموذج من نقطة الصفر وتأخذ المتوسط من 10 أشواط فنية لكل مهمة. يتم تدريب كلتا النتيجتين على OpenWebText Corpus
| نموذج | كولا | SST | MRPC | STS | QQP | mnli | qnli | RTE | متوسط. |
|---|---|---|---|---|---|---|---|---|---|
| Electra-Small ++ | 55.6 | 91.1 | 84.9 | 84.6 | 88.0 | 81.6 | 88.3 | 63.6 | 79.7 |
| Electra-Small ++ (MY) | 54.8 | 91.6 | 84.6 | 84.2 | 88.5 | 82 | 89 | 64.7 | 79.92 |
الجدول 2: نتائج مجموعة اختبار الغراء. النتيجة الخاصة بي في فني نقطة التفتيش قبل التحميل من Huggingface.
| منحنى خسارة التدريب الرسمي | منحنى خسارة التدريب الخاص بي |
|---|---|
![]() | ![]() |
الجدول 3: كلاهما طرازات صغيرة مدربة على OpenWebText. الرسمي من هنا. يجب أن تأخذ قيمة فقدان التدريب مع حبة الملح لأنه لا يعكس أداء المهام المصب.
لا تحتاج إلى تنزيل ومعالجة مجموعات البيانات يدويًا ، فإن Siciropt يعتنقون عليك تلقائيًا. (بفضل Huggingface/مجموعات البيانات و hugginface/transformers)
AFAIK ، أقرب إعادة تنفيذ إلى الأصل ، مع الاهتمام بالعديد من التفاصيل التي يتم تجاهلها بسهولة (الموضحة أدناه).
AFAIK ، الشخص الوحيد الذي نجح في التحقق من صحة نفسه من خلال تكرار النتائج في الورقة.
يأتي مع أجهزة الكمبيوتر المحمولة Jupyter ، والتي يمكنك استكشاف الكود وفحص البيانات المعالجة.
لا تحتاج إلى تنزيل ومعالجة أي شيء بنفسك ، كل ما تحتاجه هو تشغيل البرنامج النصي التدريبي.
| يقصد | الأمراض المنقولة جنسيا | الأعلى | دقيقة | #النماذج |
|---|---|---|---|---|
| 81.38 | 0.57 | 82.23 | 80.42 | 14 |
Tabel 4: إحصائيات Glue Devset نتائج النماذج الصغيرة. كل نموذج تم تجهيزه من الصفر مع بذور مختلفة ويتم تحريكه لمدة 10 أشواط عشوائية لكل مهمة غراء. درجة النموذج هي متوسط أفضل 10 لكل مهمة. (العملية مثل تلك الموضحة في الورقة) كما نرى ، على الرغم من أن Electra يسخر من التدريب Adeversarial ، إلا أنه يتمتع باستقرار تدريب جيد.
| نموذج | كولا | SST | MRPC | STS | QQP | mnli | qnli | RTE |
|---|---|---|---|---|---|---|---|---|
| Electra-small-owt (my) | 1.30 | 0.49 | 0.7 | 0.29 | 0.1 | 0.15 | 0.33 | 1.93 |
الجدول 5: الانحراف المعياري لكل مهمة. هذا هو نفس النموذج مثل الجدول 1 ، الذي يتم تشغيل Finetunes 10 لكل مهمة.
المنتدى Huggingface Post
Fastai Forum Post
ملاحظة: هذا المشروع هو في الواقع لبحثي الشخصي. لذلك لم أحاول تسهيل استخدام جميع المستخدمين ، لكن محاولة تسهيل القراءة والتعديل.
pip3 install -r requirements.txt
python pretrain.pypretrained_checkcpoint في finetune.py لاستخدام نقطة التفتيش التي قمت بتجهيزها وحفظها في electra_pytorch/checkpoints/pretrain .python finetune.py (مع تعيين do_finetune إلى True )th_runs في finetune.py وفقًا للأرقام في أسماء التشغيل التي اخترتها.python finetune.py (مع ضبط do_finetune على False ) ، هذه التنبؤات الفوق على اختبار اختبار ، يمكنك بعد ذلك ضغط وإرسال .tsv s في electra_pytorch/test_outputs/<group_name>/*.tsv . لم أستخدم وسيطات CLI ، لذا قم بتكوين الخيارات المرتفعة داخل MyConfig في ملفات Python لتلبية احتياجاتك قبل تشغيلها. (هناك تعليقات أدناه توضح خيارات إعدادات الفانيليا)
ستحتاج إلى حساب Neptune وإنشاء مشروع Neptune على الموقع لتسجيل نتائج الغراء لا تنس أن تحل محل richarddwang/electra-glue باسم مشروع Neptune الخاص بك
تم تحويل ملفات Python pretrain.py ، finetune.py في الواقع من Pretrain.ipynb و Finetune_GLUE.ipynb . يمكنك أيضًا استخدام أجهزة الكمبيوتر المحمولة هذه لاستكشاف تدريب Electra و Finetuning.
يسرد أدناه تفاصيل التنفيذ/الورقة الأصلية التي يسهل التغاضي عنها وقد اعتنت بها. لقد وجدت أن هذه التفاصيل لا غنى عنها لتكرار نتائج الورقة بنجاح.
ElectraClassificationHead . إذا كنت ما قبل ، و finetune ، وتوليد نتائج الاختبار. سوف electra_pytorch توليد هذه من أجلك.
project root
|
|── datasets
| |── glue
| |── <task>
| ...
|
|── checkpoints
| |── pretrain
| | |── <base_run_name>_<seed>_<percent>.pth
| | ...
| |
| |── glue
| |── <group_name>_<task>_<ith_run>.pth
| ...
|
|── test_outputs
| |── <group_name>
| | |── CoLA.tsv
| | ...
| |
| | ...
@inproceedings{clark2020electra,
title = {{ELECTRA}: Pre-training Text Encoders as Discriminators Rather Than Generators},
author = {Kevin Clark and Minh-Thang Luong and Quoc V. Le and Christopher D. Manning},
booktitle = {ICLR},
year = {2020},
url = {https://openreview.net/pdf?id=r1xMH1BtvB}
}
@misc{electra_pytorch,
author = {Richard Wang},
title = {PyTorch implementation of ELECTRA},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/richarddwang/electra_pytorch}}
}