محرك استنتاج LLM سريع تم إنشاؤه من الصفر

2024-12-15

تتناول هذه المقالة رحلة الكاتب في بناء محرك استنتاج LLM من الصفر باستخدام C++ و CUDA، دون الاعتماد على أي مكتبات. وقد أتاحت هذه العملية غوصًا عميقًا في مجموعة استنتاج LLM الكاملة، من نواة CUDA إلى بنية النموذج، مما يُظهر كيف تؤثر عمليات التحسين على سرعة الاستنتاج. كان الهدف هو إنشاء برنامج قادر على تحميل أوزان النماذج مفتوحة المصدر الشائعة وإجراء استنتاج دفعة واحدة على خادم CPU + GPU واحد، مع تحسين معدل بيانات الرموز بشكل متكرر لتجاوز llama.cpp. وتوضح المقالة بعناية خطوات التحسين على كل من وحدة المعالجة المركزية ووحدة معالجة الرسومات، بما في ذلك تعدد الخيوط، وكمية الأوزان، و SIMD، ودمج النواة، وكمية ذاكرة التخزين المؤقت KV، مع تحليل الاختناقات والتحديات. وتحقق النتيجة النهائية أداءً قريبًا من الأداء الأمثل للاستنتاج المحلي لـ LLM.

التطوير استنتاج LLM