يحتوي هذا المستودع على الكود الرسمي المستخدم لتجارب نمذجة اللغة في الورقة (الورقة):
بشكل عام ، يمكن استخدام هذا كمجموعة أدوات نمذجة اللغة في Pytorch لتجربة:
المحولات القياسية
Transformer-XL
المبرمجين سريع الوزن مع قواعد تحديث مختلفة ووظائف الاهتمام الخطي :
على سبيل المثال ، تؤدي بعض المجموعات إلى نماذج معروفة:
يحتوي هذا المستودع على اثنين من تطبيقات الأوزان السريعة.
torch.autograd.Function (انظر utils/fast_weight.py) بينما استخدمنا فقط تطبيق CUDA لجميع تجاربنا النهائية (استخدام GPU بشكل أسرع/أفضل بكثير) ، يمكن أن يكون إصدار torch.autograd.Function مفيدًا لنماذج أولية سريعة مع امتدادات جديدة.
تتطلب مجموعة الأدوات هذه torch Pytorch و ninja Ninja (لتجميع نواة CUDA).
أجريت تجارب الورق مع Python 3.6 و Pytorch 1.4.0 (ملاحظة في 24 أغسطس ، 2023: يعمل الرمز أيضًا مع Python 3.11 و Pytorch 2.0.1+Cu117).
لا يتم دعم الإصدارات الأكثر حداثة من Pytorch بشكل جيد من خلال مجموعة الأدوات التي لا تزال تستخدم torch.nn.DataParallel للتدريب متعدد GPU. إذا كنت بحاجة حقًا إلى استخدام إصدار أحدث من Pytorch ، فتحقق من الوثائق لاستخدام torch.nn.parallel.DistributedDataParallel بدلاً من ذلك. نأمل أن نصلح هذا قريبًا ، لكن لا يمكننا معرفة متى بالضبط.
تدعم مجموعة الأدوات الأوزان والتحيزات لمراقبة الوظائف. إذا كنت تستخدمه ، قم أيضًا بتثبيت wandb .
تحتوي هذه الصمامة على العديد من خطوط الكود المأخوذة وتكييفها من المصادر التالية:
يرجى التحقق من الملفات تحت example_scripts للحصول على تعليمات عامة وأمثلة لتدريب وتقييم النماذج.
@inproceedings{schlag2021linear,
title={Linear Transformers Are Secretly Fast Weight Programmers},
author={Imanol Schlag and Kazuki Irie and J"urgen Schmidhuber},
booktitle={Proc. Int. Conf. on Machine Learning (ICML)},
address = {Virtual only},
month = jul,
year={2021}
}
@article{irie2021going,
title={Going Beyond Linear Transformers with Recurrent Fast Weight Programmers},
author={Kazuki Irie and Imanol Schlag and R'obert Csord'as and J"urgen Schmidhuber},
journal={Preprint arXiv:2106.06295},
year={2021}
}