
مرحبًا بك في مكتبة النقل NLP ، إطار عمل مبني على رأس Pytorch لتعزيز التجريب القابل للتكرار ونقل التعلم في NLP
يمكنك الحصول على نظرة عامة على واجهة برمجة التطبيقات عالية المستوى على دفتر كولاب ، والذي يوضح كيفية استخدام الإطار على عدة أمثلة. جميع الأمثلة المستندة إلى DL على أجهزة الكمبيوتر المحمولة هذه تضمنت مراقبة تدريب Tensorboard في الخلية!
للحصول على مثال على التحويل النموذجي الذي تم تدريبه مسبقًا ، نقدم برنامجًا تعليميًا قصيرًا قابل للتنفيذ على BertClassifier Finetuning على دفتر كولاب هذا
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
لاستخدام نقل NLP كمكتبة:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
أو
pip install git+https://github.com/feedly/transfer-nlp.git
للحصول على أحدث حالة قبل الإصدارات الجديدة.
لاستخدام نقل NLP مع أمثلة مرتبطة:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
يمكن العثور على وثائق API ونظرة عامة على المكتبة هنا
يتم صنع جوهر المكتبة من منشئ التجربة: يمكنك تحديد الكائنات المختلفة التي تحتاجها التجربة ، ووكيك التكوين يبنيها بطريقة لطيفة. للبحث القابل للتكرار ودراسات التذرية السهلة ، تفرض المكتبة استخدام ملفات التكوين للتجارب. نظرًا لأن الأشخاص لديهم أذواق مختلفة لما يشكل ملف تجربة جيد ، فإن المكتبة تسمح بالتجارب المحددة في العديد من التنسيقات:
في Transfer-NLP ، يحتوي ملف تكوين التجربة على جميع المعلومات اللازمة لتحديد التجربة بالكامل. هذا هو المكان الذي ستقوم فيه بإدراج أسماء المكونات المختلفة التي ستستخدمها تجربتك ، إلى جانب المقاييس المفرطة التي تريد استخدامها. يستفيد Transfer-NLP من انعكاس نمط التحكم ، والذي يسمح لك بتحديد أي فئة / طريقة / وظيفة قد تحتاجها ، ستقوم فئة ExperimentConfig بإنشاء قوام وتثبيت كائناتك وفقًا لذلك.
لاستخدام الفصول الخاصة بك داخل Transfer-NLP ، تحتاج إلى تسجيلها باستخدام @register_plugin DICRODATOR. بدلاً من استخدام سجل مختلف لكل نوع من المكونات (النماذج ، لوادر البيانات ، حزبات الحواس ، المحسّنات ، ...) ، يتم استخدام سجل واحد فقط هنا ، من أجل فرض التخصيص الكلي.
إذا كنت تستخدم Transfer NLP كاعتماد على DEV فقط ، فقد ترغب في استخدامه بشكل إعلاني فقط ، واتصل register_plugin() على الكائنات التي تريد استخدامها في وقت تشغيل التجربة.
فيما يلي مثال على كيفية تحديد تجربة في ملف Yaml:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
يمكن تعريف أي كائن من خلال فئة أو طريقة أو دالة ، بالنظر إلى معلمات _name تليها معلماتها الخاصة. ثم يتم تحميل التجارب وتثبيتها باستخدام ExperimentConfig(experiment=experiment_path_or_dict)
بعض الاعتبارات:
يمكن تخطي المعلمات الافتراضية في ملف التجربة.
إذا تم استخدام كائن في أماكن مختلفة ، فيمكنك الرجوع إليه باستخدام رمز $ ، على سبيل المثال ، يستخدم كائن trainer هنا في data_loader آخر. لا يلزم ترتيب الكائنات.
بالنسبة للمسارات ، قد ترغب في استخدام متغيرات البيئة بحيث يمكن للآلات الأخرى أيضًا إجراء تجاربك. في المثال السابق ، ستقوم بتشغيل EG ExperimentConfig(experiment=yaml_path, HOME=Path.home()) لتشكيل التجربة واستبدال $HOME بمسار المنزل الجهاز.
يتيح إنشاء مثيل للتكوين أي إعدادات معقدة مع القائمة / القائمة المتداخلة
يمكنك إلقاء نظرة على اختبارات الأمثلة على إعدادات التجربة التي يمكن أن ينشئها محمل التكوين. بالإضافة إلى ذلك ، نقدم تجارب قابلة للتشغيل في experiments/ .
لتجارب التعلم العميق ، نقدم BaseIgniteTrainer في transfer_nlp.plugins.trainers.py . سيأخذ هذا المدرب الأساسي نموذجًا وبعض البيانات كمدخلات ، وتشغيل خط أنابيب تدريب كامل. نستخدم مكتبة Pytorch-ignite لمراقبة الأحداث أثناء التدريب (تسجيل بعض المقاييس ، ومعالجة معدلات التعلم ، ونماذج تحديد الفحص ، إلخ ...). يتم تضمين سجلات Tensorboard أيضًا كخيار ، وسيتعين عليك تحديد مسار المعلمات البسيطة tensorboard_logs في ملف التكوين. ثم قم فقط بتشغيل tensorboard --logdir=path/to/logs في محطة ويمكنك مراقبة تجربتك أثناء التدريب! يأتي Tensorboard مع مرافق لطيفة للغاية لتتبع قواعد أوزان النموذج الخاصة بك ، والتوزيعات ، والتوزيعات ، وتصور التضمينات ، وما إلى ذلك ، لذلك نوصي حقًا باستخدامه.

نحن نقدم فئة SingleTaskTrainer التي يمكنك استخدامها لأي إعداد خاضع للإشراف مع مهمة واحدة. نحن نعمل على فئة MultiTaskTrainer للتعامل مع إعدادات المهام متعددة المهام ، و SingleTaskFineTuner للموديلات الكبيرة إعدادات في العصر.
فيما يلي بعض حالات الاستخدام لنقل NLP:
ExperimentRunner لتشغيل مجموعات من التجارب بشكل متتابع ، وتولد تقارير مخصصة (تحتاج فقط إلى تنفيذ طريقة report في فئة ReporterABC مخصص)Module Pytorch ويسمح للمدربين بالتعامل مع جزء التدريب (مع الاستمرار في التحكم في معظم معلمات التدريب من خلال ملف التجربة)أثناء تجربة النماذج / البيانات الخاصة بك ، قد يستغرق التدريب بعض الوقت. للحصول على إخطارك عندما ينتهي التدريب الخاص بك أو تعطله ، يمكنك استخدام Library Knockknock من قبل الأشخاص في Huggingface ، مما يضيف ديكورًا بسيطًا إلى وظيفة التشغيل الخاصة بك لإعلامك عبر Slack أو البريد الإلكتروني ، إلخ.
استلهمت المكتبة من قراءة "معالجة اللغة الطبيعية مع Pytorch" من قبل Delip Rao و Brian McMahan. تجارب في experiments ، يتم أخذ أو تكييف لبنة البناء المفردات أو التضمينات أقرب الجيران من الكود الوارد في الكتاب.