Phase 10: LLMs from Scratch

التوازي مع الـ DualPipe

تم تدريب DeepSeek-V3 على 2048 جهاز GPU H800 مع خبراء في مجال التكنولوجيا المتفرقة عبر العقد. خبير في الاتصالات عبر العقدة كل شيء يكلف ساعة من المعلومات لكل ساعة من الحوسبة كانت أجهزة البيانات العاملة غير تعمل نصف الوقت DualPipe (DeepSeek ، ديسمبر 2024) هو خط أنابيب ثنائي الاتجاه الذي يتداخل بين الحسابات الأمامية والخلفية مع الاتصالات الكاملة التي يؤديون إليها. إنخفاض الفقاعات، صعود التكامل، والاحتفاظ بنسخة نموذجية من المعلمين (ال"مثنائية" التي تعطي الاسم) رخيصة عندما يتم بالفعل نشر الخبراء عبر الصفوف على أي حال. هذه الدروس هي دراسة نوع تعلم حول ما تفعله دوالبايب في الواقع ولماذا تحسين دوالبايبيف من مختبر السماء الذكاء الاصطناعي يقلل من تكلفة المعلم 2x على حساب فقاعة أقوى بشكل هامش.

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 يصل إلى ثلاثة عوارض زجاجة مركبة:

  1. Memory pressure.كل GPU تحتوي على قطعة من النموذج ذاكرة تفعيل في تسلسل 8K عبر 61 طبقة على 128 رأس هائلة.
  2. Pipeline bubbles.يترك التوازي التقليدي للخطوط (GPipe، 1F1B) GPUs مهجورة أثناء انتظار مدخلات أو تراجع مرحلتها. في 8 مراحل، يمكن أن يكون حوالي 12% من وقت GPU فقاعة حتى مع جدولة 1F1B.
  3. 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.

التنازل:

FeatureDualPipeDualPipeV1F1BZero Bubble
Param copies per device2111
Bubble vs micro-batchesconstantsmall growthgrowsgrows
Compute-comm overlapfullpartialminimalpartial
Use whenEP-heavy MoEdense or EP-lightbaselineany 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. بالنظر إلى مواصفات مجموعة التدريب (عدد البنبات الكهربائية، وتوبولوجيا، والاتصال المتبادل، وشكل النموذج) ، فإنه يوصي باستراتيجية التوازي للخطوط الأنابيبية، وخوارزمة التخطيط المستخدمة، والجزء المتوقع من الفقاعات على المقياس المستهدف.

التمارين

  1. أركضcode/main.pyعلى(P=8, micro_batches=16, schedule=dualpipe)و(P=8, micro_batches=16, schedule=1f1b).حسب الفرق في استخدام الجيبو وعبره كمسترددات ساعات الجيبو لكل مليون رمز للتدريب
  1. رسم جدول الجدول الزمني ل (P=4, micro_batches=8, schedule=dualpipe)يُمكنك تحديد الموقع الزمني الأول حيث لا توجد فقاعات
  1. اقرأ الشكل 5 من التقرير الفني DeepSeek-V3 (arXiv:2412.19437). حدد نافذة التداخل للرسالة الكاملة داخل قطعة DualPipe الأمامية. شرح كيفية إخفاء جدول الحساب.
  1. قم بحساب تكلفة الجدارة العليا لـ DualPipe 2x لنموذج كثيف 70B مع مراحل خط الأنابيب P=8 ونموذج 671B MoE مع مراحل خط الأنابيب P=16.
  1. مقارنة DualPipe مع Chimera (منظمة جدولة مشتركة من 2021). حدد الخصائص المحددة التي أضافها DualPipe التي لم يكن لديها Chimera ، باستخدام القسم 3.4 من الورقة كإشارة.

الشروط الرئيسية

TermWhat people sayWhat 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

المزيد من القراءة

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.