اتصالات خليط الخبراء الفعالة والقابلة للنقل
نظرة عامة على الاتصالات المتنقلة لخليط الخبراء (MoE)، مع التركيز على تحسين توازي وحدة معالجة الرسومات (GPU) وتقليل زمن الانتقال في نماذج الذكاء الاصطناعي واسعة النطاق
نحن نقدم مكتبة عالية الأداء وقابلة للنقل ومفتوحة المصدر لاتصالات خليط الخبراء (MoE) التي تحقق أداءً أسرع بـ 10 أضعاف مقارنة ببدائيات الاتصال القياسية من نوع All-to-All.
يتميز تنفيذنا بعدة ابتكارات تقنية رئيسية توفر كفاءة فائقة في اتصالات MoE:
الاتصال المُبادَر إليه بواسطة وحدة معالجة الرسومات (IBGDA): يدعم الاتصال المباشر بين وحدة معالجة الرسومات وبطاقة واجهة الشبكة، مما يقلل وقت الاستجابة بشكل كبير عن طريق تجاوز تدخل وحدة المعالجة المركزية
تداخل الاتصال والحساب: بنية النواة المقسمة مع مراحل إرسال واستقبال منفصلة تمكن الحساب من الاستمرار بالتزامن مع عمليات نقل الشبكة
أعلى أداء على عقدة واحدة: زمن انتقال أقل بـ 2.5 مرة من التنفيذ الأسرع سابقًا على تكوينات العقدة الواحدة
أداء فعال وقابل للنقل عبر عقد متعددة: يحقق تنفيذنا سرعات أسرع تصل إلى 10 أضعاف مقارنة باتصالات All-to-All القياسية. على الرغم من أنه أبطأ بحوالي مرتين مقارنة بالتنفيذات المتخصصة للغاية، إلا أن نهجنا يوفر قابلية نقل أفضل عبر إصدارات NVSHMEM وبيئات الشبكات المختلفة (NVLink وCX-7 وEFA)
المكتبة مفتوحة المصدر بالكامل ومتاحة على https://github.com/ppl-ai/pplx-kernels.
في هذه المقالة، نستكشف تحديات توازي الخبراء في نماذج MoE واسعة النطاق ونصف نهجنا لإرسال الرموز ودمجها بكفاءة عبر بيئات وحدات معالجة الرسومات الموزعة.
مقدمة
تتحسن نماذج خليط الخبراء (MoE)، مثل DeepSeek R1 وMixtral 8x7B، مقارنة بالنماذج الكثيفة عن طريق تقييد عدد الأوزان التي يتم تنشيطها لكل رمز. بدلاً من تحقيق تعداد معاملات مرتفع عن طريق زيادة عدد الطبقات أو زيادة حجم الطبقات الخطية في شبكة بيربرون متعددة الطبقات (MLP) لكل طبقة فك تشفير، تستبدل نماذج MoE شبكة MLP التقليدية بخبراء متعددين وموجه (router). على سبيل المثال، من بين 671 مليار معامل في DeepSeek R1، يتم ضرب 37 ملياراً فقط مع رمز معين أثناء الاستدلال. هذا يقلل بشكل كبير من مقدار الحسابات المطلوبة لفك تشفير الرمز ويحسن زمن الانتقال مقارنة بالنموذج الكثيف.
تطرح نماذج MoE بعض التحديات الإضافية للاستدلال مقارنة بالنماذج الكثيفة. وفي حين أن الخبراء أنفسهم عبارة عن طبقات MLP صغيرة، تتضمن كل طبقة فك تشفير موجهاً يحدد الخبراء الذين يتم إرسال الرمز إليهم، حيث يتم إرسال كل رمز إلى خبراء متعددين. عادة ما يكون الموجه طبقة خطية صغيرة تنتج توزيع احتمالي. وعادة ما يتم اختيار الخبراء الحاصلين على أعلى درجات K ويتم حساب التنشيط النهائي كمتوسط مرجح، حيث يتم جمع مخرجات الخبراء مضروبة في وزن مشتق من التوزيع الاحتمالي للموجه.
لتقليل زمن الانتقال في أنظمة MoE الموزعة، يمكن استغلال التوازي عبر أجهزة متعددة، ولكن هذا يفرض تحديات في الاتصال. تتسع نماذج مثل Mixtral 8x7B أو Llama-70B ضمن 8 أجهزة عبر عقدة واحدة، مستفيدة من توصيلات NVLink السريعة ومنخفضة زمن الانتقال (حتى 900 جيجابت في الثانية). ومع ذلك، تتطلب النماذج الأكبر حجماً تجزئة الخبراء عبر عقد متعددة باستخدام InfiniBand (بحد أقصى 400 جيجابت في الثانية)، مما يفرض تحديات إضافية في زمن الانتقال.
في هذه المقالة، نستكشف مشكلة توازي الخبراء، ونصف تنفيذنا لنواة وحدة معالجة الرسومات (GPU) التي ترسل الرموز بكفاءة إلى الأجهزة التي تحوي الخبراء المعينين وتجمعها مرة أخرى عن طريق حساب المجموع المرجح لمخرجات الخبراء. وبينما توجد عمليات تنفيذ مُحسَّنة بقوة تستهدف أجهزة شبكية محددة، فإننا نقدم تنفيذاً قابلاً للنقل بدرجة عالية يعتمد على الحد الأدنى من بدائيات NVSHMEM ومع ذلك يوفر أداءً أسرع بـ 10 أضعاف من الاتصال القياسي من نوع all-to-all. يحقق تنفيذنا أداءً متطوراً على تكوينات العقدة الواحدة مع الحفاظ على قابلية نقل ممتازة عبر بيئات الشبكات المختلفة.
التجزئة والتوازي
لتحقيق استدلال فعال، يجب الاحتفاظ بأوزان النموذج في ذاكرة الجهاز، مع ترك المساحة كافية أيضاً لعمليات التنشيط، وذاكرة التخزين المؤقت للقيم المفتاحية (KV)، وغيرها من المخزن المؤقت المطلوبة للتمرير الأمامي عبر النموذج. تتجاوز النماذج الأكثر كفاءة سعة حتى أقوى وحدات معالجة الرسومات، وبالتالي يجب توزيع الاستدلال عبر أجهزة متعددة، والتي يمكنها تخزين أوزان النموذج بشكل جماعي. واستناداً إلى مخططات تجزئة الأوزان، يجب استخدام مخططات الاتصال والحساب المختلفة لتفريغ الحسابات ومزامنة الأجهزة.
توازي الخبراء (EP)، الموضح في الشكل الأول، يوازي حساب الخبراء فقط. يتم تعيين خبراء مختلفين لأجهزة مختلفة، والتي تحتفظ بأوزانهم. بعد التوجيه، يتم إرسال الرموز إلى الجهاز المقابل، مع تجميع النتائج وتراكمها بعد ذلك. تعتمد تعقيدية التوجيه على درجة التوازي في الأجزاء الأخرى من النموذج: تكرار الطبقات الأخرى يمكن أن يلغي الحاجة إلى التوجيه تماماً، حيث يمكن لكل رتبة اختيار الرموز من جدول توجيه مكرر محلياً. ومع ذلك، إذا كانت إحدى الرتب وحدها تشغل التوجيه، يلزم إجراء بث لإرسال الرموز والفهارس والأوزان إلى خبرائهم المعنيين. أخيراً، يقوم بث التجميع الشامل (all-gather) أو البث الشامل (all-to-all) بمزامنة رموز الإخراج مع أي رتبة تستمر في تنفيذ النموذج. مثل هذا التنفيذ بسيط نسبياً نظراً لأن torch يعرض بالفعل البدائيات المطلوبة، على الرغم من أنه يمكن جني بعض الفوائد من دمج التراكم مع عملية التجميع التي تجمع الرموز من الخبراء.
لا يتناسب التوازي الخاص بالخبراء بشكل مثالي، حيث قد تكون العقد في المجموعات خاملة أثناء تشغيل النموذج لطبقات غير الخبراء، مثل الانتباه (attention)، والتطبيع (norm)، وأخذ العينات (sampling). ومع ذلك، فإن حساب هذه الطبقات، وخاصة الانتباه، يمكن أن يستفيد أيضاً من التوازي الموثوق (TP). تعتمد معظم النماذج على الانتباه متعدد الرؤوس (multi-head attention)، مما يعني أنه يمكن أيضاً تجزئة رؤوس الانتباه وتوقعات Q وK وV المقابلة عبر الأجهزة، مع تكرار أو تجميع الشرائح بين الطبقات المختلفة. إذا تم توزيع الانتباه عبر جميع الأجهزة، يمكن لعملية تجميع شاملة (all-gather) مزامنة عمليات التنشيط، مما يسمح بتكرار التوجيه، الأمر الذي يتطلب بدائيات مزامنة مشابهة لحالة توازي الخبراء من أجل تنفيذ فعال. ومع ذلك، هناك حدود للتوازي على هذا المستوى، حيث إن تقليل عدد رؤوس الانتباه إلى ما دون عتبة معينة سيؤدي إلى تناقص العائدات.
للاستخدام الأمثل لجميع الأجهزة ودعم درجة عالية جداً من توازي الخبراء، تصل إلى 128 أو 256 وحدة معالجة رسومات (GPU)، يلزم توفر التوازي للبيانات (DP). بموجب هذا المخطط، يتم تجميع الأجهزة التي يتم تقسيم النموذج عبرها لمعالجة الطلبات في نفس الوقت، وحساب الانتباه والاحتفاظ بذاكرة التخزين المؤقت للقيم المفتاحية (KV) المجزأة عبر مجموعتهم المحلية. تتعاون مثيلات متعددة من هذه المجموعات المتوازية في تقييم الخبراء، حيث يستضيف كل منها مجموعة فرعية مختلفة من أوزان الخبراء. بناءً على عدد رؤوس الانتباه، قد تمتد المجموعة عادةً لتصل إلى حجم عقدة كاملة، نظراً لأن الاتصال داخل العقدة أسرع. على سبيل المثال، في الشكل أعلاه، تخدم إحدى رتب DP بشكل مستقل طلبين، A وB، وتتعامل مع الانتباه والتطبيع وأي عمليات محاسبية أخرى للطلبات. تعالج رتبة DP الأخرى طلباً مميزاً C. ومع ذلك، تستضيف العقدة الأولى نصف الخبراء، بينما تستضيف العقدة الأخرى النصف الآخر، وبالتالي بعد التوجيه، قد يتم إرسال الرموز من A وB إلى العقدة الثانية والعكس صحيح. يؤدي هذا إلى مشكلة اتصال متفرقة: قد يرسل كل جهاز عدداً مختلفاً من الرموز إلى أي وجهة أخرى. البدائيات الحالية من torch، وخاصة all_to_all، ليست مناسبة بشكل خاص، لأنها قد تتطلب بعض أشكال الحشو (padding) أو مزامنة وحدة معالجة الرسومات مع وحدة المعالجة المركزية وبث البيانات الوصفية. لتنفيذ الاتصال بفعالية، يلزم وجود نواة مخصصة لمعالجة معلومات التوجيه وبدء الاتصال من الأجهزة دون تدخل وحدة المعالجة المركزية. بعد التوجيه، يجب أن ترسل نواة الإرسال (dispatch kernel) الرموز إلى الرتب التي تم توجيهها إليها، بينما في جانب الدمج، يجب جمع عمليات التنشيط الخاصة بالطلبات في مجموعة DP الحالية. بالإضافة إلى ذلك، يجب موازنة العمل داخل مجموعة DP التي قد تحتوي على عدة وحدات معالجة رسومات، وذلك لتقليل البث وتكرار الرموز بشكل صحيح على جميع الرتب للطبقات اللاحقة.
NVSHMEM
NVSHMEM هو تطبيق OpenSHMEM خاص بشركة NVIDIA، يوفر تسهيلات اتصال قابلة للنقل بين الأجهزة والتي تجرّد تعقيد الأجهزة الأساسية. يمكن لواجهة برمجة التطبيقات (API) التعبير عن عمليات القراءة والكتابة من جهاز إلى جهاز، والتي يتم تعيينها لبدائيات طبقات النقل الفردية. يتم دعم كل من NVLink وRDMA، مما يمنح درجة من القابلية للنقل ويسمح لنواة NVSHMEM بالعمل داخل عقدة أو عبر مجموعة من عقد متعددة. في النواة الخاصة بنا، نستخدم عمليات الكتابة في الذاكرة البعيدة وع عمليات الإشارة لنقل البيانات ومزامنة الأجهزة المشاركة.
تم بناء عمليات NVSHMEM حول مفهوم الذاكرة المتماثلة: فهي تعمل على المخازن المؤقتة التي تم تخصيصها على جميع الأجهزة المشاركة في الاتصال بين الأجهزة. يمكن للجهاز المحلي استخدام عنوان مشتق داخل المخزن المؤقت المحلي الخاص به إلى جانب فهرس الرتبة المستهدفة لتحديد وجهة العملية. يوضح الشكل أدناه هذا المفهُوم: تقوم كلتا وحدات معالجة الرسومات بتخصيص مخازن مؤقتة متماثلة بنفس الحجم، مع الاحتفاظ بمؤشرات src تشير إليها. تريد الرتبة الأولى إرسال 3 أعداد صحيحة إلى الرتبة الثانية، ووضعها في بداية المخزن المؤقت: يقوم nvshmem_int_put_nbi با اشتقاق عنوان البداية من المخزن المؤقت المحلي، وتحديد الجهاز المستهدف. تشتق الرتبة الثانية إزاحة من المخزن المؤقت الخاص بها، وترسل عنصراً واحداً إلى الجهاز الأول، مع إزاحة بمقدار واحد. في حين أن عناوين الوجهة يجب أن تكون دائماً مخازن مؤقتة متماثلة مخصصة باستخدام nvshmem_alloc، يمكن أن تكون المخازن المؤقتة للمصدر مناطق تعسفية من ذاكرة الجهاز، بشرط أن تكون مسجلة مسبقاً في NVSHMEM.
بينما توفر NVSHMEM مجموعة واسعة من البدائيات، تعتمد النواة الخاصة بنا على 3 وظائف فقط، وتبني جميع عمليات المزامنة والتسييج بناءً عليها.
nvshmemx_putmem_signal_nbi_warp: ينقل كتلة من البيانات من جهاز إلى آخر، بينما يقوم أيضاً تعيين علامة على الجهاز البعيد. تقوم العملية إما بتعيين (NVSHMEM_SIGNAL_SET) أو زيادة (NVSHMEM_SIGNAL_ADD) موقع 64 بتاً. يتم تحديث العلامة بعد نقل كتلة الذاكرة بأكملها. إذا لاحظ الجهاز البعيد تغييراً في العلامة، فيمكنه الوصول بأمان إلى المخزن المؤقت في ذاكرته الخاصة. هذه الوظيفة مفيدة لدمج نقل البيانات والمزامنة.
يعمل nvshmemx_signal_op على موقع ذاكرة واحد، عادةً ما يكون علامة 64 بتاً، حيث يقوم بتعيينه أو زيادته بشكل ذري. وهو مفيد في نقل البيانات الوصفية ومزامنة الأجهزة.
يُستخدم nvshmem_uint64_wait_until في الطرف المتلقي للإشارة، لاستطلاع علامة حتى يقوم الطرف البعيد بتحديثها.
إن ضمان أي شكل من أشكال الترتيب بين العمليات من خلال nvshmem_quiet أو nvshmem_fence يعد أمراً مكلفاً، وبالتالي فإن تنفيذنا للنواة يتجنب استخدام أي بدائيات NVSHMEM أخرى ويقلل من أي تبعيات أخرى غير أزواج الإرسال والاستقبال الفردية. عند إرسال البيانات، نستخدم دائماً الإصدار غير الحاصِر من الوظائف، دون انتظار حتى يتم إرسال البيانات خارج الرتبة المحلية. وتضمن عملية مزامنة أخرى ضمنية عبر مجموعة النواة عدم الكتابة فوق هذه المخازن المؤقتة بشكل مدمر بينما تحتاج بطاقات واجهة الشبكة (NICs) إلى الوصول إليها.
تستخدم NVSHMEM تقنية GPUDirect RDMA بحيث تتمكن بطاقة واجهة الشبكة (NIC) من قراءة وكتابة ذاكرة وحدة معالجة الرسومات مباشرة لتبادل البيانات دون إشراك وحدات المعالجة المركزية. علاوة على ذلك، على بطاقات واجهة الشبكة ConnectX، تدعم NVSHEMEM الاتصال المُبادَر من وحدة معالجة الرسومات (المعروف أيضاً باسم Infiniband GPUDirect Async، أو IBGDA)، والذي يسمح لوحدة معالجة الرسومات بإرسال عمليات RDMA مباشرة إلى بطاقة واجهة الشبكة واستطلاع قائمة انتظار الاكتمال لبطاقة واجهة الشبكة مباشرة. على الأنظمة الأساسية التي لا تدعم الاتصال المُبادَر من وحدة معالجة الرسومات، تُنشئ NVSHMEM سلسلة (thread) "وكيلة" على وحدة المعالجة المركزية المضيفة لبدء الاتصال واستطلاع الاكتمال نيابة عن وحدة معالجة الرسومات. برنامج NVSHMEM قابل للنقل بغض النظر عما إذا كان الاتصال المُبادَر من وحدة معالجة الرسومات مدعوماً أم لا. ومع ذلك، فإن الاتصال المُبادَر من وحدة معالجة الرسومات يقلل بشكل كبير من زمن الانتقال لأنه يتجاوز تماماً الالتفاف إلى وحدة المعالجة المركزية.
النواة القابلة للنقل
نحن ننفذ اتصال MoE من خلال زوج من نواة الإرسال والاستقبال. تكون نواة الإرسال مسؤولة عن قراءة الرموز ومعلومات التوجيه على كل رتبة، وإرسالها إلى الخبراء المناسبين. تجمع نواة الاستقبال عمليات التنشيط التي ينتجها الخبراء وترسلها مرة أخرى إلى رتب المصدر الخاصة بها، بينما تحسب أيضاً المتوسط المرجح من الخبراء المحددين بناءً على الأوزان المحسوبة بواسطة الموجه. يتم تقسيم النواة بشكل إضافي إلى مكون إرسال واستقبال، للسماح بتداخل عمليات نقل البيانات مع الحساب. نواة الإرسال غير حاصِرة وغير متزامنة: فهي ببساطة ترسل جميع عمليات الكتابة إلى الأجهزة البعيدة. وفي الطرف الآخر، تقرأ نواة الاستقبال من الذاكرة فقط، وتنتظر حتى يتم نقل جميع البيانات المطلوبة. بعد إرسال العمل إلى بطاقات واجهة الشبكة، وأثناء نقل البيانات غير المتزامن عبر الأسلاك، يمكن لوحدات معالجة الرسومات القيام بعمل مفيد آخر محلياً، مثل تطبيق خبراء مشتركين أو حساب الانتباه.
كل زوج من النواة له مخازن الذاكرة المتماثلة الخاصة به، حيث يقوم كل تصنيف بتخصيص مساحة تخزين خاصة لتلقي البيانات من جميع الرتب الأخرى. الحد الأقصى لعدد الرموز التي يمكن إرسالها من مجموعة DP ثابت عبر الرتب، والذي يحدد أيضاً الحد الأقصى الذي يمكن لكل رتبة تلقيه لكل خبير محلي من كل رتبة DP. يتيح ذلك لرتب المرسل اشتقاق عنوان فريد على جهاز الوجهة للكتابة إليه، دون الحاجة إلى أي مزامنة بينها. بعد تلقي البيانات، تقوم النواة بخلط الرموز لترتيبها في الذاكرة بالتنسيق الأمثل المطلوب بواسطة النواة المستقبلة. وفي حين أن المخازن المؤقتة لها أبعاد كبيرة، يتم إعادة استخدامها عبر جميع الطبقات المتسلسلة للنموذج.
الشكل الوحيد للمزامنة العامة، كما هو موضح في الشكل أعلاه، يتم تنفيذه في نواة دمج الاستقبال. بمجرد إرسال البيانات من الإرسال، تعود الرتبة وتستمر في التنفيذ عندما تتلقى جميع الرموز التي تحتاجها من الرتب الأخرى وتدخل نواة دمج الإرسال بمجرد معالجتها. تضمن الحاجز (barrier) في دمج الاستقبال عدم تمكن أي رتبة من التقدم وبدء إرسال الإرسال بينما لا تزال أي رتبة أخرى تنتظر تلقي البيانات، مما قد يتسبب في تداخل مدمر. تتم المزامنة في نواة الدمج للبساطة، وكإجراء تحسيني، يمكن تنفيذ نفس الحاجز بين نواة استقبال الإرسال ونواة إرسال الدمج، مما يقلل بشكل أكبر من زمن الانتقال من خلال إتاحة المزيد من الوقت لبطاقات واجهة الشبكة لتسوية عمليات النقل بينما تقوم وحدة معالجة الرسومات بتشغيل نواة أخرى.
تنقسم كلتا النواة عبر جميع وحدات التدفقة المتعددة المتاحة (SMs) للأجهزة: بينما يجب أن توازي نواة إرسال الإرسال ودمج الاستقبال عبر الحد الأقصى لعدد الرموز لكل رتبة (max_m)، يجب أن تتعامل نواة استقبال الإرسال ودمج الإرسال مع هذا العدد من الرموز من كل رتبة وخبير محلي، بحد أقصى max_m * (num_experts // EP) * (EP // TP).
الإرسال
نواة الإرسال مسؤولة عن إرسال الرموز وعوامل قياس الكتلة إلى الأقران الذين يستضيفون الخبراء الذين تم توجيه الرموز إليهم. يعتمد جانب المرسل على التخصص في الالتواء (warp specialization) لموازنة مهمتين: تجميع معلومات التوجيه لتحديد عدد الرموز التي يتم إرسالها من كل رتبة وحزم الرموز في رسائل ليتم إرسالها إلى الطرف البعيد. ينتظر جانب المستقبل أولاً تلقي جميع عدد الرموز، ثم يقرأ ويفك حزم حمولات البيانات من الذاكرة المشتركة إلى الموترات التي سيتم تمريرها إلى نواة Grouped GEMM النهائية. كما أنه يخزن المعلومات في المخازن المؤقتة المشتركة مع نواة الدمج، للإشارة إلى المكان الذي يجب إرسال كل رمز إليه مرة أخرى. هذه المعلومات مطلوبة لأن نواة الاستقبال تخلط الرموز في مخازن مؤقتة متجاورة بترتيب عشوائي.
في جزء المرسل، تكون مجموعة واحدة من 32 سلسلة (thread) على كل كتلة مسؤولة عن قراءة معلومات التوجيه وعدد عدد الرموز التي يُتوقع أن يتلقاها كل خبير وجهة من هذه الرتبة، وإرسال العد مضافاً إليه واحد باستخدام nvshmem_signal_op. تتم زيادة العد بمقدار واحد، حيث أن الانتقال من الصفر إلى غير الصفر على الطرف البعيد يشير إلى استلام العد من رتبة المصدر. بالتوازي، تتعاون المجموعات المتبقية لنسخ الرموز إلى الذاكرة المتماثلة عبر جميع الكتل بالتوازي، وحزم عمليات التنشيط، وعوامل القياس وفهرسها على الرتبة المحلية في قطعة متجاورة. الفهرس مطلوب بواسطة مرسل الدمج لتحديد العنوان الذي سيتم كتابة الرمز فيه. بعد ذلك، بعد التأكد من نسخ جميع البيانات من خلال حاجز عبر مجموعات الالتواء، تعمل مجموعات الالتواء مرة أخرى بشكل مستقل، حيث يرسل كل منها نفس المخزن المؤقت إلى خبير مختلف بالتوازي. يتم إرسال الرموز باستخدام nvshmemx_putmem_signal_nbi_warp، والذي يزيد أيضاً بشكل ذري عدد الرموز المرسلة من الرتبة المحلية على الجهاز البعيد. داخل مجموعة DP، نظراً لأن كل رتبة تمتلك نسخة مطابقة للرمز المراد إرساله، يتم توزيع الإرسال بالتساوي، حيث يرسل كل جهاز مجموعة فرعية من الرموز.
في نهاية الاستقبال، تتم مزامنة جميع النواة أولاً مع رتب المرسل عن طريق انتظار إرسال إجمالي عدد الرموز. بعد ذلك، ينتظرون جميعاً حتى يستقر إجمالي عدد الرموز المزادة ذرياً إلى الإجماليات، مما يشير إلى أنه تم أيضاً إرسال جميع حمولات البيانات من رتب المصدر، بفضل دلالات استدعاء putmem. تستطلع النواة العدد باستخدام nvshmem_uint64_wait_until، مع موازنة العملية عبر جميع الكتل والسلاسل (threads). بعد ذلك، يضمن حاجز عبر الكتل عدم قيام أي كتلة بقراءة المخازن المؤقتة إلا إذا تم تلقي جميع البيانات بشكل صحيح. موزعة عبر الكتل ومزامنة عبر عداد مزاد ذرياً، يتم نسخ الرموز من الذاكرة المتماثلة إلى مخازن مؤقتة عادية ومتجاورة والتي تصبح المدخلات للنواة النهائية التي تنفذ الخبراء. يتم تخزين رتبة المصدر، وفهرس الخبير، وفهرس الرمز بشكل منفصل، مما يحدد بدقة الموقع الذي يجب على نواة الدمج إرسال عمليات التنشيط إليه. على الرغم من إرسال الرموز من داخل مجموعة DP من أجهزة مختلفة, إلا أنه يتم تجميعها كلها معاً ليتم تمريرها إلى الخبير المقابل.
الدمج
تنقسم نواة الدمج مرة أخرى إلى نصفين للإرسال والاستقبال: تقوم جهات الإرسال بنسخ عمليات التنشيط ذات 16 بتاً غير الكمية إلى الأجهزة البعيدة، بينما تنتظر نواة الاستقبال إرسال البيانات وحساب المتوسط المرجح لجميع مساهمات الخبراء محلياً. بالإضافة إلى ذلك، فهي تعمل أيضاً كحاجز، لمزامنة تسلسل الإرسال والدمج: تقوم كل رتبة بتعيين علامة على كل نظير عند الدخول إلى نواة الإرسال، مع عدم السماح لنواة الاستقبال بالعودة ما لم تلاحظ تعيين العلامة. يكون زمن انتقال المزامنة ضئيلاً، حيث يتداخل مع الاتصال والحساب الفعليين.
على جانب المرسل، تجتاز النواة قائمة الرموز المعينة لجميع الخبراء المحليين بالتوازي، وتكتبها في مخزن مؤقت على جهاز الوجهة. تتم قراءة جهاز الوجهة، وفهرس الخبير، وفهرس الرمز من المخازن المؤقتة الخاصة بكل رمز والتي تعبئها نواة التشتت عند استلام الرموز. لكل مرسل منطقة ذاكرة خاص به لكل خبير للكتابة إليها، كما هو موضح في الشكل أعلاه، مما يتجنب الحاجة إلى المزامنة. بشكل مشابه للإرسال، يقوم الدمج بزيادة العدادات لكل رمز ذرياً على جهاز الوجهة للإشارة إلى استلام البيانات: عندما يتطابق العداد مع عدد الخبراء الذين تم إرسال الرمز إليهم، يمكن الوصول إلى محتويات الرمز.
في نواة الاستقبال، يتم اجتياز قائمة الرموز بالتوازي عبر كتل متعددة، في انتظار وصول محتوياتها عن طريق استطلاع العلامة التي تعينها عملية الإشارة. عند الوصول، تتم قراءة حمولات البيانات من المخازن المؤقتة الخاصة، مع توجيه جدول التوجيه إلى المخزن المؤقت الذي يجب القراءة منه والوزن الذي يجب تعيينه لكل خبير. ثم يتم كتابة النتائج إلى موترات مخصصة خارجياً، حيث تنتهي النواة من التنفيذ بمجرد تجاوز جميع الأجهزة للحاجز. عبر مجموعة DP، تتلقى جميع الرتب نسخة من كل تفعيل خبير لحساب النسخ الخاصة بهم.
المقاييس
نحن نقيم النواة الخاصة بنا على مجموعة من 128 وحدة معالجة رسومات موزعة عبر 16 عقدة متصلة عبر شبكات InfiniBand وبطاقات واجهة الشبكة CX-7. نجرب كلاً من GPUDirect Async (IBGDA) والاتصال الموثوق (RC) مع وكيل وحدة المعالجة المركزية. نقارنها بتنفيذ DeepSeek المُحسَّن للغاية، بالإضافة إلى البدائيات الكثيفة التي توفرها PyTorch (من خلال NCCL) أو NVSHMEM.
على الرغم من أنه في عملية All-to-All لـ NVSHMEM الكثيفة، فإن أداء IBRC وIBGDA متشابه (6378 ميكروثانية مقابل 6180 ميكروثانية)، إلا أن IBGDA أسرع بكثير مع النواة المتفرقة. بجمع الإرسال والدمج، يستخدم IBGDA 902 ميكروثانية بينما يستغرق IBRC 3223 ميكروثانية - تحسن بمقدار 3.6 أضعاف في زمن الانتقال. في حين أن عملية All-to-All مقيدة بالنطاق الترددي، فإن النواة المتفرقة تبث بيانات أقل بعدة مرات، وتكون مقيدة بزمن الانتقال. من خلال تشغيل عمليات نقل الشبكة مباشرة من وحدة معالجة الرسومات، دون الحاجة إلى وكيل وحدة المعالجة المركزية لتنسيق وحدة معالجة الرسومات وبطاقة واجهة الشبكة، يتم تقليل زمن الانتقال من البداية إلى النهاية بشكل كبير.
بينما تكون النواة القابلة للنقل أبطأ بحوالي مرتين من نواة DeepSeek المُحسَّنة للغاية، إلا أنها تحسن زمن الانتقال بـ 10 أضعاف مقارنة بالنواة الكثيفة (902 ميكروثانية مقابل 9944 ميكروثانية).
بالإضافة إلى ذلك، فإن التقسيم إلى مكونات مرسل-مستقبل يسمح أيضاً بإخفاء جزء من زمن الانتقال، على عكس بدائيات المكتبة.
على العقدة الواحدة (EP8)، تستخدم NVSHMEM تقنية NVLINK للنقل، مما يوفر زمن انتقال أقل وإنتاجية أعلى من شبكات بين العقد. النواة القابلة للنقل لدينا أسرع بنوالي 2.5 مرة من DeepEP على العقدة الواحدة (186 ميكروثانية مقابل 481 ميكروثانية).
تحسينات إضافية
تتفوق النواة الموضحة هنا على البدائيات المدمجة لأطر عمل التعلم الآلي وتقدم أداءً لائقاً دون التخصص الزائد لوسائط نقل محددة بين الأجهزة، مثل NVLink أو InfiniBand. إلى جانب الفرص المذكورة بالفعل، يمكن تحقيق مكاسب إضافية في الأداء عن طريق استبدال بدائيات الاتصال بإصدارات أكثر تخصيصاً. على سبيل المثال، عبر NVLink، يمكن استبدال استخدام الذاكرة المتماثلة بمخازن مؤقتة مشتركة عبر الأجهزة، مما يلغي بعض عمليات النسخ ويسمح بمخططات مزامنة دقيقة الحية، عبر الرموز الفردية بدلاً من دفعات الرموز. عبر InfiniBand، يمكن للتنفيذ الوصول إلى أزواج قائمة الانتظار الأساسية مباشرة، مما يلغي الحاجة إلى نقل كل من تعداد الرموز المتوقعة والمرسلة وإفراغ الرموز من قوائم الانتظار إلى مخازن الإخراج عند وصولها. ومع ذلك، تأتي هذه التنفيذات على حساب قابلية النقل، في حين تسمح تنفيذاتنا بتقييم العقد ذات التكوينات المحددة قبل الالتزام بجهد التطوير للتحسين لأجهزة معينة.
الخاتمة
لقد قدمنا مكتبة عالية الأداء وقابلة للنقل لاتصالات MoE تحقق أداءً أسرع بـ 10 أضعاف مقارنة باتصالات All-to-All القياسية مع الحفاظ على التوافق عبر تكوينات الأجهزة المختلفة. على عمليات نشر العقدة الواحدة مع NVLink، يُظهر حلنا زمن انتقال أقل بـ 2.5 مرة من التنفيذات السابقة.
يوازن نهجنا بين الأداء وقابلية النقل من خلال ابتكارات رئيسية بما في ذلك دعم الاتصال المُبادَر من وحدة معالجة الرسومات، وهية نواة مقسمة تتيح تداخل الحساب والاتصال، وإرسال الرموز بكفاءة باستخدام الحد الأدنى من بدائيات NVSHMEM. على الرغم من كونها أبطأ بحوالي مرتين مقارنة بالتنفيذات المتخصصة للغاية على إعدادات العقد المتعددة، إلا أن مكتبتنا توفر مرونة فائقة عبر بيئات الشبكات المختلفة (NVLink وCX-7 وEFA).
مع استمرار نماذج MoE في التوسع، ستصبح استراتيجيات الاتصال الفعالة مثل استراتيجيتنا ذات أهمية متزايدة للنشر العملي. تنفيذنا المفتوح المصدر بالكامل متاح على https://github.com/ppl-ai/pplx-kernels.
المراجع
اقتباس
@online{perplexity2025EfficientAndPortableMixtureOfExpertsCommunication,
author = {{Perplexity} and Nandor Licker and Lequn Chen and Phi Hoang},
title = {{Efficient and portable mixture-of-experts communication}},
date = {2025-04-02},
url = {https://www.perplexity.ai/hub/blog/efficient-and-portable-mixture-of-experts-communication}
}