يحتوي هذا الريبو على وصفات من طرف إلى طرف إلى نموذج تمثيل اللغة BERT (تمثيل التشفير ثنائي الاتجاه من المحولات) باستخدام خدمة التعلم الآلي Azure.
تحديث في 7/7/2020 :؟ تطبيق أكثر حداثة لـ Bert pretring متاح على https://github.com/microsoft/onnxruntime-training-examples/tree/master/nvidia-bert أسرع بكثير من التنفيذ في هذا الريبو. يستخدم هذا التنفيذ وقت تشغيل ONNX لتسريع التدريب ويمكن استخدامه في البيئات مع GPU بما في ذلك خدمة التعلم الآلي Azure. تتوفر تفاصيل حول استخدام وقت تشغيل ONNX للتدريب والتدريب المتسارع لنماذج المحولات مثل BERT و GPT-2 في المدونة في ONNX Runtime Technical Dive.
Bert هو نموذج تمثيل اللغة يتميز بقدره على التقاط علاقات نصية عميقة ودقيقة فعليًا في مجموعة. في الورقة الأصلية ، يوضح المؤلفون أنه يمكن تكييف نموذج BERT بسهولة لإنشاء نماذج حديثة لعدد من مهام NLP ، بما في ذلك تصنيف النص ، والتعرف على الكيان المسمى والإجابة على الأسئلة. في هذا الريبو ، نوفر أجهزة الكمبيوتر المحمولة التي تسمح للمطور بتأليف نموذج Bert من نقطة الصفر على مجموعة ، وكذلك لضبط نموذج BERT الحالي لحل مهمة متخصصة. تتوفر مقدمة موجزة لـ Bert في هذا الريبو لبداية سريعة على Bert.
إن تدريب نموذج تمثيل لغة بيرت إلى المستوى المطلوب من الدقة أمر صعب للغاية ؛ نتيجة لذلك ، يبدأ معظم المطورين من نموذج Bert الذي تم تدريبه مسبقًا على مجموعة قياسية (مثل ويكيبيديا) ، بدلاً من تدريبه من الصفر. تعمل هذه الاستراتيجية بشكل جيد إذا تم تدريب النموذج النهائي على مجموعة تشبه المجموعة المستخدمة في خطوة ما قبل التدريب ؛ ومع ذلك ، إذا كانت المشكلة تتضمن مجموعة متخصصة تختلف تمامًا عن المجموعة القياسية ، فلن تكون النتائج مثالية. بالإضافة إلى ذلك ، لتعزيز تمثيل اللغة بما يتجاوز دقة Bert ، سيحتاج المستخدمون إلى تغيير بنية النموذج وبيانات التدريب ووظيفة التكلفة والمهام وإجراءات التحسين. كل هذه التغييرات يجب استكشافها في أحجام بيانات التدريب وأحجام بيانات التدريب. في حالة Bert-Large ، قد يكون هذا كبيرًا جدًا حيث يحتوي على 340 مليون معلمة وتدريب على مجموعة مستندات كبيرة جدًا. لدعم هذا مع وحدات معالجة الرسومات ، سيحتاج مهندسو التعلم الآلي إلى دعم تدريب موزع لتدريب هذه النماذج الكبيرة. ومع ذلك ، نظرًا لتعقيد وهشاشة تكوين هذه البيئات الموزعة ، يمكن أن ينتهي اتخاذ التغيير والتبديل بين الخبراء بنتائج أدنى من النماذج المدربة.
لمعالجة هذه القضايا ، يقوم هذا الريبو بنشر سير عمل لنماذج Bert-Large المسبقة. يمكن للمطورين الآن إنشاء نماذج تمثيل اللغة الخاصة بهم مثل BERT باستخدام بياناتهم الخاصة بالمجال على وحدات معالجة الرسومات ، إما باستخدام أجهزتهم الخاصة أو باستخدام خدمة التعلم الآلي Azure. تتضمن وصفة ما قبل الرصاص في هذا الريبو البرامج النصية للمعالجة المسبقة والمعالجة المسبقة حتى يتمكن أي شخص من تجربة بناء نماذج تمثيل اللغة للأغراض العامة خارج Bert. بشكل عام ، هذه وصفة مستقرة يمكن التنبؤ بها تتقارب إلى ما هو الأمثل الجيد للباحثين لتجربة الاستكشافات بمفردهم.
تعتمد الوصفة المسبقة في هذا الريبو على حزمة Pytorch Pretrained Bert V0.6.2 من الوجه المعانقة. يتضمن التنفيذ في هذه الوصفة المسبقة تقنيات التحسين مثل gradient accumulation (تتراكم التدرجات لمزارع صغيرة أصغر قبل تحديث أوزان النموذج) mixed precision training . تتوفر وحدات دفتر Python و Python للتدريب في دليل PretRain.
يعد إعداد البيانات أحد الخطوات المهمة في أي مشروع تعلم آلي. بالنسبة إلى Bert PretRing ، هناك حاجة إلى مجموعة على مستوى المستند. تؤثر جودة البيانات المستخدمة في التدريب بشكل مباشر على جودة النماذج المدربة. لجعل المعالجة المسبقة للبيانات أسهل وتكرار النتائج ، يتم تضمين رمز المعالجة المسبقة للبيانات في الريبو. قد يتم استخدامه لعملية Wikipedia Corpus أو مجموعات بيانات أخرى للتدريب. ارجع إلى معلومات إضافية في إعداد البيانات للتدريب للحصول على تفاصيل حول ذلك.
توضح وصفة Finetuning في هذا الريبو كيفية FineTune the Bert Language Model باستخدام Azure Machine Learning Service. تتوفر أجهزة الكمبيوتر المحمولة ووحدات Python للتكنولوجيا في Finetune Directory. نقوم بتقييم نقاط التفتيش الخاصة بنا ونقيمها مقابل ما يلي:
إن تقييم فهم اللغة العامة (GLUE) هو مجموعة من مهام فهم اللغة الطبيعية من تسع جملة أو جملة لتقييم أنظمة فهم اللغة الطبيعية وتحليلها. يتيح دفتر Notebor Bert_eval_glue.ipynb للمستخدم تشغيل إحدى نقاط التفتيش المسبقة مقابل هذه المهام على Azure ML.
توفر Azure Machine Learning Service بيئة قائمة على السحابة لإعداد البيانات ، والتدريب ، والاختبار ، ونشر ، وإدارة ، وتتبع نماذج التعلم الآلي. تدعم هذه الخدمة تمامًا تقنيات مفتوحة المصدر مثل Pytorch و TensorFlow و Scikit-Learn ويمكن استخدامها في أي نوع من التعلم الآلي ، من ML الكلاسيكي إلى التعلم العميق والتعلم الخاضع للإشراف.
يمكن استخدام أجهزة الكمبيوتر المحمولة Jupyter لاستخدام Azureml Python SDK وتقديم وظائف presrain و finetune. يحتوي هذا الريبو على دفاتر الملاحظات التالية للأنشطة المختلفة.
| نشاط | دفتر |
|---|---|
| ما قبل | bert_pretrain.ipynb |
| الغراء finetune/تقييم | bert_eval_glue.ipynb |
| نشاط | دفتر |
|---|---|
| الغراء finetune/تقييم | Tensorflow-Bert-Azureml.ipynb |
اعتمد هذا المشروع رمز سلوك المصدر المفتوح Microsoft. لمزيد من المعلومات ، راجع مدونة الشهادة الأسئلة الشائعة أو الاتصال بـ [email protected] مع أي أسئلة أو تعليقات إضافية.