التوازي مع الـ DualPipe
Type: Learn
Languages: Python (stdlib, schedule simulator)
Prerequisites: Phase 10 · 05 (distributed training, FSDP, DeepSpeed), Phase 10 · 14 (open-model architectures and MoE)
Time: ~60 minutes
أهداف التعلم
- أسمائنا أربعة مكونات من قطعة DualPipe للأمام والخلف و لماذا كل منها لديه نافذة التداخل الخاصة به.
- شرح مشكلة فقاعة الأنابيب على نطاق واسع، وما يعنيه "حرة من فقاعة" في الممارسة مقابل التسويق.
- تتبع جدول DualPipe يدوياً لـ 8 صفوف PP و 16 مجموعة صغيرة وتؤكد أن التيارات الأمامية والعكسية تملأ فتحات الفراغة الأخرى.
- أوضح التنازل الذي يفعله DualPipeV (Sea AI Lab ، 2025): يلقي بثنائي أضعاف المعلمات بتكلفة فقاعة أكبر قليلاً عندما يكون Expert Parallelism غير نشط.
المشكلة
تدريب نموذج 671B MoE على 2k H800 GPUs يصل إلى ثلاثة عوارض زجاجة مركبة:
- Memory pressure.كل GPU تحتوي على قطعة من النموذج ذاكرة تفعيل في تسلسل 8K عبر 61 طبقة على 128 رأس هائلة.
- Pipeline bubbles.يترك التوازي التقليدي للخطوط (GPipe، 1F1B) GPUs مهجورة أثناء انتظار مدخلات أو تراجع مرحلتها. في 8 مراحل، يمكن أن يكون حوالي 12% من وقت GPU فقاعة حتى مع جدولة 1F1B.
- Cross-node all-to-all.يُشكل كل مرسلة إلى الأمام كل شيء لإرسال الرموز إلى خبرائها، وآخر لجمعها. في GPUs 2k يصبح هذا بسهولة نسبة 1: 1 من الحساب إلى الاتصالات.
كل منها لديه حلول منفصلة: التفتيش المتحرك للذاكرة، فقاعة صفر (مختبر سمك الذكاء الاصطناعي، 2023) لفقاعات الأنابيب، وذرات الاتصالات المتوازية الخبراء للجميع. ما يفعله (دوال بيب) هو جعلهم يلعبون معاً يترابط الجدول المخطط الحساب والاتصالات داخل قطعة واحدة للأمام والخلف ، ويُحقق البطاقات الصغيرة من كلا الطرفين من خط الأنابيب في وقت واحد ، ويستخدم الجدول المنتج لخفاء كل شيء داخل نوافذ الحساب.
النتيجة المعلنة: القريبة من القضاء على فقاعات الأنابيب، أكثر من 95٪ استخدام GPU في تدريب 14.8T-token DeepSeek-V3
المفهوم
تحديث التوازي مع خطوط الأنابيب
تقسيم نموذج طبقة N عبر أجهزة P. الجهاز iيحتفظ بطبقاتi N/P .. (i+1) N/P - 1. تدفق الحزمة الصغيرة للأمام من خلال الأجهزة 0 إلى P-1 ، ثم إلى الوراء من P-1 إلى 0. كل جهاز لا يمكن أن يبدأ مرحلة التقدم فقط عندما يرسلها الجهاز السابق إصدارها ويمكن أن يبدأ إلى الوراء فقط عندما يرسلها الجهاز التدريجي التدريجي التدريجي.
يقوم GPipe (Huang et al., 2019) بتخطيط مجموعة صغيرة واحدة في كل مرة، مما يضيع معظم وقت GPU. 1F1B (Narayanan et al., 2021) يتركهما الممرات الأمامية والخلفية لمجموعات صغيرة متعددة. فقاعة الصفر (قي وآخرون، 2023) تقسم الممر الخلفي إلى قسمين الخلفي للدخول (ب) والخلفي للوزن (و) وتجدد لهم لملء فقاعة. بعد "فقاعة الصفر" ، أنابيب الأنابيب ضيقة تقريباً
دوالبايب هي الخطوة التالية، يضيف فكرة إضافية:
الفكرة الأولى: تدمير الجزء
كل قطعة للأمام مقسمة إلى أربعة مكونات:
- Attention.توقعات Q/K/V، الاهتمام، توقعات الخروج.
- All-to-all dispatch.الاتصال عبر العقدة الذي يرسل رموز إلى خبراءهم.
- MLP.الحسابات الخبيرة من وزارة الخارجية
- All-to-all combine.الاتصال عبر العقد الذي يجلب الخبرة الخروج مرة أخرى.
يضيف قطعة متراجعة نسخة تراجعية لكل منها. يخطط دوالبايبها بحيث يحدث إرسال كل شيء بالتوازي مع حساب الانتباه للقطعة التالية ، ويتم الجمع بين كل شيء بالتوازي مع حساب MLP للقطعة التالية.
فكرة 2: التخطيط المزدوج
معظم خط الأنابيب تدفق مجموعات صغيرة من المرحلة 0 وتدفق نحو المرحلة P-1. تدفق DualPipe مجموعات صغيرة من كلا الطرفين. المرحلة 0 ترى مجموعات صغيرة إلى الأمام التي تنشأ من هناك؛ المرحلة P-1 ترى مجموعات صغيرة إلى الأمام التي تنشأ من هناك أيضا. تتقابل التيارين في الوسط.
لكي يعمل هذا، جهازiيجب أن تحتفظ كلا الطبقة الأولى من الأنابيبiو الطبقة المتأخرة من الأنابيبP - 1 - iهذا هو الجزء "المتزدوج" من DualPipe: يحفظ كل جهاز نسختين من طبقات النموذج التي يحتاجها لخدمة (واحد لكل اتجاه). على مقياس DeepSeek-V3 ، هذا هو تكلفة نقل المعلمين 2x. فهو بأسعار معقولة لأن Expert Parallelism يفرز بالفعل خبراء MoE رقيقين بحيث أن نسخ الطبقات غير الخبراء مرتين هو البطاطس الصغيرة.
من المهم أن يتداخل التيار الأمامي في اتجاه واحد والتي تعود إلى الوراء في الاتجاه الآخر بالضبط حيث ستكون الفقاعات في جدول زمني واحد.
جدول زمني يتم تعقبه يدوياً
فكر في P = 4 صفوف، 8 مجموعات صغيرة، مقسمة 4 للأمام / 4 العكس. يتحرك الوقت من اليسار إلى اليمين؛ الصفوف هي صفوف الجهاز.
Time →
rank 0: F1 F2 F3 F4 F5R F6R F7R F8R B1 B2 B3 B4 ...
rank 1: F1 F2 F3 F4/F5R F6R F7R B1 B2 ...
rank 2: F1 F2 F3/F5R F4/F6R B1 ...
rank 3: F1 F2/F5R F3/F6R ...قراءة علامة "F4/F5R": المرتبة 1 هي التقدم إلى الأمام من المجموعة الصغيرة 4 (التي تذهب من اليسار إلى اليمين في الأنابيب) وإلى الأمام من المجموعة الصغيرة 5 (التي تذهب من اليمين إلى اليسار) في نفس الفترة الزمنية. هذا ما يعني "ممتعدداً" عملياً.
في المرتبة 2 تتداخل التدفقات المتقاطعة بشكل أسرع ، في المرتبة 0 و P-1 تتداخل في وقت لاحق. في المرحلة المتوسطة المستقرة من الجدول الزمني ، يتم تشغيل كل صف في الاتجاه الأمامي من إكس متداخل مع الاتجاه الخلفي من ي. الحساب مشغول. تُخفي الرسائل الكاملة للمرور الأمامي داخل الحساب الخلفي. يجمع كل شيء الخفي داخل الحساب الأمامي. يتم ضغط الفقاعات خارج.
محاسبة الفقاعة
فقاعة خط الأنابيب القياسية 1F1B (الوقت المضيع لكل رتبة):
bubble_1F1B = (P - 1) * forward_chunk_timeيُنخفض التكرير من الصفرة إلى الصفر. يُحتوي DualPipe، في المرحلة المستقرة، على فقاعة صفر إذا كان عدد المجموعات الصغيرة قابلاً للقسم بنسبة 2 أضعاف عمق الأنابيب. خارج المرحلة المستقرة (الحرارة والتبريد) ، هناك بعض الفقاعة ولكنها لا تنمو مع عدد المجموعات الصغيرة وهي خصائص رئيسية تبرزها الورقة.
من حيث التسويق: "حرة خالية من الفقاعات". من حيث الفنية: فقاعات لا تنمو مع عدد البطاقات الصغيرة. تحليل متابعة لابراتوار الساحر الذكاء الاصطناعي (DualPipeV / Cut-in-half) يظهر الفقاعة الصفر الكاملة فقط عندما لا يكون التوازي الخبير عقد الزجاجة. مع القوة القائمة على كل شيء من EP ، هناك بعض التسوية في الجدولات دائمًا.
DualPipeV التكرير
لاحظ مركز "مختبر السماء الذكية" (2025) أن نسخة المعلمات 2x تكون مضيعة عندما لا تكون التداخل بين الاتصالات البريطانية هو النقطة. جدولهم DualPipeV يطوي حقن الاتجاهين في جدول "شكل V" الذي يعمل على نسخة واحدة من المعلمات. فقاعة أكبر قليلا من DualPipe، ولكن توفير الذاكرة كبيرة. اعتمدت DeepSeek DualPipeV في تنفيذها DualPipe مفتوح المصدر كوضع خارج عن EP.
التنازل:
| Feature | DualPipe | DualPipeV | 1F1B | Zero Bubble |
|---|---|---|---|---|
| Param copies per device | 2 | 1 | 1 | 1 |
| Bubble vs micro-batches | constant | small growth | grows | grows |
| Compute-comm overlap | full | partial | minimal | partial |
| Use when | EP-heavy MoE | dense or EP-light | baseline | any pipeline |
ما يعنيه لـ 14.8T - إشارة تشغيل
استهلكت تدريبات DeepSeek-V3 قبل التدريب 14.8T من الرموز على 2048 H800 GPU في حوالي 2.8 مليون ساعة GPU. مع 1F1B البديهي، كانوا سيخسرون 12-15٪ من ذلك إلى فقاعات الأنابيب 340-420K GPU-ساعات، بما يكفي لتدريب نموذج كامل 70B. (دوالبايب) استعاد معظمها إن تحديد المساهمة بشكل مباشر صعب دون السجلات الداخلية، ولكن الادعاء في الورقة هو أكثر من 95% استخدام GPU المتوسط عبر التدريب.
بالنسبة للعمل الأصغر (أقل من 1k GPUs) ، يُسعى DualPipe إلى زيادة ضبابات الأنابيب أصغر نسبياً إلى التكلفة الإجمالية، ونادراً ما يصل تدريب النموذج الكثيف إلى عقدة الزجاجة الكاملة. للتدريب الحدودي للطاقة الذكية على نطاق GPU متعدد الآلاف، مطلوب بشكل فعال.
حيث يجلس في كومة
- إضافية إلىFSDP(مرحلة 10 · 05). FSDP تقسيم معايير النموذج عبر الصفوف؛ DualPipe تخطيط الحساب عبر الصفوف.
- متوافقة مع ZeRO-3الحسابات لـ نسخة نسخة يجب أن تتعاون مع الزيرون المزقق
- تطلباتcustom all-to-all kernelsالمنسق لتطبيقات الكلاستر المحددة. أجزاء جوهر مفتوحة DeepSeek هي تنفيذ مرجعية.
استخدمها
code/main.pyهو محاكاة جدول خط الأنابيب.(P, n_micro_batches, schedule)ويقوم بطبع الاستخدام المستقر للمرحلة لكل من 1F1B، فقاعة صفر، DualPipe، و DualPipeV. إنها أداة تعليمية تتطابق الأرقام مع المطالبة الجودية في الورق، وهي ليست المطالبة عن الإنتاج قياس السرعة.
قيمة المحاكي: تشغيله مع عدد مختلف من P و الميكرو-بثات ومشاهدة كيف تنمو الجزء الفقاعة ل 1F1B ولكن ليس DualPipe.
اعتبارات التكامل لدورة تدريبية حقيقية:
- اختر عمق متوازي للخط أنابيب يُقسم بشكل واضح إلى عدد المجموعات الصغيرة
- تأكد من أن شبكة الموازين الخاصة بك تدعم كل شيء إلى كل شيء في اتجاهين
- تتوقع أن تحرق أسبوع من الوقت في التحليل على الجدول الزمني نفسه في المرة الأولى
- مراقبة استخدام الجيبو لكل رتبة، ليس فقط الجمعية فائدة دوالبايب تأتي من ضيق المتأخرين.
أرسله
هذا الدرس يُنتجoutputs/skill-dualpipe-planner.md. بالنظر إلى مواصفات مجموعة التدريب (عدد البنبات الكهربائية، وتوبولوجيا، والاتصال المتبادل، وشكل النموذج) ، فإنه يوصي باستراتيجية التوازي للخطوط الأنابيبية، وخوارزمة التخطيط المستخدمة، والجزء المتوقع من الفقاعات على المقياس المستهدف.
التمارين
- أركض
code/main.pyعلى(P=8, micro_batches=16, schedule=dualpipe)و(P=8, micro_batches=16, schedule=1f1b).حسب الفرق في استخدام الجيبو وعبره كمسترددات ساعات الجيبو لكل مليون رمز للتدريب
- رسم جدول الجدول الزمني ل
(P=4, micro_batches=8, schedule=dualpipe)يُمكنك تحديد الموقع الزمني الأول حيث لا توجد فقاعات
- اقرأ الشكل 5 من التقرير الفني DeepSeek-V3 (arXiv:2412.19437). حدد نافذة التداخل للرسالة الكاملة داخل قطعة DualPipe الأمامية. شرح كيفية إخفاء جدول الحساب.
- قم بحساب تكلفة الجدارة العليا لـ DualPipe 2x لنموذج كثيف 70B مع مراحل خط الأنابيب P=8 ونموذج 671B MoE مع مراحل خط الأنابيب P=16.
- مقارنة DualPipe مع Chimera (منظمة جدولة مشتركة من 2021). حدد الخصائص المحددة التي أضافها DualPipe التي لم يكن لديها Chimera ، باستخدام القسم 3.4 من الورقة كإشارة.
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Pipeline bubble | "Idle time per rank" | GPU cycles wasted because a pipeline stage is waiting for its input or gradient |
| 1F1B | "Default pipeline schedule" | One forward / one backward interleaved scheduling; the baseline DualPipe beats |
| Zero Bubble | "Sea AI Lab 2023" | Splits backward into B (input gradient) and W (weight gradient); almost fully tightens the pipeline |
| DualPipe | "DeepSeek-V3 schedule" | Bidirectional pipeline + compute-comm overlap; bubbles do not grow with micro-batch count |
| DualPipeV | "Cut-in-half" | V-shape refinement that drops the 2x parameter replication at the cost of slightly larger bubbles |
| Chunk | "Unit of pipeline work" | A forward or backward pass of one micro-batch through one pipeline stage |
| All-to-all dispatch | "Send tokens to experts" | Cross-node comm that routes tokens to their assigned MoE experts |
| All-to-all combine | "Bring expert outputs back" | Cross-node comm that gathers expert outputs after the MLP |
| Expert Parallelism (EP) | "Experts across GPUs" | Shards MoE experts across ranks so different GPUs hold different experts |
| Pipeline Parallelism (PP) | "Layers across GPUs" | Shards model layers across ranks; the dimension DualPipe schedules |
| Bubble fraction | "Wasted GPU time" | (bubble_time / total_time); the fraction DualPipe drives toward zero |
المزيد من القراءة
- DeepSeek-AI — DeepSeek-V3 Technical Report (arXiv:2412.19437), Section 3.3.2 and Figure 5 الإشارة الرئيسية للشرطة DualPipe
- DeepSeek — DualPipe GitHub repository تنفيذ المرجعية مفتوحة المصدر، بما في ذلك وضع DualPipeV (قطع في النصف)
- Qi et al. — Zero Bubble Pipeline Parallelism (arXiv:2401.10241, Sea AI Lab 2023)سلف "الفقاعة الصفرة"
- Sea AI Lab — DualPipe could be better without the Dual تحليل DualPipeV الذي أبلغ عن وضع إيقاف EP من DeepSeek
- Narayanan et al. — PipeDream / 1F1B (arXiv:1806.03377, 2018-2021) جدول 1F1B يُقارن DualPipe مع
- Huang et al. — GPipe (arXiv:1811.06965, 2018) مشكلة الموازاة الأصلية للخطوط النابطة ورقة وفقاعة
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.