DeepSeek V3 تفاصيل الورقة: كيفية تجاوز احتكار CUDA!
يحقق الطرازان اللذان أصدرتهما شركة DeepSeek مؤخراً، وهما DeepSeek-V3 و DeepSeek-R1، أداءً يضاهي أداءً مماثلاً للنماذج المماثلة من OpenAI بتكلفة أقل بكثير.
ووفقًا لتقارير وسائل الإعلام الأجنبية، فقد قاموا في غضون شهرين فقط بتدريب نموذج لغة MoE مع 671 مليار معلمة على مجموعة من 2,048 وحدة معالجة رسومات H800، وهو ما يزيد كفاءة 10 مرات عن أفضل ذكاء اصطناعي.
لم يتم تحقيق هذا الإنجاز باستخدام CUDA، ولكن من خلال عدد كبير من التحسينات الدقيقة واستخدام برمجة PTX (تنفيذ الخيط المتوازي) الشبيهة بالتجميع من NVIDIA.
ديبسيك على اتخاذ مسار مختلف عن OpenAI والشركات الأخرى التي تعتمد على قوة الحوسبة الغاشمة في ظل قيود الأجهزة. فقد استخدمت سلسلة من الابتكارات التكنولوجية لتقليل متطلبات الطاقة للنموذج مع تحقيق مكاسب في الأداء.
بعض التعليقات الحماسية من مستخدمي الإنترنت:
"في هذا العالم، إذا كان هناك أي مجموعة من الأشخاص المجانين بما يكفي ليقولوا أشياء مثل" CUDA بطيئة للغاية!
مهووسون عباقرة يضبطون PTX لتحسين أداء وحدة معالجة الرسومات إلى أقصى حد
إن NVIDIA PTX (تنفيذ الخيوط المتوازية) هي بنية متوسطة مجموعة التعليمات مصممة خصيصًا لوحدات معالجة الرسومات الخاصة بها، وتقع بين لغات برمجة وحدات معالجة الرسومات عالية المستوى (مثل CUDA C/C++) أو الواجهات الأمامية للغات الأخرى ورمز الآلة منخفض المستوى (تجميع التدفق أو SASS).
PTX عبارة عن بنية مجموعة تعليمات منخفضة المستوى تقدم وحدة معالجة الرسومات كجهاز حوسبة متوازية للبيانات، مما يتيح تحسينات دقيقة مثل تخصيص السجلات وضبط مستوى الخيط/حزمة الخيط التي لا يمكن تحقيقها بلغات مثل CUDA C/C++.
عندما يتم تحويل PTX إلى SASS، يتم تحسينه لجيل محدد من وحدات معالجة الرسومات NVIDIA.
عند تدريب نموذج V3، قام DeepSeek بإعادة تكوين وحدة معالجة الرسومات NVIDIA H800:
من بين 132 نواة معالج دفق البيانات، تم تخصيص 20 نواة للاتصال بين الخوادم، بشكل أساسي لضغط البيانات وفك ضغطها، لاختراق حد الاتصال الخاص بالمعالج وتحسين سرعة معالجة المعاملات.
ولتحقيق أقصى قدر من الأداء، طبقت DeepSeek أيضًا خوارزميات متقدمة لتحديد الأنابيب من خلال تعديلات إضافية دقيقة على مستوى حزمة الخيط/المجموعة الخيطية.
هذه التحسينات تتجاوز بكثير مستوى تطوير CUDA التقليدي، ولكن من الصعب للغاية الحفاظ عليها. ومع ذلك، فإن هذا المستوى من التحسينات هو بالضبط ما يوضح تمامًا القدرات التقنية المتميزة لفريق DeepSeek.
تذكر ورقة V3 على وجه التحديد تفاصيل حول PTX
ويرجع ذلك إلى أن شركات مثل DeepSeek اضطرت إلى البحث عن حلول مبتكرة تحت الضغط المزدوج المتمثل في نقص وحدات معالجة الرسومات العالمية والقيود الأمريكية.
ولحسن الحظ، فقد حققوا إنجازات كبيرة في هذا المجال.
يعتقد أحد المطورين أن "برمجة وحدة معالجة الرسومات منخفضة المستوى هي الاتجاه الصحيح. فكلما زاد التحسين، انخفضت التكلفة، أو ميزانية الأداء التي يمكن استخدامها لتحقيق تقدم آخر دون نفقات إضافية."
وقد كان لهذا الاختراق تأثير كبير على السوق، ويعتقد بعض المستثمرين أن النموذج الجديد سيقلل من الطلب على الأجهزة عالية الأداء، مما قد يؤثر على أداء مبيعات شركات مثل NVIDIA.
ومع ذلك، يعتقد المخضرمون في هذا المجال، بمن فيهم الرئيس التنفيذي السابق لشركة إنتل، بات غيلسنجر، أن تطبيقات الذكاء الاصطناعي يمكنها الاستفادة الكاملة من جميع قدرات الحوسبة المتاحة.
يرى غيلسنجر أن هذا الإنجاز الذي حققته شركة DeepSeek هو طريقة جديدة لتضمين قدرات الذكاء الاصطناعي في الأجهزة منخفضة التكلفة للسوق الشامل.
PTX و CUDA
إذن، هل يعني وصول DeepSeek أن تطوير تقنية LLM المتطورة لم يعد يتطلب مجموعات وحدات معالجة الرسومات كبيرة الحجم؟
هل ستؤدي الاستثمارات الضخمة في موارد الحوسبة من قِبل Google, OpenAIهل سيذهب الذكاء الاصطناعي الفوقي والذكاء الاصطناعي في نهاية المطاف هباءً؟ الإجماع العام بين مطوري الذكاء الاصطناعي هو أن الأمر ليس كذلك.
ومع ذلك، فمن المؤكد أنه لا تزال هناك إمكانات هائلة يمكن استغلالها من حيث معالجة البيانات وتحسين الخوارزمية، ومن المؤكد أن المزيد من أساليب التحسين المبتكرة ستظهر في المستقبل.
مع وجود نموذج V3 من DeepSeek المفتوح المصدر، يتم الكشف عن التفاصيل بالتفصيل في التقرير الفني الخاص به.
يوثق التقرير التحسينات الأساسية العميقة التي أجراها DeepSeek. وباختصار، يمكن تلخيص درجة التحسينات على أنها "إعادة بناء النظام بأكمله من الألف إلى الياء".
كما ذُكر أعلاه، عند تدريب V3 باستخدام وحدة معالجة الرسومات H800، قامت DeepSeek بتخصيص وحدات الحوسبة الأساسية لوحدة معالجة الرسومات (نوى المعالجات المتعددة المتدفقة أو SMs) لتلبية احتياجات محددة.
ومن إجمالي 132 وحدة صغيرة ومتوسطة الحجم، خصصوا 20 وحدة من إجمالي 132 وحدة صغيرة ومتوسطة الحجم على وجه التحديد للتعامل مع مهام الاتصال بين الخوادم بدلاً من مهام الحوسبة.
يتم إجراء هذا التخصيص على مستوى PTX (التنفيذ الخيطي المتوازي)، وهو مجموعة التعليمات منخفضة المستوى لوحدة معالجة الرسومات NVIDIA.
يعمل PTX على مستوى قريب من لغة التجميع ويتيح تحسينات دقيقة مثل تخصيص السجلات وضبط مستوى الخيط/حزمة الخيط. ومع ذلك، فإن هذا التحكم الدقيق معقد ويصعب الحفاظ عليه.
لهذا السبب يفضل المطورون عادةً استخدام لغات برمجة عالية المستوى مثل CUDA، والتي توفر تحسينات أداء كافية لمعظم مهام البرمجة المتوازية وتلغي الحاجة إلى تحسينات منخفضة المستوى.
ومع ذلك، عندما يتعلق الأمر بزيادة كفاءة موارد وحدة معالجة الرسومات إلى أقصى حد وتحقيق متطلبات التحسين المحددة، يتعين على المطورين اللجوء إلى PTX.
ومع ذلك، لا تزال العوائق التقنية قائمة
وفي هذا الصدد، قال مستخدم الإنترنت إيان كوتريس: "إن استخدام Deepseek لـ PTX لا يلغي العوائق التقنية لـ CUDA".
CUDA هي لغة عالية المستوى. تجعل تطوير المكتبات والواجهات مع وحدات معالجة الرسومات NVIDIA أسهل وتدعم التطوير التكراري السريع.
يمكن ل CUDA تحسين الأداء من خلال ضبط الكود الأساسي (أي PTX)، كما أن المكتبات الأساسية مكتملة بالفعل. معظم البرامج على مستوى الإنتاج مبنية حاليًا على CUDA.
يشبه PTX إلى حد كبير لغة تجميع مفهومة مباشرة لوحدة معالجة الرسومات. تعمل على مستوى منخفض وتسمح بالتحسين على المستوى الجزئي.
إذا اخترت البرمجة في PTX، فهذا يعني أنه لا يمكن استخدام أي من مكتبات CUDA المدمجة المذكورة أعلاه. هذه مهمة شاقة للغاية تتطلب خبرة متعمقة في مشاكل الأجهزة ووقت التشغيل.
ومع ذلك، إذا كان المطورون يفهمون تمامًا ما يفعلونه، فيمكنهم بالفعل تحقيق أداء أفضل وتحسين في وقت التشغيل.
في الوقت الحالي، لا يزال استخدام CUDA هو السائد في نظام NVIDIA البيئي.
أما المطورون الذين يرغبون في الحصول على أداء إضافي 10-20% أو كفاءة في استخدام الطاقة من حملهم الحسابي، مثل الشركات التي تنشر النماذج في السحابة وتبيع خدمات الرموز الرمزية، فقد قاموا بالفعل بتحسينها من مستوى CUDA إلى مستوى PTX. إنهم على استعداد لاستثمار الوقت لأن الأمر يستحق ذلك على المدى الطويل.
تجدر الإشارة إلى أن PTX عادةً ما يتم تحسينه لنموذج جهاز معين ويصعب نقله بين الأجهزة المختلفة ما لم تتم كتابة منطق التكييف بشكل خاص.
بالإضافة إلى ذلك، فإن ضبط نواة الحوسبة يدويًا يتطلب قدرًا كبيرًا من المثابرة والشجاعة وقدرة خاصة على البقاء هادئًا، لأن البرنامج قد يتعرض لخطأ في الوصول إلى الذاكرة كل 5000 دورة.
وبالطبع، بالنسبة لتلك السيناريوهات التي تكون فيها هناك حاجة فعلية لـ PTX، وبالنسبة لأولئك المطورين الذين يتقاضون أجورًا كافية للتعامل مع هذه المشكلات، فإننا نعرب عن تفهمنا واحترامنا الكاملين.
بالنسبة لجميع المطورين الآخرين، يُنصح بالاستمرار في استخدام CUDA أو غيرها من المتغيرات المتقدمة القائمة على CUDA (أو MLIR).