Enabling Memory-efficient Im2win Convolution with Multi-precision Support on GPU CUDA and Tensor Cores
تقدم هذه الورقة إطار عمل لعملية الالتفاف im2win محسّنًا وفعالًا من حيث استهلاك الذاكرة لوحدات معالجة الرسومات، والذي يستفيد من دعم تعدد الدقة والميزات العتادية المتخصصة مثل نوى تينسور (Tensor Cores) لتحقيق أداء أعلى بكثير واستهلاك أقل للذاكرة مقارنة بالطرق الحالية مثل cuDNN والأسالب القائمة على ضرب المصفوفات (GEMM).
المؤلفون الأصليون:Xiang Fu, Jixiang Ma, Xinpeng Zhang, Peng Zhao, Shuai Lu, Xu Tony Liu
يعتمد التعلم العميق، وهو التقنية الكامنة وراء التعرف الحديث على الصور والقيادة الذاتية، بشكل كبير على عملية رياضية تسمى "الالتفاف" (convolution). يمكنك التفكير في هذه العملية كأنها نافذة منزلقة تمسح عبر صورة، وتتحقق من قطع صغيرة من البكسلات مقابل مجموعة من الأنماط لتحديد الميزات مثل الحواف أو الأنسجة. هذه العملية هي المحرك للذكاء الاصطناعي، وهي تستهلك الغالبية العظمى من الوقت والطاقة المطلوبة لتشغيل هذه الأنظمة. ولجعل هذه الأنظمة أسرع وأكثر كفاءة، أمضى الباحثون سنوات في محاولة تحسين كيفية تحرك هذه النافذة المنزلقة عبر البيانات على شرائح الكمبيوتر، وتحديداً على وحدات معالجة الرسومات (GPUs) القوية الموجودة في الحواسيب عالية الأداء. لقد كان التحدي دائماً يتمثل في مقايضة: فالطرق التي تكون سريعة غالباً ما تتطلب كميات هائلة من الذاكرة المؤقتة، بينما الطرق التي توفر الذاكرة تميل إلى أن تكون بطيئة أو غير مستقرة.
لقد طور فريق من الباحثين الآن طريقة جديدة لأداء هذه الحسابات تكسر هذه المقايضة. فقد قاموا بتحسين تقنية تسمى "im2win"، والتي تعيد تنظيم كيفية تخزين الكمبيوتر لبيانات الصورة والوصول إليها أثناء عملية المسح. ومن خلال تغيير تخطيط البيانات، تسمح الطريقة الجديدة للكمبيوتر بنقل المعلومات في تدفق سلس ومستمر بدلاً من القفز ذهاباً وإياباً بطريقة مبعثرة. هذا التغيير البسيط في التنظيم يقلل من كمية الذاكرة المؤقتة التي يحتاج الكمبيوتر لحملها بأكثر من النصف مقارنة بالطرق القياسية القديمة. علاوة على ذلك، قام الباحثون بتكييف هذه التقنية لتعمل مع نوعين مختلفين من قدرات المعالجة داخل الرقائق الحديثة: النوى العامة الأغراض التي تتعامل مع الحسابات الدقيقة، ونوى "التنسور" (tensor cores) المتخصصة المصممة لتسريع كتل ضخمة من الأرقام دفعة واحدة.
اختبر الباحثون نهجهم على اثني عشر نوعاً مختلفاً من مهام معالجة الصور، بدءاً من المرشحات البسيطة وصولاً إلى الطبقات المعقدة الموجودة في الشبكات العصبية المتقدمة. ووجدوا أن طريقتهم المحسنة كانت أسرع بكثير من المعايير الصناعية الحالية. وعند تشغيلها على نوى "التنسور" المتخصصة، حققت الطريقة الجديدة مستويات أداء أعلى بمقدار 1.4 مرة من أفضل مكتبات البرمجيات الموجودة، و6.4 مرة أعلى من بديل شائع يعتمد على ضرب المصفوفات. ومن حيث السرعة، مقاسة بتريليونات العمليات في الثانية، كانت الطريقة الجديدة أسرع بنحو ثلاث مرات من نسختها التي تعمل على النوى عامة الأغراض. ولعل الأهم من ذلك، أن هذه السرعة جاءت مع انخفاض حاد في استخدام الذاكرة؛ حيث تطلبت الطريقة الجديدة 35% فقط من الذاكرة التي يتطلبها نهج المصفوفات الشائع و53% من الذاكرة التي تستخدمها برمجيات الصناعة الرائدة.
ولتحقيق هذه النتائج، قدم الفريق عدة تحسينات هندسية محددة. فقد صمموا البيانات ليتم الوصول إليها بنمط "متعرج" (zig-zag)، مما يمنع أجزاء مختلفة من ذاكرة الكمبيوتر من الازدحام وإبطاء بعضها البعض. كما أنهم أنشأوا نظاماً يقوم فيه الكمبيوتر بنقل الدفعة التالية من البيانات إلى مكانها بينما لا يزال يحسب الدفعة الحالية، مما يؤدي فعلياً إلى إخفاء الوقت الذي يستغرقه نقل المعلومات. ومن خلال الاختبار الدقيق، اكتشفوا أن تقنية "التخزين المؤقت المزدوج" (double buffering) هذه كانت العامل الأهم في مكاسب السرعة لديهم. وبينما ساعد النمط المتعرج، إلا أنه كان أقل أهمية من القدرة على دمج حركة البيانات مع الحساب.
تؤكد الدراسة أنه من خلال مواءمة البرمجيات بعناية مع التخطيط الفيزيائي لذاكرة الكمبيوتر ووحدات المعالجة، فمن الممكن جعل أنظمة التعلم العميق أسرع وأكثر كفاءة في استخدام الذاكرة دون التضحية بالدقة. وقد أثبت الباحثون أن طريقتهم تعمل باستمرار عبر مجموعة واسعة من أحجام الصور وأشكال المرشحات، مما يثبت أنها حل قوي للاحتياجات المتنوعة للذكاء الاصطناعي الحديث. ومن خلال حل مشكلة عبء الذاكرة وعدم كفاءة الوصول إلى البيانات، يوفر هذا العمل إطاراً موحداً يمكنه السماح لأنظمة الذكاء الاصطناዊ المستقبلية بتشغيل نماذج أكثر تعقيداً على الأجهزة الحالية، أو تشغيل النماذج الحالية بجهد وطاقة ووقت أقل بكثير.
ملخص تقني: تمكين عملية الالتفاف im2win الموفرة للذاكرة مع دعم تعدد الدقة على وحدات معالجة الرسوميات CUDA وTensor Cores
بيان المشكلة
تشكل عمليات الالتفاف (Convolution) العائق الحسابي الأساسي في الشبكات العصبية العميقة (DNNs)، حيث غالبًا ما تستحوذ على 50-90% من وقت التنفيذ. تواجه طرق الالتفاف الحالية في وحدات معالği الرسوميات (GPU) مقايضات كبيرة:
الالتفاف المباشر (Direct Convolution): يوفر استهلاكًا صفريًا للذاكرة ولكنه يعاني من سوء استغلال ذاكرة التخزين المؤقت (Cache).
الالتفاف القائم على FFT: يوفر تسريعًا للأنوية الكبيرة (Kernels) ولكنه يتسبب في زمن انتقال (Latency) للفلاتر الصغيرة.
الالتفاف القائم على Winograd: يقلل الحوسبة للأنوية الصغيرة الثابتة ولكنه يظهر عدم استقرار عددي عند الأحجام الأكبر.
GEMM القائم على Im2col: يستفيد من المكتبات المحسنة للغاية مثل cuBLAS ولكنه يتسبب في عبء ذاكرة مرتفع بسبب تحويل البيانات ويخلق مصفوفات غير منتظمة تؤدي إلى أداء دون المستوى.
الـ GEMM الضمني (cuDNN): رغم كفاءته، إلا أنه غالبًا ما يعتمد على استراتيجيات الدفعات الصغيرة (Mini-batch) التي قد لا تستغل الإمكانات الكاملة للأجهزة عبر جميع أحجام الأنوية ومستويات الدقة.
التحدي الجوهري هو تطوير إطار عمل موحد للالتفاف يقلل من عبء الذاكرة، ويعظم استغلال ذاكرة التخزين المؤقت، ويدعم أحجام أنوية متنوعة، ويستفيد بكفاءة من كل من أنوية CUDA كاملة الدقة وTensor Cores نصف الدقة.
المنهجية
توسع الورقة البحثية نموذج im2win (image to window)، وهو طريقة التفاف موفرة للذاكرة تقوم بتحويل تنسيرات المدخلات لتمكين الوصول المتتالي للذاكرة وإعادة استخدام البيانات. قام المؤلفون بتنفيذ ذلك على بنيات GPU الحديثة (تحديدًا NVIDIA Ampere) مع دعم تعدد الدقة:
تحويل البيانات: على عكس im2col الذي ينشئ مصفوفة شديدة التكرار عن طريق تكرار عناصر النافذة المتداخلة، يقوم im2win بترتيب عناصر النافذة المنزلقة بشكل متتالٍ عبر القنوات المختلفة. يقلل هذا التحويل من استخدام الذاكرة عن طريق القضاء على التخزين الزائد للعناصر المتداخلة، خاصة عندما يكون الخطوة (Stride) أصغر من ارتفاع الفلتر.
تنفيذ تعدد الدقة:
أنوية CUDA: تنفيذ نوى الدقة الكاملة (FP32).
Tensor Cores: تنفيذ نوى نصف الدقة (FP16) باستخدام واجهة برمجة تطبيقات WMMA (Warp Matrix Multiply-Accumulate). يستخدم التصميم تخطيط NHWC لتعزيز استمرارية الوصول إلى الذاكرة لنوافذ الالتفاف.
تحسينات النواة (Kernel Optimizations): لتعظيم الاستفادة من الأجهزة في Tensor Cores، قدم المؤلفون عدة تحسينات محددة:
الحساب المسبق للفهارس (Index Precomputation): يتم حساب الإزاحات (Offsets) مسبقًا على المضيف وتخزينها في الذاكرة الثابتة (Constant Memory) لتجنب الحسابات الزائدة أثناء التشغيل. استخدام تعليمات PTX لفصل حركة البيانات عن الحوسبة، مما يخفي زمن الانتقال عن طريق دمج عمليات نقل البيانات مع المعالجة.
الوصول المتعرج (Zig-Zag Access): يعيد ترتيب ترتيب الوصول إلى البيانات بناءً على تماثل كتلة الخيوط (Thread block parity) للتخفيف من صراعات بنوك الذاكرة المشتركة (Shared memory bank conflicts).
التخزين المؤقت المزدوج (Double Buffering): يستخدم مجموعتين من مخازن الذاكرة المشتركة ومجموعات السجلات لإنشاء خط أنابيب (Pipeline) من المنتج والمستهلك، مما يسمح بجلب كتلة البيانات التالية بينما يتم حساب الكتلة الحالية.
استراتيجية التنفيذ: تعالج عملية التنفيذ جميع الدفعات في وقت واحد (استراتيجية الدفعة الكاملة) لتحقيق توازي أعلى، على عكس استراتيجيات الدفعة الواحدة أو الدفعات الصغيرة التي تستخدمها cuBLAS وcuDNN.
المساهمات الرئيسية
تقدم الورقة ثلاث مساهمات رئيسية:
توسيع تعدد الدقة: توسيع نموذج im2win لدعم التنفيذ كامل الدقة على أنوية CUDA والتنفيذ نصف الدقة على Tensor Cores.
تصميم نواة محسّن: تعزيز im2win بمجموعة من التحسينات (الحساب المسبق للفهارس، الوصول المتعرج، حركة البيانات غير المتزامنة، والتخزين المؤقت المزدوج) المصممة خصيصًا للتنفيذ عالي الأداء على بنيات GPU الحديثة.
تقييم شامل: إجراء تقييم تجريبي شامل عبر اثني عشر اختبارًا مرجعيًا متنوعًا لشبكات CNN، ومقارنة im2win المحسن مع im2col الخاص بـ PyTorch (cuBLAS) وعدة متغيرات من cuDNN (IPG, FT, WN) على كل من CUDA وTensor Cores. كما تم إجراء دراسة استئصال (Ablation study) لتحديد تأثير تقنيات التحسين الفردية.
النتائج التجريبية
أُجري التقييم على وحدة معالجة الرسوميات NVIDIA GeForce RTX 3090 (بنية Ampere) باستخدام 12 اختبارًا مرجعيًا للالتفاف (cv1–cv12) تغطي أحجام أنوية وأبعاد مدخلات مختلفة.
الأداء (TFLOPS):
Tensor Cores: حقق تنفيذ im2win بنظام FP16 ما يصل إلى 2.7 ضعف أعلى TFLOPS من تنفيذ CUDA core (FP32) الخاص به. كما أظهر تحسنًا بنسبة 1.4 ضعف مقارنة بتنفيذات Tensor Core الخاصة بـ cuDNN، وتحسنًا بنسبة 6.4 ضعف مقارنة بالالتفاف القائم على im2col-cuBLAS.
أنوية CUDA: تفوق im2win (FP32) على متغيرات GEMM الضمني وWinograd الخاصة بـ cuDNN في اختبارات محددة، محققًا ما يصل إلى 2.5 ضعف أعلى TFLOPS مقابل cuDNN_WN.
كفاءة الذاكرة:
قلل im2win استهلاك الذاكرة بشكل كبير. في Tensor Cores، استخدم حوالي 53% من الذاكرة المطلوبة بواسطة cuDNN و35% من تلك المطلوبة بواسطة im2col-cuBLAS.
في أنوية CUDA، استخدم باستمرار ذاكرة أقل من متغيرات cuDNN عبر معظم الاختبارات المرجعية.
دراسة الاستئصال (Ablation Study):
تم تحديد التخزين المؤقت المزدوج (Double Buffering) كأهم تحسين، حيث وفر أكبر مكاسب الأداء من خلال إخفاء زمن انتقال نقل البيانات بفعالية.
وفرت حركة البيانات غير المتزامنة (Asynchronous Data Movement) ثاني أكبر تحسن.
حقق الوصول المتعرج (Zig-Zag Access) أقل المكاسب، حيث كانت التحسينات الأخرى قد قللت بالفعل من احتمالية حدوث صراعات البنوك (Bank conflicts).
الأهمية
تثبت الورقة أن im2win هو إطار عمل موحد وعالي الأداء للالتفاف لبنيات GPU الحديثة. من خلال معاللة عبء الذاكرة المرتفع لـ im2col وضعف الموضعية (Locality) في الالتفاف المباشر، مع الاستفادة في الوقت نفسه من قدرات الدقة المختلطة لـ Tensor Cores، يقدم الأسلوب المقترح حلاً قابلاً للتوسع لأعباء عمل التعلم العميق. تشير النتائج إلى أن im2win يمكن أن يعمل كبديل قوي للمكتبات الحالية المتطورة، لا سيما في السيناريوهات التي تكون فيها عرض نطاق الذاكرة واستغلال Tensor Cores قيودًا حرجة. يوضح العمل أن التصميم الخوارخي الدقيق، جنباً إلى جنب مع التحسينات المخصصة للأجهزة مثل حركة البيانات غير المتزامنة والتخزين المؤقت المزدوج، يمكن أن يحقق مكاسب كبيرة في الأداء والكفاءة مقارنة بالمعايير الراسخة مثل cuDNN وcuBLAS.