المعلوماتية > الذكاء الصنعي

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

يُعدّ الأداء الأفضل المعيارَ الأهم في تقييم المنتجات البرمجية في المجالات جميعها، والذي بدوره يعتمد أساسيًّا على السرعة، ولذلك؛ حظيت السرعة باهتمام كبير من قبل الباحثين؛ فقد وظّف باحثو معهد ماساتشوستس للتكنولوجيا (MIT) تقنياتِ تعلم الآلة لبناء أداة قياس أداء جديدة تتنبّأ بدقة بالوقت اللازم لتنفيذ التعليمات البرمجية من قبل شريحة المعالج؛ مما يساعد المبرمجين على تعديل الشيفرة لتحسين الأداء.

من أجل تسريع تنفيذ الشيفرة؛ يستخدم المطوّرون والمترجمات (Compilers) نماذجَ الأداء (performance models)، وتشغّل هذه النماذج الشيفرة البرمجية عن طريق محاكاة بنية شريحة معينة.

تستخدم المترجمات تلك المعلومات لتحسين الشيفرة البرمجية تلقائيًّا، ويستخدمها المطورون لمعالجة مشكلات ضعف الأداء (perfrmance bottlenecks) في المعالجات الدقيقة التي ستشغّلها، لكنّ نماذج الأداء لشيفرة الآلة مكتوبة يدويًّا من قبل مجموعة صغيرة نسبيًّا من الخبراء ولا يُتحقق منها على نحو صحيح، ونتيجة لذلك؛ غالبًا ما تنحرف قياسات محاكاة الأداء عن النتائج الواقعية.

في سلسلة من الأوراق البحثية، يصف الباحثون طريقة جديدة في مجال تعلم الآلة تعمل على أتمتة هذه العملية؛ مما يجعلها أسهل وأسرع وأكثر دقة (1).

بدايةً، في ورقة بحثية قُدّمت في المؤتمر الدولي عن تعلم الآلة في حزيران (يونيو) من عام 2019؛ قدّم الباحثون أنموذج Ithemal، وهو أنموذج شبكة عصبونية يتدرب على البيانات المصنّفة بشكل كتل أساسية (basic blocks) -مقتطفات أساسية من تعليمات الحوسبة- للتنبؤ تلقائيًّا بالوقت الذي يلزم شريحة معينة لتنفيذ الكتل الأساسية غير المعروفة مسبقًا. 

وتشير النتائج إلى أنّ Ithemal يعمل على نحو أكثر دقة من النماذج التقليدية المكتوبة يدويًّا.

بعد ذلك، في ندوة IEEE الدولية التي أُقيمت في تشرين الثاني (نوفمبر) عام 2019 وتناولت توصيف عبء العمل؛ قدّم الباحثون مجموعة معيارية من الكتل الأساسية من مجالات متنوعة تتضمن تعلم الآلة (Machine Learning)، والمترجمات (Compilers)، والتشفير (Encryption)، والرسوميات (Graphics) التي تُستخدَم للتحقق من نماذج الأداء.

وقد جمعوا أكثر من 300000 من الكتل في مجموعة بيانات مفتوحة المصدر تُدعى BHive. ومن خلال تقييماتهم، تنبّأت Ithemal بسرعة تشغيل شرائح Intel للتعليمات البرمجية على نحو أفضل من أنموذج الأداء الذي بنته Intel نفسها.

وفي الآونة الأخيرة، في ورقة قُدّمت في مؤتمر NeurIPS في كانون الأول (ديسمبر) عام 2019؛ اقترح الفريق تقنية جديدة لإنشاء تحسينات للمترجم تلقائيًّا؛ إذ ينشؤون تلقائيًّا خوارزمية تسمى Vemal تحوّل الشيفرة البرمجية إلى متجهات، والتي يمكن استخدامها في الحوسبة التفرعية (parallel computing). تتفوق Vemal على خوارزميات المتجه المكتوبة يدويًّا والمستخدمة في مترجم LLVM (مترجم شائع يُستخدَم في الصناعة) (1).

تحتوي البنية الأساسية لنظام Ithemal على ثلاث طبقات: 

بعد تزويدها بالدخل *بلغة التجميع Assembly، تتوقع Ithemal إنتاجية سلسلة من التعليمات كعدد ذي قيمة حقيقية، ولتحقيق ذلك يُمَرّ خلال ثلاث مراحل:

في مرحلة التوافق يُحوَّل الدخل بلغة التجميع إلى شكل أكثر تنظيمًا تمليه لغة قواعد لغة التجميع؛ إذ تأخذ Ithemal كتلة مُجمّعة وتفككها، ثم تعيّنها إلى سلسلة من التعليمات، علمًا أنّ كل تعليمة تتكون من قائمة رموز مميزة (token)، والتي تمثل رمز العملية ومعاملات المصدر ومعاملات الوجهة.

تأخذ مرحلة تضمين Ithemal سلسلةً من التعليمات التي تُعدّ رمزًا متوافقًا (canonicalized token)، وتنتج لكل تعليمة تضمينًا هو: تمثيل تعليمة كقيمة حقيقة لمتّجه في فضاء عالي الأبعاد (2).

الخطوة الأولى هي طبقة token التي تُعيّن موقعَ رمزٍ متوافق للتضمين. وتُطبَّق طبقة token عن طريق تعيين كل رمز مميز موجود في السلسلة لمتجه ذي بُعد n باستخدام التحويل الخطي (linear transformation)، ثم تعيّن Ithemal تسلسلَ عمليات تضمين الرموز المميزة إلى تضمين لكل تعليمة في الكتلة الأساسية.

يُدعى هذا "طبقة التعليمات" لأنه من الممكن أن تحتوي كل تعليمة على عدد متغير من الرموز المميزة اعتمادًا على رقم معاملات المصدر والهدف الخاصّين بها، ولذلك؛ تُنفَّذ طبقة التعليمات بواسطة بنية الشبكة العصبونية المتكررة المتسلسلة (RNN Recurrent Neural Network) مع خلايا ذاكرة طويلة المدى (LSTM Long Short Term Memory).

يأتي التنبؤ النهائي من طبقة التنبؤ التي تُعيّن كتلة أساسية (سلسلة من عمليات تضمين التعليمات) إلى قيمة الإنتاجية، يُنفَّذ هذا مرة أخرى مع الشبكة العصبونية المتكررة (RNN) مع خلايا ذاكرة طويلة المدى (LSTM)، وباستخدام الناتج النهائي من تعليمات (LSTM)؛ تتنبأ Ithemal بإنتاجية الكتلة الأساسية.

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

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

خلال مرحلة الاختبار يمكن تغذية Ithemal بكتل أساسية غير مُعرّفة مُسبقًا وشريحة معينة، وسوف يولد الأنموذج رقمًا واحدًا يشير إلى مدى سرعة تنفيذ الشريحة لهذه الشيفرة البرمجية (1).

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

كذلك أظهروا في ورقتهم البحثية التالية أنّ معدل الخطأ في Ithemal كان 10%، في حين كان معدل الخطأ 20% في أنموذج Intel للتنبؤ بالأداء على مجموعة متنوعة من الكتل الأساسية في مجالات أُخرى متعددة.

يقول Charith Mendis؛ المؤلف المشارك في الأوراق الثلاث جميعها، وهو طالب دراسات عليا في EECS وCSAIL: "إن الأداة تجعل من السهل الآن معرفة سرعات الأداء لأي بنى شرائح جديدة، فعلى سبيل المثال؛ تُنشَأ الآن بنى خاصة بالنطاق مثل وحدة المعالجة Tensor الجديدة من Google والتي تستخدم خصيصًا للشبكات العصبونية؛ لكنّها غير مفهومة على نطاق واسع".

ويضيف Mendis: "إذا كنت ترغب في تدريب أنموذج على بعض البنى الجديدة، يجب عليك فقط جمع المزيد من البيانات عن تلك البنية وتشغيلها من خلال ملف التعريف profiler، واستخدام تلك المعلومات لتدريب Ithemal، والآن لديك أنموذج يتنبّأ بالأداء" (1).

وقد استُخدِم BHive (هو معيار للتحقق الممنهج) لتقييم أربعة نماذج أداء هي: IACA، وllvm-mca، و Ithemal، وOSACA.

صُنّفت النماذج بناءً على استخدامها لموارد الحوسبة، وباستخدام هذا التصنيف؛ يمكن لمعيار BHive تقديم تحليل تفصيلي لكل أنموذج أداء يشمل نقاط القوة والضعف.

يتفوق أنموذج Ithemal على النماذج الأخرى، ويأتي IACA في المرتبة الثانية، في حين يُعدّ أنموذجOSACA أفضلَ مقارنةً بـ llvm-mca الذي يُعدّ الأسوأ إلى حد كبير مقارنةً بما سبق (3).

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

يقول مايكل كاربين Michael Carbin؛ المؤلف المشارك في الأوراق الثلاث جميعها، والأستاذ المساعد في قسم الهندسة الكهربائية وعلوم الكمبيوتر (EECS)، وباحث في مختبر علوم الحاسوب والذكاء الصنعي (CSAIL): "المعالجات الحديثة غامضة ومعقدة على نحو رهيب ويصعب فهمها، ويكمن التحدي الأصعب في كتابة شيفرة برمجية تُنفَّذ أسرع ما يمكن في هذه المعالجات. إنّ هذه الأداة هي خطوة كبيرة إلى الأمام نحو النمذجة الكاملة لأداء هذه الرقائق من أجل تحسين الكفاءة" (1).

*لغة التجميع Assembly: هنا

المصادر:

1. Tool predicts how fast code will run on a chip [Internet]. MIT News | Massachusetts Institute of Technology. Available from:  هنا

2. Mendis C, Renda A, Amarasinghe S, Carbin M. Ithemal: Accurate, Portable and Fast Basic Block Throughput Estimation using Deep Neural Networks [Internet]. 2019. Available from:  هنا

3. Chen Y, Brahmakshatriya A, Mendis C, Renda A, Atkinson E, Sykora O et al. BHive: A Benchmark Suite and Measurement Framework for Validating x86-64 Basic Block Performance Models [Internet]. Massachusetts Institute of Technology;. Available from: هنا