بناء خط أنابيب كاملة للدرجة العليا
Type: Build
Languages: Python (stdlib)
Prerequisites: All Phase 10 lessons 01-12
Time: ~120 minutes
أهداف التعلم
- قم بتجميع الدرس الـ11 السابق (التوكينيزر والبيانات والتدريب المسبق وتوسيع النطاقات والتحديدات، والتحديدات، والتحديدات، والتحديدات، والإدراك، والإدراك، والإدراك، والتحديد، والكميات، والإستنتقاد) إلى تحديد واحد قابل للتكرار
- تحديد عقد الأثاث بين المراحل: ما يستهلك كل مرحلة، ما ينتج، وكيفية التحقق من المدخلات في المرحلة التالية
- بناء منظمة موسيقية تتبع التجارب، وتحويلها الأثرية، والبوابات السفن القرارات على عتبات التقييم
- صياغة خطة إعادة التدريب: أي أثاث رخيص لإعادة التدريب، والتي باهظة الثمن، وما تكلفة نقطة تفتيش فاسدة
المشكلة
الدروس السابقة كل عمل. تم تدريب Tokenizer. تم تدريب GPT المسبق. تم تجميع مجموعة بيانات SFT. تم تدريب نموذج مكافأة. تم تشغيل DPO. تم قياس الموازين. تم تصدير الأوزان الكمية. تم تشغيل خادم الإستثمار. كل واحد هو دفتر مذكرة. لكل واحد لديه اتفاقيات خاصة به، مسارات خروجه الخاصة، بذور خاصة به.
التدريب على الحدود ليس دفترًا مذكريًا إلاما 3 405B أخذ 30 مليون H100 ساعة على مدى حوالي 54 يوما. تستغرق "ديب سيك" (V3) حوالي 2.8 مليون ساعة خلال ذلك الوقت، نقطة تفتيش واحدة فاسدة، تلوث واحد للبيانات، رجعة واحدة تقييم يمكن أن تكلف فريق أسبوع من ساعة الحائط وشهر من ميزانية GPU. الطريقة التي تنجو بها الفرق من هذا هو من خلال نظافة خطوط الأنابيب: كل مرحلة لديها مدخل تحديدي، ومخرج تحديدي، ومرسوم، ومرسوم، وبوابة.
هذه هي الحجر النهائي. لن تشغيل خط الأنابيب من نهاية إلى نهاية على جهاز كمبيوتر محمول. سوف تكتب الموسيقي الذي ينسق المراحل، والخطاب الذي يصف الجري، والتحقق الذي يمنع قرارات السفن، وخطة إعادة التشغيل التي تسمح لطرف ثالث بإعادة تشغيل عملك من ملف واحد. الرمز صغير؛ والتنظيم كبير.
النمط يتراوح من 100M إلى 1T دون تغيير. نفس المكونات الأربعة -- المظهر، الموسيقي، بوابة التقييم، متجر الأثرية -- تشغيل Llama 3 وتشغيل هوايتك GPT أيضا. الفرق هو حجم الأرقام داخل إعداد كل مرحلة، وليس شكل الأنابيب.
المفهوم
المراحل الثانية عشر
كل درس من المرحلة 10 هو مرحلة.
graph TD
S1["01 Tokenizer vocab"] --> S2["02 Trained tokenizer"]
S2 --> S3["03 Sharded dataset"]
S3 --> S4["04 Base model checkpoint"]
S4 --> S5["05 Scaled training recipe"]
S5 --> S6["06 SFT checkpoint"]
S6 --> S7["07 Reward model + PPO policy"]
S6 --> S8["08 DPO policy"]
S7 --> S9["09 CAI / GRPO refined policy"]
S8 --> S9
S9 --> S10["10 Eval report"]
S9 --> S11["11 Quantized weights"]
S11 --> S12["12 Inference server"]
S10 --> GATE["Ship gate"]
S12 --> GATE
style S1 fill:#1a1a2e,stroke:#e94560,color:#fff
style S4 fill:#1a1a2e,stroke:#0f3460,color:#fff
style S9 fill:#1a1a2e,stroke:#0f3460,color:#fff
style GATE fill:#1a1a2e,stroke:#51cf66,color:#fffيمكن أن تعمل المراحل 07 و 08 بالتوازي. كل شيء آخر يعتمد على صعوبة. تغيير في المرحلة 02 (tokenizer) يؤدي إلى إلغاء كل أداة أسفل التيار. تغيير في المرحلة 10 (eval) يؤدي إلى إلغاء قرار السفينة فقط.
الظهور
المخطط هو ملف واحد يصف تشغيلًا كاملًا بما يكفي لإعادة تشغيله. لا شيء ينتجه الخط أن يعتمد على حالة ليست في المخطط. الحقول مملة و إلزامية.
pipeline_version: 1.2.3
seed: 42
git_commit: a1b2c3d4
stages:
01_tokenizer:
recipe: bpe_32k
input_hash: sha256:...
output_hash: sha256:...
wall_clock_sec: 3600
cost_usd: 12إن خروج الناتج من المرحلة N هو خروج المدخل من المرحلة N + 1. أي انحراف وتوقف خط الأنابيب. هكذا يمكنك اكتشاف الفساد البيانات مبكرا. كما أنه كيف يثبت زميل في فريق في قارة مختلفة أن إعادة تشغيله أنتجت نفس العناصر التي أنتجتها.
في الممارسة الفريقية تستخدم مخطط YAML صغير بالإضافة إلى ملف التحقق من المظاهر الذي يختلف عن الجري الناجح السابق. أي دلتا خارج الحقول المتوقعة (تكلفة، ساعة الجدار) هو راية حمراء.
تطبيق الأثاث
إنّ إنتاج كلّ مرحلة هو أداة مكتوبة، ليس قطعة إداريّة، وليس طعم، بل نوعٌ مسمّى مع مخطّط معروف.
| Stage | Artifact Type | Key Fields |
|---|---|---|
| 01-02 | Tokenizer | vocab.json, merges.txt, config.json, hash |
| 03 | Dataset | shards[], row count, token count, dedup stats |
| 04-05 | Checkpoint | weights.safetensors, config.json, optimizer state, step count |
| 06 | SFT Model | checkpoint + SFT recipe + data mix |
| 07 | Reward Model | RM checkpoint + preference data hash |
| 08-09 | Policy | checkpoint + reference hash + beta + KL budget consumed |
| 10 | Eval Report | benchmark scores + regression diffs + eval data hash |
| 11 | Quantized Model | quantized weights + calibration data + accuracy delta vs FP16 |
| 12 | Server Spec | endpoint + model hash + config + observability hooks |
يمنع التطبيق وضع الفشل الأكثر شيوعاً: استخدام خروج مرحلة 08 كمدخل مرحلة 06 ، وإرسال نموذج مدرب من DPO عبر مسار SFT. تصنع الأثاث المميزة وتوقيعات المرحلة المميزة هذه الأخطاء أخطاء في وقت التجميع ، وليس أخطاء يوم خمسة.
بوابة إيفال
الشحن ليس "التدريب انتهى". الشحن هو "التدريب انتهى والبوابة التقييم تمت. "بوابة يتم تعريفها قبل بدء الجولة.
gates:
mmlu: >= baseline + 0.5 # no regression
humaneval: >= baseline + 1.0
truthfulqa: >= baseline # no drop
safety_refusal_rate: <= 0.05
kl_from_reference: <= 25.0
cost_total_usd: <= 50000كل بوابة هو عددية عتبة. لا بوابات "يبدو جيدة". لا علامات ذاتية. إذا تمر كل بوابة، يتم وضع علامة على التحف المرسلة. إذا فشل أي بوابة، يتم إجراء الجولة في انتظار الإغلاق الصريح من قبل المراجع المسمى، والذي يتم تسجيل نفسه في المذكرة.
بوابة 2 بوابات تقاطع معظم الكوارث. بوابة رجعة (يجب أن يكون النموذج الجديد على الأقل جيدًا بنفس الجودة التي كانت عليه في النماذج المرجعية الأساسية) تقاطع أخطاء التدريب. بوابة كيل ميزانية * (لا يجب أن تكون السياسة المنسقة قد انحرفت أبعد من X من مرجعها) تقاطع تعديل التنظيم. كل خط أنابيب الإنتاج له كل منهما.
الموسيقي
قطعة صغيرة من الشفرة التي تقرأ المخطط، وتقوم بإرسال المراحل، وتتبع الأثاث، وتوقف عن أي انتهاك للعقد. هذه ليست Airflow. هذه ليست Kubeflow.
وظيفة الموسيقي ضيقة:
- أخرجوا اليوم من المذكرة
- لكل مرحلة، تحقق من وجود الخروج المتوقع بالفعل عند الاختراق الصحيح (فقط إذا كان كذلك).
- إدارة المسرح، التقاط stdout / stderr، قياس الساعة الجدارية والتكلفة.
- التحقق من الاختراق الخارجي مقابل الاختراق المدخل المتوقع للمرحلة التدريجية.
- عند الفشل، اكتب بيان جزئي مع مرحلة الفشل الدقيقة والخروج غير الصفر.
هذا 200 سطر من بيثون. سوف تبدو مثل الملفcode/main.pyتحت الغطاء، أنبوب حقيقي يستخدمtorchrunأوrayلتنفيذ مراحل فردية على مجموعة، ولكن الموسيقي نفسه يعمل على صندوق واحد.
تتبع التجارب وتخزين الأثاث
نظامان خارجيان يثبتون خط الأنابيب
Experiment tracker (wandb, neptune, mlflow).يُسجل منحنى الخسارة، ومقاييس التقييم، وتلفزية النظام لكل مرحلة. المسجل هو المكان الذي تذهب إليه عندما تحتاج إلى مقارنة الجولة A مع الجولة B بعد ثلاثة أسابيع. الفريقات تستخدم دائماً تقريباً مسجلًا مضيفًا لهذا -- كتابة وقتك الخاص يفقد الوقت الذي يجب أن يذهب إلى التدريب.
Artifact store (S3, R2, GCS).متجر غير قابل للتغيير للمواقع التفتيشية ومجموعات البيانات والمعلامات والتقارير التقييمية. يتم تعيين الأدوات عن طريق الهاش، وليس عن طريق اسم الملف. اسم ملف مثل latest.ptهو بندقية قدمckpt-7b-step-20000-sha256:abc123.safetensorsهو عقد
الموسيقي يكتب لكل منهما، ومتابعة البشر يبحثون عن الرسوم البيانية، ومتجر الأثاث هو للمرحلة التالية يبحثون عن المدخلات.
التكلفة
في الجولة الحدودية يوجد رقم دولار مرفق.
Pre-run estimate.من المخطط، الحساب المتوقع FLOPs (للمسابقة التدريب: 6 x بارامز x توكنات) ، متوقع ساعات GPU (FLOPs / ذروة التعبير / الاستخدام) ، والتكلفة بالدولار في معدل الإيجار الحالي. إذا تجاوزت التقدير البوابة الميزانية، فإن خط الأنابيب يرفض البدء.
In-run tracking.يتم تسجيل الساعة الحائطية للمرحلة بعد المرحلة والتكلفة في المذكرة. بعد كل مرحلة، يتم التحقق من الميزانية المتبقية. إذا تجاوزت مرحلة، يتم تقييم بوابة المرحلة التالية مع الميزانية المتبقية الجديدة. لا تجد أنك نفدت المال عندما يطلب VC.
تكلفة "إلاما 3" المبلغ عنها كانت $61M. DeepSeek-V3 reported $5.6 مليون للسباق الرئيسي قبل التدريب. النسبة هي في الغالب كفاءة الأجهزة بالإضافة إلى مزيج من الخبراء -- ولكن التكلفة المحددة واضحة لأن كل فريق تعقبها على مرحلة، وليس على سبيل المثال.
إعادة التكاثر مقابل التحديد
هذه ليست نفسها. قابل للتنظيم يعني نفس المظهر بالإضافة إلى نفس الشفرة بالإضافة إلى نفس البنية التحتية تنتج نقطة تفتيش مع قياسات متكافئة في المستوى التدريجي. تعني التحدد الناتج متطابق بيت.
التدريب الحديث لدرجة الماجستير في مجال القانون يمكن إعادة تكوينه ولكن ليس ديترمينستيا. يجمع نظام تدريب الموزع من أجل الحد من النظام، وعدم تحديد جوهر GPU (cuBLAS، flash-attn) ، والإدراج الدقيق المختلط لإنتاج طائرات تختلف على مستوى 1e-5 بين الجوائز. هذا جيد بالنسبة للمقاييس النهائية، التي لا تتحرك. إنه أمر مميت إذا كنت تحاول إصلاح التباينات على مستوى البيت. العلاج هو تسجيل كل مرحلة من المشاريع والخروج والمقاييس الرسمية -- إذا كانت هذه تتطابق، فإن الجولة "تتكرر" حتى لو لم تكن الوزن متطابقة.
graph LR
M["Manifest v1.2.3"] --> O["Orchestrator"]
O --> S["Stages 01 → 12"]
S --> AS["Artifact Store\n(content-addressed)"]
S --> ET["Experiment Tracker\n(metrics, curves)"]
AS --> GATE["Eval Gate"]
ET --> GATE
GATE -->|pass| SHIP["Ship"]
GATE -->|fail| ROLL["Rollback plan"]
style M fill:#1a1a2e,stroke:#0f3460,color:#fff
style GATE fill:#1a1a2e,stroke:#e94560,color:#fff
style SHIP fill:#1a1a2e,stroke:#51cf66,color:#fff
style ROLL fill:#1a1a2e,stroke:#c0392b,color:#fffخطة الرد
قبل بدء السباق، اكتب ما يحدث في فشل كل مرحلة. ثلاث فئات.
- Cheap to re-run(ساعات): الـ Tokenizer، تقييم، كمية، خادم الاستنتاج.
- Medium(أيام): SFT، DPO، CAI. حافظ على النموذج الأساسي؛ إعادة تشغيل فقط مراحل التنحية.
- Expensive(أسابيع وملايين الدولارات): التدريب المسبق. خطة الاحتياط هنا ليست "إعادة التدريب". إنها "استخدام آخر نقطة تفتيش جيدة وإعادة التدريب في مراحل التدريب الأرخص مع بيانات مراجعة".
لأن الاعتمادات على المرحلة يتم كتابتها وتحويلها، يمكن للموسيقي حساب مجموعة التراجع تلقائيًا: إلغاء المرحلة الفاشلة بالإضافة إلى كل نَسَل. الفشل في المرحلة 06 (SFT) يؤدي إلى إلغاء 06, 07, 08, 09, 10, 11, 12. الفشل في المرحلة 11 (الكمبئية) يؤدي إلى إلغاء 11 و 12 فقط. وتجنب تسمية هذا في الأمام التبديل بينما يكون الفريق متعبًا في 4 صباحا.
وصفات الإنتاج الملاحظة في عام 2026
معظم فرق الحدود تجمع على نفس العظم.
- الـ 128K بيبي مع إرجاع بايت، تدرب على شريحة صغيرة متوازنة متعددة اللغات
- التدريب المسبق: رموز 10-20T، معظمها شبكة زائد رمز زائد اصطناعي. معالجة الميون أو آدم و. FSDP2 أو ديبسيبيد زرو-3. التفتيش التدريبي. وزن BF16، FP32 الماستر.
- SFT: 500k-2M أزواج تعليمات، مختلطة البشر والصناعية، مع تقليل صارم ضد مجموعة تقييم.
- التنحية: DPO أو CAI + GRPO. RLHF فقط عندما تكون إشارة الاختيار متعددة الأبعاد جداً لـ DPO.
- إيفال: MMLU-Pro، MATH، HumanEval+، GPQA، SWE-Bench Verified، LiveBench، بالإضافة إلى مجموعة خاصة تمتلكها الجمهور لا ترى أبدا.
- الكمية: GPTQ أو AWQ 4 بتات للخدمة، 8 بتات لتقييمات السلامة حيث أن الدقة مهمة.
- خدمة: vLLM، TensorRT-LLM، أو في المنزل.
الأرقام تتغير كل ستة أشهر لكن العظم لا يتغير
بناءها
رمز الدروس هو جهاز ترقية ومحقق مظهر ، وليس اثني عشر نصوص تدريبية. يتم محاكاة كل مرحلة مع محفظة مساحة تنتج عنصرًا خارجيًا بحجم صحيحًا ومركزًا. تشغيل جهاز ترقية من نهاية إلى نهاية يثبت أن الأنابيب تعمل قبل حرق أموال GPU على المراحل الحقيقية.
انظرcode/main.pyلتنفيذ كامل.
Manifestفئة البيانات: نسخة خط الأنابيب، البذور، التزامات التوصيل، المراحل، البوابات.Stageفئة البيانات: الاسم، النوع، المدخلات (الهيش) ، الخروج (الهيش) ، ساعة الجدار، التكلفة.Orchestrator.run(): يحل DAG، يرسل المراحل، يصدق الهاشيشات، تحديثات تظهر.EvalGate.check(): يقرأ العدوان، يُقارن مع آخر تقرير تقييم، يُرجع التجاوز/الفشل.ArtifactStore(في الذاكرة): وضع/حصول على الهيش، يحاكي S3.CostTracker: لكل مرحلة وتراكمية، توقف عند تجاوز الحد الأقصى.
خط الأنابيب فيmain.pyيستخدم 12 مرحلة من المقرر، ويُنتج منشور، ويقوم بممارسة بوابة تقييم غير فعالة لتظهر كيف يبدو المقرر.
استخدمها
سير العمل القنوني لديه ثلاث أوامر.
python code/main.py plan # validate manifest, compute cost estimate, print DAG
python code/main.py run # execute stages, writing to manifest.out.yaml
python code/main.py gate # read manifest.out.yaml, apply eval gates, ship-or-holdأركضplanمعظم أخطاء خطوط الأنابيب تظهر في الوقت المناسب - حدود البوابة المفقودة، الهيشات القديمة، تجاوزات الميزانية.planهو مجاني، ركضrunإنقاذ المال من خلال صيد الحشرات على الجانب الرخيص.
إنتاج gateهو إماSHIPأوHOLD: <reason>. لا تعتبر الجولة التي تمت إتمامها فشلاً، بل نقطة قرار. إما أن يقوم المراجع المسمى بإلغاء (وتسجل الإلغاء) ، أو يوافق على إعادة التدفق.
أرسله
هذا الدرس يُنتجoutputs/skill-llm-pipeline-reviewer.md. إعطاءها بيان خط الأنابيب المقترح ويتحقق من جميع العقود: التصفيف المرحلي، سلسلة الهاش، البوابات، خطة التراجع، تقدير التكلفة. يرفض الموافقة على بيان مع البوابة الافتراضية المفقودة، ميزانية KL غير المحدودة، أو تشغيل يخلط بيانات الافتراض والتدريب.
التمارين
- تمديد الموسيقي لدعم تنفيذ المراحل 07 و 08. استخدم stdlib
concurrent.futuresوحدات. تأكد من أن المظهر النهائي يسجل نتائج كل من المراحل وأن hash المدخل من المرحلة 09 هو مزيج تحديدية من كليهما.
- إضافة بوابة "تحقق من التلوث". بالنظر إلى مجموعة بيانات eval hash وقطع مجموعة بيانات التدريب، احسب التداخل (التطابق الدقيق في السطر أو 13 جرام). يفشل البوابة إذا تجاوز التداخل 0.1٪. إطعامها مجموعة تدريب ملوثة وتأكيد أن البوابة تحمل الجولة.
- تنفيذ تقدير التكلفة من المبادئ الأولى. للمرحلة 04 (التدريب المسبق) ، تقدير FLOPs على أنها 6 × پارامز x رموز ، افترض 40% MFU (استخدام FLOPs النموذج) على H100 عند 989 TFLOPs BF16, عند 2.50 دولار / جي بي يو-ساعة. تقرير تقدير لنموذج 7B المدرب على رموز 2T. مقارنة مع أرقام Llama 2 المنشورة.
- قم ببناء إعادة التداول الجزئي. قم بتحاكي فشل في المرحلة 09 (CAI) ، ثم قم بإعادة تشغيل المرحلة 09 إلى 12 بينما ترك 01-08 مسجلاً. يجب على الموسيقي اكتشاف الأدوات المسجلة بواسطة الهاش وتخطوها. قم بتقييم ساعة الحائط التي تم حفظها مقابل إعادة تشغيل كاملة.
- إضافة قابلية للملاحظة. إصدار OpenTelemetry امتدادات لكل مرحلة، مع صفات لبرامج، رموز رأى، الخسارة، والتكلفة. أنبوب الممتدات إلى جمع محلي. النقطة ليست لوحة التحكم؛ النقطة هي أن صحة كل مرحلة يمكن تتبعها من هوية تتبع واحدة.
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Manifest | "The recipe file" | YAML or JSON describing pipeline version, seed, per-stage config, and gate thresholds — sufficient to replay a run |
| Content-addressed | "By hash not name" | Artifacts stored by SHA-256 of their contents, so you can never confuse version A with version B |
| Eval gate | "The ship criteria" | Numeric thresholds on benchmark metrics and safety scores that must pass before an artifact is marked shippable |
| KL budget | "How far alignment drifted" | A cap on cumulative KL(policy |
| MFU | "How much of the GPU you used" | Model FLOPs Utilization — achieved FLOPs divided by theoretical peak. 40% is typical at 70B scale, 55% at 7B |
| Rollback plan | "What we do when it breaks" | Pre-written set of actions per stage on failure: re-run, fall back, retrain with revised inputs |
| Orchestrator | "The conductor" | The process that reads the manifest, dispatches stages, verifies hashes, halts on any contract violation |
| Artifact store | "Versioned S3 for weights" | Immutable content-addressed object store — single source of truth for checkpoints, datasets, eval reports |
| Reproducible | "Same metrics on replay" | Different bit-level weights but equivalent downstream metrics — the realistic target for distributed LLM training |
| Cost gate | "You cannot exceed X" | Pre-run cost estimate plus in-run tracker — the pipeline refuses to start if the estimate exceeds budget |
المزيد من القراءة
- Dubey et al., 2024 -- "The Llama 3 Herd of Models"-- التفصيل العام لأكثر تفصيلاً لخط الأنابيب الحدودية بما في ذلك البيانات والتدريب والتنسيق والتقييم
- DeepSeek-AI, 2024 -- "DeepSeek-V3 Technical Report"-- أنبوب الكفاءة الأول على نحو 1/10 من تكلفة تدريب درجة Llama 3
- Kaplan et al., 2020 -- "Scaling Laws for Neural Language Models"-- العلاقة الأصلية بين الحوسبة والبيانات والفئات
- Hoffmann et al., 2022 -- "Training Compute-Optimal Large Language Models (Chinchilla)"-- تصحيح كابلان الذي أعاد توازن الميزانيات البيانات الحديثة
- PyTorch FSDP2 documentation-- التدريب القديم الموزع الذي يحل محل FSDP1 في PyTorch 2.4+
- Weights & Biases LLM Reports-- المخططات الحقيقية ومخرجات متابعة التجربة لدرجات LLM مفتوحة المصدر، مفيدة كملوائح يمكن التلاعب بها
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.