لماذا تستخدم المعالجات الرسومية GPU في التعلم العميق Deep Learning؟

مقدمة

كثر الحديث في الآونة الأخيرة عن المعالجات الرسومية GPUs والحاجة لها عند بناء تطبيقات تعلّم عميق Deep Learning، ودخلت المعالجات الرسومية لأول مرة لتصبح من أهم التجهيزات التي تقوم بتأمينها المراكز البحثية والأكاديمية والشركات التجارية، بعد أن كانت حكراً على عشاق الألعاب وشركات الإنتاج السينمائي والتصميم بمساعدة الكومبيوتر CAD والتطبيقات الرسومية Graphic Design.

لماذا تستخدم المعالجات الرسومية GPU في التعلم العميق Deep Learning؟
لماذا تستخدم المعالجات الرسومية GPU في التعلم العميق Deep Learning؟

نعرض في هذه المقالة مقارنة تقنية بين معالجات CPU و GPU، لنجيب عن السؤال: لماذا تعتبر معالجات GPU الأفضل عند بناء تطبيقات التعلم العميق.

لمحة تاريخية عن معالجات GPU 

طورت شركة NVIDIA المعالجات الرسومية لأول مرة في عام 1999، ليتم استخدامها في بطاقات العرض (كرت الشاشة) لدعم المعالجة الصورية للألعاب.

في عام 2005، طور شتاينكراوس شبكة عصبونية مؤلفة من طبقتين وقام بتدريبها على معالج GPU، حسب الورقة البحثية التي نشرها، استطاع تسريع عملية التدريب بمقدار ثلاثة أضعاف.

في عام 2007، طوّرت شركة NVIDIA منصة CUDA باستخدام لغة C، وهي عبارة عن واجهة للتخاطب مع المعالج الرسومي GPU وإجراء عمليات حسابية عالية التعقيد بشكل متوازي parallel programming.

في عام 2009، تم تبني مكتبة CUDA من قبل مجتمع الباحثين في مجال التعلم العميق  (كيريسان، راينا) وأصبح استخدام المعالجات الرسومية منتشر في المجتمع الأكاديمي.

قبل معرفة لماذا يعتبر تنفيذ التعليمات الحسابية على المعالج الرسومي أسرع بكثير من المعالج الحسابي سنطلع على آلية عمل المعالج الرسومي.

كيف يتم تنفيذ الأوامر ضمن المعالج الرسومي GPU؟

يوضح المخطط التالي تدفق العمليات التي تنفّذ على المعالج الرسومي:

مصدر الصورة من الرابط 

  1. في البداية يتم نسخ البيانات المراد معالجتها من الذاكرة الرئيسية RAM إلى ذاكرة المعالج الرسومي GPU RAM
  2. يتم إرسال التعليمات المراد تنفيذها على هذه البيانات من المعالج الرئيسي CPU إلى المعالج الرسومي GPU
  3. يتم تنفيذ التعليمات على البيانات الموجودة في الذاكرة الرسومية بشكل موزّع Parallel execution في المعالج الرسومي.
  4. يتم أخيراً نسخ النتائج الحسابية النهائية إلى الذاكرة الرئيسية RAM.

تكمن قوة المعالجة الرسومية بميزة تتمتع بها الذاكرة الرسومية وهي سرعة نقل البيانات من الذاكرة الرسومية إلى المعالج الرسومي. يوضح الشكل التالي الفرق بين سرعة نقل البيانات بين أفضل معالجات GPU ومعالجات CPU الموجودة في السوق حتى سنة ٢٠١٣ .

تجربة أداء بين معالج CPU ومعالج GPU في التعلم العميق

قمت بتجربة من باب الفضول حتى أعرف الفرق بين أداء المعالجات الرسومية GPU والمعالجات العادية CPU بتطبيقات التعلم العميق بالذكاء الصنعي. 

  • السيرفر الأول مزوّد بمعالج انتل زيون 2630  وذواكر RAM بحجم 123 غيغا و 8 أنوية. 
  • السيرفر الثاني عليه معالج GPU من نوع GeForce GTX 1080 بذاكرة ١٠ غيغا.

التجربة كانت عبارة عن تدريب مودل ترجمة ألية بين الانكليزية والالمانية  seq2seq يستخدم مكتبة التعلم العميق TensorFlow.

المعالج CPU استغرق ٦٠ ساعة لتدريب المودل، بينما استطاع ال GPU أن يصل إلى نفس شرط التوقف  المودل ب ٩ ساعات فقط. نفس المهمة تماما ولكن أقل ب ٥١ ساعة!

يتميز المعالج الرسومي بميزتين أساسيتين تجعلانه يتفوّق على المعالج الحسابي CPU:

  1. سرعة نقل البيانات من الذاكرة الرسومية إلى المعالج الرسومي أسرع بعشرة اضعاف تقريباً من سرعة نقل البيانات من الذاكرة RAM إلى المعالج الحسابي.
  2. يحوي المعالج الرسومي وحدات حسابية Arithmetic Units أكثر من المعالج الحسابي الذي يحوي وحدات تحكم Control Units أكثر من المعالج الرسومي, مما يسمح للمعالج الرسومي بإجراء عمليات تفرعية بسرعة أكثر، بمساعدة مكتبة CUDA التي تشكل واجهة تخاطب بين المعالج الرسومي والتطبيقات.

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

يمكن المقاربة التالية فيها مبالغة بس فيها جزء كبير من الصحة:

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