أخبار عربية
أحدث
الذكاء الاصطناعي والتكنولوجيا

داخل cuda-convnet: طبقات AlexNet على وحدتي GPU وعصر ImageNet

تفصيل توضيحي لشريحة معالج، وليس لوحدة NVIDIA GPU التي يناقشها المقال.
تفصيل توضيحي لشريحة معالج، وليس لوحدة NVIDIA GPU التي يناقشها المقال.

اعتمد إنجاز AlexNet في عام 2012 على هندسة GPU منخفضة المستوى (cuda-convnet)، وبنية مقسمة بين وحدتي GPU، وأطلق مباشرة سباقا سريعا نحو نماذج رؤية حاسوبية أعمق وأكثر كفاءة.

1. كيف كان cuda-convnet يعمل داخليا

قبل أن تنشئ NVIDIA مكتبة cuDNN، كتب Alex Krizhevsky برنامج cuda-convnet بلغة CUDA C++ الخام لاستخراج أقصى سرعة من وحدات GPU المبكرة ذات معمارية Fermi (GTX 580). تفرد المكتبات الحديثة عادة عمليات الالتفاف إلى عمليات ضرب مصفوفات هائلة (im2col)، مما يستهلك كميات ضخمة من الذاكرة. ولأن كل GTX 580 لم تكن تملك سوى 3 GB من VRAM، صمم Krizhevsky إجراءات GPU مباشرة موفرة للذاكرة.

  • تخطيط الذاكرة مع إعطاء الأولوية للدفعة (CHWN). تستخدم أطر العمل الحديثة افتراضيا NCHW (الدفعة، القنوات، الارتفاع، العرض)، مما يضع جميع بكسلات الصورة الواحدة متجاورة في الذاكرة. خزن Krizhevsky الموترات بترتيب CHWN، واضعا بُعد الدفعة (N) أخيرا. وعندما عالجت 32 خيط GPU ضمن warp واحد 32 صورة مختلفة عند موضع البكسل نفسه تماما، كانت قراءات الذاكرة متجاورة بالكامل (مجمعة)، مما حقق أقصى استفادة من عرض نطاق VRAM.
  • التقسيم إلى بلاطات في الذاكرة المشتركة. تستغرق القراءة من VRAM العامة مئات دورات الساعة، بينما تستغرق الذاكرة المشتركة على الشريحة (48 KB فقط لكل Streaming Multiprocessor في GTX 580) بضع دورات فحسب. حملت كتل الخيوط رقعا ثنائية الأبعاد صغيرة من بكسلات الصور وأوزان المرشحات إلى الذاكرة المشتركة، وحسبت عشرات الضربات النقطية قبل كتابة النتائج النهائية مجددا إلى VRAM.
  • إعادة استخدام السجلات على مستوى warp. كلف Krizhevsky كل كتلة خيوط بحساب بلاطة من بكسلات الخرج عبر عدة مرشحات في الوقت نفسه. ومن خلال الاحتفاظ بأوزان المرشحات في سجلات GPU السريعة، أعيد استخدام رقعة صورة واحدة محملة من الذاكرة المشتركة عبر مرشحات عديدة دفعة واحدة، مما خفض حركة الذاكرة بشدة.

2. طبقات AlexNet المحددة والتقسيم بين وحدتي GPU

احتوت AlexNet على 8 طبقات متعلمة (5 التفافية و3 متصلة بالكامل)، بإجمالي نحو 60 مليون معلمة. ولأن وحدة GTX 580 واحدة كانت تفتقر إلى سعة VRAM اللازمة للتنشيطات والأوزان والتدرجات والبالغة 3 GB أو أكثر، قسم Krizhevsky الشبكة عموديا إلى مسارين متوازيين.

الطبقةالنوعإجمالي المرشحات / العصبوناتالتقسيم لكل GPUالتواصل بين وحدات GPU
المدخلصورة RGB224 × 224 × 3ينسخ إلى كلتا وحدتي GPUلا شيء
Conv 1التفاف 11×11 (خطوة 4) + MaxPool96 مرشحا48 مرشحا لكل GPUمعزولة (بلا مزامنة)
Conv 2التفاف 5×5 + MaxPool256 مرشحا128 مرشحا لكل GPUمعزولة (تقرأ Conv 1 الخاصة بوحدة GPU نفسها فقط)
Conv 3التفاف 3×3384 مرشحا192 مرشحا لكل GPUمزامنة كاملة (تقرأ جميع الخرائط الـ256 من كلتا وحدتي GPU)
Conv 4التفاف 3×3384 مرشحا192 مرشحا لكل GPUمعزولة (تقرأ Conv 3 الخاصة بوحدة GPU نفسها فقط)
Conv 5التفاف 3×3 + MaxPool256 مرشحا128 مرشحا لكل GPUمعزولة (تقرأ Conv 4 الخاصة بوحدة GPU نفسها فقط)
FC 6متصلة بالكامل + Dropout4,096 عصبونا2,048 عصبونا لكل GPUمزامنة كاملة (تتصل بجميع مخرجات Conv 5)
FC 7متصلة بالكامل + Dropout4,096 عصبونا2,048 عصبونا لكل GPUمزامنة كاملة (تتصل بجميع عصبونات FC 6)
FC 8متصلة بالكامل (Softmax)1,000 فئة1,000 فئة (مجتمعة)مزامنة كاملة (تخرج تنبؤات ImageNet النهائية)
  • التخصص الطبيعي في السمات. من المثير للاهتمام أن البطاقتين طورتا باستمرار أدوارا متخصصة لأن الطبقتين 1 و2 لم تتواصلا مطلقا بين وحدتي GPU. تعلمت إحدى وحدتي GPU كواشف للحواف والملمس لا تعتمد على اللون (مرشحات بتدرج رمادي شبيهة بـGabor)، بينما تخصصت الوحدة الأخرى في الكتل اللونية ودرجات اللون المحددة.
  • تقليل اختناقات PCIe. كان تمرير البيانات عبر ناقل PCIe في اللوحة الأم بطيئا. وبحصر التواصل بين وحدات GPU بدقة في Conv 3 والطبقات المتصلة بالكامل، أبقى Krizhevsky وحدات GPU تحسب بكامل سرعتها من دون التوقف انتظارا لنقل البيانات.

3. ما حدث لاحقا في عصر ImageNet

أشعل فوز AlexNet سباقا سنويا في مسابقة ImageNet، دافعا الشبكات من 8 طبقات إلى أكثر من 150 طبقة في غضون ثلاث سنوات فقط.

  • 2013 - ZFNet (التصور والضبط). قدم Matthew Zeiler وRob Fergus تقنيات فك الالتفاف لتصور ما كانت AlexNet تراه فعليا داخل الطبقات المخفية. وبتصغير مرشح الطبقة الأولى في AlexNet من 11×11 إلى 7×7 وتقليل الخطوة، خفضت ZFNet معدل خطأ أفضل 5 في ImageNet من 15.3% إلى 14.8%.
  • 2014 - VGGNet (العمق باستخدام مرشحات موحدة 3×3). أثبت باحثون في Oxford أن تكديس العديد من الالتفافات الصغيرة 3×3 (حتى 16 أو 19 طبقة) يعمل أفضل من استخدام مرشحات كبيرة منفردة (مثل 11×11 أو 5×5). تغطي طبقتان مكدستان 3×3 مساحة الرؤية نفسها البالغة 5×5 بمعلمات أقل وتنشيطات ReLU غير خطية إضافية، مما خفض معدلات الخطأ إلى 7.3%.
  • 2014 - GoogLeNet / Inception (الكفاءة متعددة المقاييس). قدمت Google وحدة Inception التي شغلت التفافات 1×1 و3×3 و5×5 بالتوازي داخل الطبقة نفسها ودمجت المخرجات. وباستخدام التفافات 1×1 قليلة الكلفة لضغط عمق القنوات قبل العمليات الحسابية المكلفة، وصلت GoogLeNet إلى 22 طبقة ومعدل خطأ 6.7% باستخدام معلمات أقل بـ12 مرة من AlexNet.
  • 2015 - ResNet (وصلات التخطي و152 طبقة). أدى مجرد تكديس المزيد من الطبقات في النهاية إلى تدهور دقة التدريب لأن التدرجات كانت تتلاشى أثناء الانتشار العكسي. عالجت Microsoft Research ذلك بوصلات متبقية (وصلات تخط)، تسمح للبيانات بتجاوز الطبقات عبر اختصارات هوية مباشرة. أتاح ذلك شبكات من 152 طبقة، محققا معدل خطأ أفضل 5 يبلغ 3.57%، ومتجاوزا أداء البشر على المعيار المرجعي (~5%) للمرة الأولى.

المزيد من الأخبار: الذكاء الاصطناعي والتكنولوجيا