تقديم BERT المعبأ لتسريع التدريب مرتين في معالجة اللغة الطبيعية

عقدة المصدر: 1062065

تقديم BERT المعبأ لتسريع التدريب مرتين في معالجة اللغة الطبيعية

تحقق من خوارزمية BERT للتعبئة الجديدة هذه للحصول على تدريب أكثر كفاءة.


By الدكتور ماريو مايكل كريل، قائد رئيسي لتعلم الآلة في Graphcore & ماتيج كوسيك، أخصائي تطبيقات الذكاء الاصطناعي في Graphcore


صورة رأس
صورة المؤلف.

 

باستخدام خوارزمية تعبئة جديدة ، قمنا بتسريع معالجة اللغة الطبيعية بأكثر من مرتين أثناء تدريب BERT-Large. تعمل تقنية التعبئة الجديدة لدينا على إزالة الحشو ، مما يتيح حسابًا أكثر كفاءة بشكل ملحوظ.

نعتقد أن هذا يمكن تطبيقه أيضًا على نماذج الجينوميات وطي البروتين ونماذج أخرى ذات توزيعات أطوال منحرفة لإحداث تأثير أوسع بكثير في الصناعات والتطبيقات المختلفة.

قدمنا ​​خوارزمية تعبئة الرسم البياني للمربعات الصغرى غير السلبية ذات الكفاءة العالية من Graphcore (أو NNLSHP) بالإضافة إلى خوارزمية BERT المطبقة على التسلسلات المعبأة في ورقة جديدة [1].

النفايات الحسابية في البرمجة اللغوية العصبية بسبب الحشو المتسلسل

 
 
بدأنا في البحث عن طرق جديدة لتحسين تدريب BERT أثناء العمل على أحدث ما لدينا عمليات الإرسال المعيارية إلى MLPerf ™. كان الهدف هو تطوير تحسينات مفيدة يمكن اعتمادها بسهولة في تطبيقات العالم الحقيقي. كان BERT اختيارًا طبيعيًا كواحد من النماذج التي يجب التركيز عليها في هذه التحسينات ، حيث يتم استخدامه على نطاق واسع في الصناعة ومن قبل العديد من عملائنا.

لقد فاجأنا حقًا عندما علمنا أنه في تطبيق التدريب BERT-Large الخاص بنا باستخدام مجموعة بيانات Wikipedia ، كانت 50٪ من الرموز المميزة في مجموعة البيانات عبارة عن حشو - مما أدى إلى إهدار الكثير من الحوسبة.

تسلسل الحشو لمحاذاة كل منهم بأطوال متساوية هو نهج شائع يستخدم مع وحدات معالجة الرسومات ، لكننا اعتقدنا أنه سيكون من المفيد تجربة نهج مختلف.

التسلسلات لها اختلاف كبير في الطول لسببين:

  1. تُظهر بيانات ويكيبيديا الأساسية تباينًا كبيرًا في طول المستند
  2. تقلل المعالجة المسبقة لـ BERT نفسها بشكل عشوائي من حجم المستندات المستخرجة التي يتم دمجها لإنشاء تسلسل تدريب

يؤدي ملء الطول إلى الحد الأقصى للطول وهو 512 إلى جعل 50٪ من جميع الرموز بمثابة رموز حشو. قد يؤدي استبدال 50٪ من المساحة المتروكة ببيانات حقيقية إلى معالجة بيانات أكثر بنسبة 50٪ بنفس الجهد الحسابي وبالتالي تسريع 2x في ظل الظروف المثلى.



الشكل 1: توزيعات مجموعة بيانات ويكيبيديا. صورة المؤلف.

 

هل هذا خاص بـ ويكيبيديا؟ لا.

حسنًا ، إذن ، هل هي خاصة باللغة؟ لا.

في الواقع ، توجد توزيعات أطوال منحرفة في كل مكان: في اللغة وعلم الجينوم وطي البروتين. يوضح الشكلان 2 و 3 توزيعات مجموعة بيانات SQuAD 1.1 ومجموعات بيانات GLUE.



الشكل 2: SQuAD 1.1 BERT مدرج تكراري لطول تسلسل مجموعة البيانات قبل التدريب لأقصى طول تسلسل يبلغ 384. صورة للمؤلف.

 


الشكل 3: الرسوم البيانية لطول تسلسل مجموعة البيانات GLUE لأقصى طول تسلسل 128. صورة من قبل المؤلف.

 

كيف يمكننا التعامل مع الأطوال المختلفة مع تجنب الهدر الحسابي؟

تتطلب الأساليب الحالية نواة حسابية مختلفة لأطوال مختلفة أو للمهندس لإزالة الحشو برمجيًا ثم إضافتها مرة أخرى بشكل متكرر لكل كتلة انتباه وحساب خسارة. لم يكن حفظ الحساب عن طريق تفجير الكود وجعله أكثر تعقيدًا أمرًا جذابًا ، لذلك بحثنا عن شيء أفضل. ألا يمكننا وضع تسلسلات متعددة معًا في حزمة بأقصى طول ومعالجتها معًا؟ اتضح أننا نستطيع!

يتطلب هذا النهج ثلاثة مكونات رئيسية:

  1. خوارزمية فعالة لتحديد العينات المراد تجميعها للحصول على أقل قدر ممكن من الحشو المتبقي
  2. تعديل نموذج BERT لمعالجة الحزم بدلاً من التسلسلات
  3. وضبط المعلمات الفائقة

حزم

 
 
في البداية ، بدا من غير المحتمل أن تتمكن من حزم مجموعة بيانات كبيرة مثل ويكيبيديا بكفاءة عالية. تُعرف هذه المشكلة عمومًا باسم تعبئة الحاويات. حتى عندما تقتصر التعبئة على ثلاثة متواليات أو أقل ، فإن المشكلة الناتجة ستظل مكتملة بقوة NP ، وتفتقر إلى حل حسابي فعال. لم تكن خوارزميات حزم الاستدلال الحالية واعدة لأنها كانت معقدة على الأقل O(ن سجل(n))، أين n هو عدد التسلسلات (حوالي 16 مليونًا في ويكيبيديا). كنا مهتمين بالأساليب التي من شأنها أن تتناسب مع ملايين التسلسلات.

ساعدتنا حيلتان في تقليل التعقيد بشكل كبير:

  1. تحديد عدد التسلسلات في حزمة بثلاثة (لنهج الحل الأول لدينا)
  2. تعمل فقط على الرسم البياني لطول التسلسل مع حاوية واحدة لكل طول يحدث

كان الحد الأقصى لطول التسلسل لدينا 512. لذلك ، أدى الانتقال إلى المدرج التكراري إلى تقليل البعد والتعقيد من 16 مليون تسلسل إلى 512 حساب طول. أدى السماح بثلاثة متواليات كحد أقصى في حزمة إلى تقليل عدد مجموعات الطول المسموح بها إلى 22 كيلو بايت. تضمن هذا بالفعل الحيلة التي تتطلب فرز التسلسلات حسب الطول في الحزمة. فلماذا لا تجرب 4 تسلسلات؟ أدى هذا إلى زيادة عدد التوليفات من 22 ألفًا إلى 940 ألفًا ، وهو ما كان كثيرًا جدًا بالنسبة لنهج النمذجة الأول لدينا. بالإضافة إلى ذلك ، حقق العمق 3 بالفعل كفاءة تعبئة عالية بشكل ملحوظ.

في الأصل ، اعتقدنا أن استخدام أكثر من ثلاثة متواليات في حزمة سيزيد من العبء الحسابي ويؤثر على سلوك التقارب أثناء التدريب. ومع ذلك ، لدعم تطبيقات مثل الاستدلال ، والتي تتطلب تعبئة أسرع في الوقت الفعلي ، قمنا بتطوير خوارزمية تعبئة الرسم البياني غير السالبة ذات المربعات الصغرى عالية الكفاءة (NNLSHP).

تعبئة الرسم البياني للمربعات الصغرى غير السلبية (NNLSHP)

 
 
غالبًا ما تتم صياغة تعبئة الحاويات على أنها مشكلة تحسين رياضية. ومع ذلك ، مع وجود 16 مليون تسلسل (أو أكثر) ، فإن هذا ليس عمليًا. ستتجاوز متغيرات المشكلة وحدها ذاكرة معظم الأجهزة. البرنامج الرياضي للنهج القائم على المدرج التكراري أنيق تمامًا. للتبسيط ، قررنا اتباع نهج المربعات الصغرى (الفأس = ب) مع ناقل الرسم البياني b. قمنا بتوسيعه من خلال طلب ناقل الاستراتيجية x أن تكون غير سلبية وإضافة أوزان للسماح بالحشو البسيط.

كان الجزء الصعب هو مصفوفة الإستراتيجية. يحتوي كل عمود على حد أقصى لمجموع ثلاثة ويشفر التسلسلات التي يتم تجميعها معًا لتتناسب تمامًا مع الطول الإجمالي المطلوب ؛ 512 في حالتنا. تقوم الصفوف بترميز كل من التوليفات المحتملة للوصول إلى الطول الإجمالي. ناقل الاستراتيجية x هو ما كنا نبحث عنه ، والذي يصف عدد المرات التي نختار فيها أيًا من 20 ألفًا. ومن المثير للاهتمام ، أنه تم اختيار حوالي 600 مجموعة فقط في النهاية. للحصول على حل دقيق ، فإن الإستراتيجية مهمة x يجب أن يكون عددًا صحيحًا موجبًا ، لكننا أدركنا أن الحل التقريبي المقرَّب مع غير سالب فقط x كان كافيا. للحصول على حل تقريبي ، يمكن استخدام حل بسيط جاهز للحصول على نتيجة في غضون 30 ثانية.



الشكل 4: مثال على مصفوفة إستراتيجية لطول التسلسل 8 وعمق التعبئة 3. الصفوف ترمز إلى التسلسلات ذات الطول 1-8 التي يتم تجميعها معًا والأعمدة تمثل جميع تركيبات الطول الممكنة في حزمة بدون ترتيب معين. صورة المؤلف.

 

في النهاية ، كان علينا إصلاح بعض العينات التي لم يتم تخصيص إستراتيجية لها ولكنها كانت ضئيلة للغاية. لقد طورنا أيضًا حلًا متغيرًا يفرض أن يتم تعبئة كل تسلسل ، ويحتمل أن يكون به حشوة ، وله ترجيح يعتمد على الحشو. استغرق الأمر وقتًا أطول ، ولم يكن الحل أفضل بكثير.

حزمة الرسم البياني الأقصر حزمة - الأولى

 
 
قدمت NNLSHP نهج تعبئة كافٍ لنا. ومع ذلك ، كنا نتساءل عما إذا كان بإمكاننا نظريًا الحصول على نهج قادر على الإنترنت أسرع وإزالة قيود وضع 3 سلاسل فقط معًا.

لذلك ، أخذنا بعض الإلهام من خوارزميات التعبئة الموجودة ولكننا ما زلنا نركز على الرسوم البيانية.

هناك أربعة مكونات للخوارزمية الأولى لدينا ، وهي حزمة الرسم البياني الأقصر حزمة أولًا (SPFHP):

  1. تعمل على أعداد المدرج التكراري من التسلسل الأطول إلى الأقصر
  2. إذا كان طول التسلسل الحالي لا يتناسب مع أي حزمة ، فابدأ مجموعة جديدة من الحزم
  3. إذا كانت هناك نوبات متعددة ، فاخذ الحزمة حيث يكون مجموع طول التسلسل هو الأقصر وقم بتعديل الأعداد على التوالي
  4. تحقق مرة أخرى من نوبات التهم المتبقية

كان هذا النهج هو الأكثر مباشرة من حيث التنفيذ واستغرق 0.02 ثانية فقط.

كان أحد المتغيرات هو أخذ أكبر مجموع لطول التسلسل بدلاً من الأعداد الأقصر والمقسمة للحصول على المزيد من المقاسات المثالية. بشكل عام ، لم يغير هذا الكفاءة كثيرًا ولكنه زاد من تعقيد الكود كثيرًا.



كيف تعمل حزمة الرسم البياني الأقصر حزمة أولاً. الرسوم المتحركة من قبل المؤلف.

 

ويكيبيديا ، SQuAD 1.1 ، نتائج تعبئة الغراء

 
 
يوضح الجدول 1 و 2 و 3 نتائج التعبئة للخوارزميتين المقترحتين لدينا. عمق التعبئة يصف الحد الأقصى لعدد التسلسلات المحزومة. عمق التعبئة 1 هو تطبيق BERT الأساسي. الحد الأقصى لعمق التعبئة الذي يحدث ، في حالة عدم تعيين حد يتم الإشارة إليه بـ "أقصى" إضافي. ال عدد العبوات يصف طول مجموعة البيانات المعبأة الجديدة. الكفاءة هي النسبة المئوية للرموز الحقيقية في مجموعة البيانات المجمعة. ال عامل التعبئة يصف التسريع المحتمل الناتج مقارنة بعمق التعبئة 1.

كان لدينا أربع ملاحظات رئيسية:

  1. كلما زاد انحراف التوزيع ، زادت فوائد التعبئة.
  2. تستفيد جميع مجموعات البيانات من التعبئة. البعض حتى بأكثر من 2.
  3. يصبح SPFHP أكثر كفاءة عندما لا يكون عمق التعبئة محدودًا.
  4. لعدد أقصى من 3 متواليات معبأة ، كلما كان NNLSHP أكثر تعقيدًا ، زادت فعاليته (99.75 مقابل 89.44).



الجدول 1: نتائج الأداء الرئيسية لخوارزميات التعبئة المقترحة (SPFHP و NNLSHP) على ويكيبيديا. صورة المؤلف.

 


الجدول 2: نتائج أداء خوارزميات التعبئة المقترحة للتدريب المسبق SQUaD 1.1 BERT. صورة المؤلف.

 


الجدول 3: نتائج أداء خوارزميات التعبئة المقترحة لمجموعة بيانات GLUE. يتم عرض نتائج تعبئة خط الأساس و SPFHP فقط دون الحد من عمق التعبئة. صورة المؤلف.

 

تعديل معالجة بيرت

 
 
شيء مثير للاهتمام حول بنية BERT هو أن معظم المعالجة تحدث على مستوى الرمز المميز ، مما يعني أنها لا تتداخل مع التعبئة لدينا. هناك أربعة مكونات فقط تحتاج إلى تعديل: قناع الانتباه ، وخسارة الامتيازات والرهون البحرية ، وفقدان NSP والدقة.

كان المفتاح لجميع الأساليب الأربعة للتعامل مع أعداد مختلفة من التسلسلات هو التوجيه واستخدام أقصى عدد من التسلسلات التي يمكن ربطها. للفت الانتباه ، كان لدينا بالفعل قناع لمعالجة الحشو. كان توسيع هذا إلى تسلسلات متعددة أمرًا سهلاً كما يمكن رؤيته في الكود الزائف TensorFlow التالي. المفهوم هو أننا تأكدنا من أن الاهتمام يقتصر على التسلسلات المنفصلة ولا يمكن أن يتجاوز ذلك.

عينة رمز قناع الانتباه.


 


الشكل 5: مثال على قناع صفر واحد

 

لحساب الخسارة ، نقوم من حيث المبدأ بتفكيك التسلسلات وحساب الخسائر المنفصلة ، والحصول في النهاية على متوسط ​​الخسائر على التسلسلات (بدلاً من الحزم).

بالنسبة لخسارة الامتيازات والرموز ، يبدو الرمز كما يلي:

عينة رمز حساب الخسارة.


 

المبدأ هو نفسه بالنسبة لخسارة NSP والدقة. في الأمثلة العامة لدينا ، يمكنك العثور على الكود المعني من خلال موقعنا إطار PopART.

ويكيبيديا تقدير النفقات العامة والتسريع

 
 
مع تعديلنا لـ BERT ، كان لدينا سؤالان:

  1. ما مقدار النفقات العامة التي تجلبها معها؟
  2. ما مقدار الحمل الذي يعتمد على الحد الأقصى لعدد التسلسلات التي يتم تجميعها معًا في حزمة؟

نظرًا لأن إعداد البيانات في BERT يمكن أن يكون مرهقًا ، فقد استخدمنا اختصارًا وقمنا بتجميع الكود للعديد من أعماق التعبئة المختلفة وقارننا الدورات (المقاسة) ذات الصلة. يتم عرض النتائج في الجدول 4. مع فوق، نشير إلى النسبة المئوية للانخفاض في الإنتاجية بسبب التغييرات في النموذج لتمكين التعبئة (مثل مخطط التقنيع للانتباه وحساب الخسارة المتغير). ال تسريع محقق هو مزيج من التسريع بسبب التعبئة (ملف عامل التعبئة) وانخفاض الإنتاجية بسبب فوق.



الجدول 4: مقارنة التسريع المقدرة لخوارزميات التعبئة المقترحة (SPFHP و NNLSHP) على ويكيبيديا. صورة المؤلف.

 

بفضل تقنية التوجيه ، يكون الحمل صغيرًا بشكل مدهش ولا يوجد عيب من تجميع العديد من التسلسلات معًا.

تعديلات Hyperparameter

 
 
مع التعبئة ، نقوم بمضاعفة حجم الدُفعة الفعال (في المتوسط). هذا يعني أننا بحاجة إلى ضبط معلمات التدريب الفائقة. تتمثل إحدى الحيل البسيطة في خفض عدد تراكم التدرج إلى النصف للحفاظ على نفس متوسط ​​حجم الدفعة الفعال كما كان قبل التدريب. باستخدام إعداد معياري مع نقاط فحص محددة مسبقًا ، يمكننا أن نرى أن منحنيات الدقة تتطابق تمامًا.



الشكل 6: مقارنة منحنيات التعلم للمعالجة المعبأة وغير المعبأة مع تقليل حجم الدفعة للنهج المعبأ. الصور من قبل المؤلف.

 

تطابق الدقة: قد يكون فقدان التدريب على الامتيازات والرهون البحرية مختلفًا قليلاً في البداية ولكنه يلحق بالركب بسرعة. يمكن أن يأتي هذا الاختلاف الأولي من تعديلات طفيفة في طبقات الانتباه التي ربما كانت منحازة نحو التسلسلات القصيرة في التدريب السابق.

لتجنب حدوث تباطؤ ، من المفيد أحيانًا الحفاظ على الحجم الأصلي للدفعة كما هو وضبط المعلمات الفائقة على الحجم الفعال للدُفعة المتزايدة (مضاعفة). المعلمات الفائقة الرئيسية التي يجب مراعاتها هي معلمات بيتا ومعدلات التعلم. يتمثل أحد الأساليب الشائعة في مضاعفة حجم الدُفعة ، مما يؤدي في حالتنا إلى انخفاض الأداء. بالنظر إلى إحصائيات مُحسِّن LAMB ، يمكننا إثبات أن رفع معلمة بيتا إلى قوة عامل التعبئة يتوافق مع تدريب دفعات متعددة على التوالي للحفاظ على الزخم والسرعة قابلين للمقارنة.



الشكل 7: مقارنة منحنيات التعلم للمعالجة المعبأة وغير المعبأة مع الاستدلال مُطبَّق. الصور من قبل المؤلف.

 

أظهرت تجاربنا أن أخذ بيتا لقوة اثنين هو استكشافية جيدة. في هذا السيناريو ، من غير المتوقع أن تتطابق المنحنيات لأن زيادة حجم الدُفعة عادةً ما تقلل سرعة التقارب بمعنى العينات / العهود حتى الوصول إلى الدقة المستهدفة.

والسؤال الآن هو ما إذا كنا في السيناريو العملي ، هل نحصل حقًا على التسريع المتوقع؟



الشكل 8: مقارنة منحنيات التعلم للمعالجة المعبأة وغير المعبأة في ملف الإعداد الأمثل. الصور من قبل المؤلف.

 

نعم فعلنا! حصلنا على تسريع إضافي لأننا ضغطنا نقل البيانات.

وفي الختام

 
 
يمكن أن توفر جمل التعبئة معًا جهد الحوسبة والبيئة. يمكن تنفيذ هذه التقنية في أي إطار عمل بما في ذلك PyTorch و TensorFlow. لقد حصلنا على تسريع واضح بمقدار 2x ، وعلى طول الطريق ، قمنا بتوسيع أحدث التقنيات في خوارزميات التعبئة.

التطبيقات الأخرى التي تثير فضولنا هي علم الجينوم وطي البروتين حيث يمكن ملاحظة توزيعات مماثلة للبيانات. يمكن أن تكون محولات الرؤية أيضًا منطقة مثيرة للاهتمام لتطبيق الصور المعبأة بأحجام مختلفة. ما هي التطبيقات التي تعتقد أنها ستعمل بشكل جيد؟ كنا نحب أن نسمع منك!

اقرأ الورقة

قم بالوصول إلى الكود على جيثب

شكراً لك

 
 
شكرًا لزملائنا في فريق هندسة التطبيقات في Graphcore ، Sheng Fu و Mrinal Iyer ، على مساهماتهم في هذا العمل وشكرًا لدوغلاس أور من فريق أبحاث Graphcore على ملاحظاته القيمة.

مراجع حسابات

 
 
[1] إم كوسيك ، إس فو ، إم إم كريل ، التعبئة: نحو تسريع 2x NLP BERT (2021) ، arXiv

 
الدكتور ماريو مايكل كريل هو قائد رئيسي لتعلم الآلة في Graphcore. يقوم ماريو بالبحث وتطوير خوارزميات التعلم الآلي لأكثر من 12 عامًا ، وإنشاء برامج للصناعات المتنوعة مثل الروبوتات والسيارات والاتصالات والرعاية الصحية. في Graphcore ، ساهم في أعمالنا المثيرة للإعجاب عمليات الإرسال MLPerf ولديه شغف لتسريع النماذج غير القياسية الجديدة مثل حساب Bayesian التقريبي لتحليل بيانات COVID-19 الإحصائي.

ماتيج كوسيك هو متخصص في تطبيقات الذكاء الاصطناعي في Graphcore في بالو ألتو. عمل سابقًا كعالم في الذكاء الاصطناعي في القيادة الذاتية في NIO في سان خوسيه ، وحاصل على درجة الماجستير في الملاحة الجوية والفضائية من جامعة ستانفورد.

أصلي. تم إعادة النشر بإذن.

هذا الموضوع ذو علاقة بـ:

المصدر: https://www.kdnuggets.com/2021/08/packed-bert-training-speed-up-natural-language-processing.html

الطابع الزمني:

اكثر من KD nuggets