تسريع أداء الشبكات العصبية باستخدام التجزئة

ركزت الصناعة على تسريع عملية الضرب بالمصفوفة ، ولكن تحسين خوارزمية البحث يمكن أن يؤدي إلى زيادة أكثر خطورة في الأداء




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

ربما يخطئون جميعًا.

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

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

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

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

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

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

قام الباحثون بشيء مشابه للحسابات المتعلقة بالشبكات العصبية. سوف يساعد المثال التالي في توضيح مقاربتهم:

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



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

من الصعب جدًا تدريب مثل هذه الشبكة ، لكن الآن دعونا نتجاهل هذه اللحظة ونتخيل أننا عدّلنا بالفعل جميع أوزان كل خلية عصبية حتى تتعرف الشبكة العصبية على الأرقام المكتوبة بخط اليد تمامًا. عندما يصل رقم مكتوب بشكل مقروء إلى مدخلاتها ، سيكون تنشيط إحدى الخلايا العصبية الخرجية (المقابلة لهذا الرقم) قريبًا من 1. وسيكون تنشيط التسعة الباقية قريبًا من 0. من الناحية الكلاسيكية ، يتطلب تشغيل هذه الشبكة مضاعفة مصفوفة واحدة لكل 512 خلية عصبية مخفية ، وواحد إضافي لكل عطلة نهاية أسبوع - مما يعطينا الكثير من الضرب.

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

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

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

استخدم الباحثون هذه التقنية ، التي أطلقوا عليها "SLIDE" (محرك التعلم العميق الفرعي الفرعي) ، لتدريب شبكة عصبية - من أجل عملية لها طلبات حسابية أكثر مما تفعل لغرضها المقصود. ثم قارنوا أداء خوارزمية التعلم مع نهج أكثر تقليدية باستخدام GPU قوية - وتحديدا ، GPU Nvidia. ونتيجة لذلك ، فقد حصلوا على شيء مذهل: "تظهر نتائجنا أنه في المتوسط ​​، يمكن أن تعمل تقنية وحدة المعالجة المركزية CPU SLIDE بسرعة أكبر من أفضل بديل ممكن ، ويتم تنفيذها على أفضل المعدات وبأية دقة."

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

Source: https://habr.com/ru/post/ar447806/


All Articles