باحثو ستانفورد يكشفون عن تشغيل كرونز CUDA مُولَّدة بواسطة الذكاء الاصطناعي بأداء يتفوق على مقاييس بيوتروش القياسية بنسبة تصل إلى 79.9% للمعاملات العددية المتداخلة
ملخص لأحدث اكتشافات فريق Stanford CRFM في توليد النواة باستخدام الذكاء الاصطناعي مقدمة بدأ فريق بحث Stanford CRFM مشروعاً بهدف توليد بيانات اصطناعية لتدريب نماذج أفضل لتوليد النواة (kernels). خلال المشروع، حدث أمر غير متوقع: بدأ توليد البيانات الاصطناعية في إنتاج نواة محسنة تحقق أداءً قريبًا أو أفضل من النواة التي تم تحسينها يدويًا بواسطة خبراء في PyTorch، وذلك باستخدام تقنيات تحسين متقدمة وميزات الأجهزة. نتيجة لذلك، قرر الفريق نشر هذه النتائج مبكرًا ومشاركة أبحاثه. النتائج الرئيسية ضرب المصفوفات (Matmul): حققت النواة المولدة أداءً بنسبة 101.3% مقارنة بـ torch.matmul. التحويل الثنائي (Conv2D): حققت نسبة أداء 179.9% مقارنة بـ torch.nn.Conv2D. الدالة softmax: حققت نسبة أداء 111.8% مقارنة بـ torch.softmax. تطبيقات التطبيع (LayerNorm): حققت نسبة أداء 484.4% مقارنة بـ torch.nn.LayerNorm. Conv2D + ReLU + MaxPool: حققت نسبة أداء 290.1% مقارنة بالمرجعية الأساسية في PyTorch و189.0% مقارنة بـ torch.compile(). تمت مقارنة هذه النتائج على بطاقة رسومية من نوع Nvidia L40S، حيث تم تعريف نسبة الأداء كنسبة وقت المرجعية الأساسية إلى وقت النواة المولدة. الطريقة المستخدمة استخدم الفريق مقياس KernelBench لتجربة توليد النواة، حيث يتم تقديم شفرة torch ويقوم النموذج الذكي بتوليد نواة CUDA Custom لاستبدال العمليات في torch بهدف زيادة السرعة. يتم تشغيل كل من الشفرة المرجعية وشفرة النموذج المولدة ويتم التحقق من صحة النواتج من خلال مقارنة المخرجات العددية لكثير من الإدخالات العشوائية. التحسينات الرئيسية في العملية التفكير باللغة الطبيعية حول أفكار التحسين: بدلاً من توليد نواة جديدة مباشرة في كل خطوة، يتم توليد أفكار تحسين باللغة الطبيعية مستندةً إلى الأفكار التي تم محاولة تطبيقها سابقًا. التفرع في كل خطوة تحسين: بدلاً من تحسين مرشح واحد فقط في كل خطوة، يتم إنشاء العديد من التنفيذات لكل فكرة، وتُستخدم أعلى النواتج أداءً لتغذية الجولة التالية (يتم أيضًا حفظ مجموعة من النواتج الجيدة للاستخدام في التغذية). هذا النهج يسمح بإستكشاف متوازي وواسع للأفكار المختلفة بدلاً من الوقوع في حجوم محلية للتحسين. مثال على مسار تحسين النواة لـ Conv2D | الدورة | الزمان (ms) | نسبة الأداء | |--------|-------------|--------------| | 0 | 7.02 | 20.1% | | 1 | 7.54 | 18.8% | | 2 | 3.46 | 41.0% | | 3 | 3.67 | 38.7% | | 4 | 3.46 | 41.0% | | 5 | 1.91 | 74.9% | | 6 | 1.37 | 103.6% | | 7 | 1.38 | 102.9% | | 8 | 1.37 | 103.6% | | 9 | 1.36 | 105.1% | | 10 | 1.07 | 133.6% | | 11 | 1.21 | 117.4% | | 12 | 1.01 | 141.2% | | 13 | 0.795 | 179.9% | الأفكار الرئيسية في المسار استخدام ذاكرة القراءة فقط: تحميل المصفوفات الثابتة باستخدام __ldg. تحويل التحويل الثنائي إلى GEMM: تحويل التحويل الثنائي إلى عملية ضرب مصفوفة ضمنية (GEMM) باستخدام FP16. توفير ذاكرة مزدوجة لـ cp.async: تحقيق التداخل بين عمليات تحميل الذاكرة العالمية وحسابات Tensor Core. حساب المؤشرات المفككة مسبقًا في ذاكرة المشاركة: تجنب الحسابات المكررة داخل حلقة K-tile. كتابة ذاكرة المشاركة المتجهة: استخدام أنواع البيانات الأعرض مثل half2 لكتابة ذاكرة المشاركة. الاستنتاجات التكرار والبحث المتوازي: أظهر البحث أن الجمع بين التفكير القوي واستكشاف متوازي لعدة فرضيات يؤدي إلى تحسينات. يمكن أن تكون استراتيجيات البحث الذكية والمتنوعة أكثر فعالية من إعادة التدريب الضخمة. تحسين البيانات الاصطناعية: يمكن استخدام هذا النهج لتوليد بيانات اصطناعية أفضل لتحسين تدريب النماذج المستقبلية. التحسين المستمر: رغم القيود الحالية، فإن الجودة المحققة في التحسين تبدو واعدة، وهناك مجال كبير للتحسن المستقبلي، مثل توليد أفكار تحسين أفضل وجودة أعلى في الكود الناتج. الشكر يقدم الفريق شكره لـ Christopher Rinard، Saman Amarasinghe، و Allen Nie لمناقشة أبحاثهم، ولـ Standard Kernel Co. و Prime Intellect لدعم هذا العمل. نبذة عن Stanford CRFM Stanford CRFM هو فريق بحث في جامعة ستانفورد متخصص في تطوير تقنيات الذكاء الاصطناعي وتحسين أداء البرمجيات. يعمل الفريق على تطوير نماذج الذكاء الاصطناعي القادرة على توليد كود CUDA فعال بدون الحاجة إلى مكتبات أو لغات برمجة خاصة مثل CUTLASS و Triton. نجاحهم في توليد نواة تحقق أداءً أفضل من النواة التي تم تحسينها يدويًا في PyTorch يفتح آفاقًا جديدة في مجال تحسين الأداء وتطوير الذكاء الاصطناعي الذاتي.
