تخفيف البدء البارد لبرامج القانون العلمي بدون خادم
min_workers=1), تحميل مستويات (أنابيب NVMe→DRAM→HBM من ServerlessLLM ، خفض التأخير 10-200x) ، والهجرة الحية التي تحرك رموز المدخل (KB) بدلا من كاش KV (GB). ينشر Modal 2-4s البرد بدايات كطابق؛ الباسيطان 5-10s افتراضي ، فرعية ثانية مع التدفئة المسبقة. هذه الدروس تعلمك قياس، ميزانية، وتجميع الطبقات الخمسة.Type: Learn
Languages: Python (stdlib, toy cold-start path simulator)
Prerequisites: Phase 17 · 02 (Inference Platform Economics), Phase 17 · 03 (GPU Autoscaling)
Time: ~60 minutes
أهداف التعلم
- قم بإدراج الطبقات الخمس للتخفيف من بدء البرد وسمي أداة أو نمط في كل طبقة.
- احسب الوقت الإجمالي للبدء البارد كجمع (إمدادات العقدة) + (وزن التنزيل) + (وزن الحمل إلى HBM) + (بدء المحرك) لنموذج 70B.
- شرح لماذا تحويل الهجرة الحية توكنات المدخلات (KB) وليس KV cache (GB) وما هي العقوبة (إعادة الحساب).
- أسمائ التداول في حوض الاستحمام الحر (دفع مقابل جهاز التشغيل المضغوط أو تقبل ذيل البدء البارد) والعتبة SLA التي
min_workers > 0يصبح إلزاميًا.
المشكلة
إنّ محاميكِ بدون خادم يصلون إلى الصفر خلال الليل، في الثامنة صباحاً، تُصعد حركة المرور، ويتوقع الطلب الأول:
- كاربينتر يقدم عقدة GPU: 45-60s.
- الحاوية تسحب صورة 30 جيجا غابايت مع الوزن: 120-300s.
- يحمل المحرك الوزن إلى HBM: 45-120s اعتمادا على حجم النموذج وسرعة التخزين.
- vLLM أو TRT-LLM يبدأ الرسوم البيانية CUDA، مجموعة cache KV، tokenizer: 10-30s.
إجمالي: 220-510s (حوالي 3-8 دقائق) قبل عودة رمز واحد. SLA الخاص بك هو 2s. أنت شحن حمام دافئ (min_workers=1و يبدو أن المشكلة تختفي ولكن الآن تدفع مقابل GPU واحدة عديمة الفائدة 24x7. إذا كان لديك الخدمة 5 منتجات كل منها مع نسخة واحدة دافئة، وهذا هو 5 × 24 × 30 = 3600 ساعة GPU / شهر سواء كان مستخدم واحد أو لا.
التخفيف من بدء البرد هو كيفية الحفاظ على اقتصاد الخادم بدون تقريب تأخير دائما على.
المفهوم
الطبقة 1 صور العقدة المسبقة (Bottlerocket)
على AWS، تقوم بنية Bottlerocket ذات حجم مزدوج بتفصل نظام التشغيل عن البيانات. صور حجم البيانات مع صورة الحاوية الخاصة بك مسبقاً. راجع معرف الصورة الفورية في جهازك EC2NodeClass. تعبئة العقد الجديدة مع الأوزان بالفعل على NVMe المحلية الخطوة 2 و جزء من 3 تختفي. يعمل مع Karpenter بشكل أصلي. توفير نموذجي: 2-4 دقيقة لكل بدء بارد للنماذج الكبيرة.
ما يعادله على GCP: صور VM مخصصة مع طبقات حاوية مخبأة مسبقا. على Azure: صور سريعة من القرص المدارة بنفس النمط.
الطبقة 2 نموذج التدفق (Run:ai Model Streamer)
بدلاً من تحميل الملف الكامل قبل الإجابة على الطلب الأول ، قم بتدفق الوزن إلى طبقة ذاكرة GPU طبقة بعد طبقة وبدء المعالجة بمجرد أن يكون أول كتلة محول مقيمة. يتم شحن NVIDIA Run:ai Model Streamer الأصلي في vLLM 2026. يعمل مع S3 ، GCS ، و NVMe المحلي. يقلل من وقت الحمل الوزن بنصف تقريبًا للنماذج الكبيرة عن طريق التداخل I / O مع إعداد الحساب.
الطبقة 3 صور لقطات ذاكرة GPU (Modal)
يقوم مودال بتفتيش حالة GPU (الوزن، الرسوم البيانية CUDA، منطقة cache KV) بعد الحمل الأول. تقوم عمليات إعادة تشغيل لاحقة بتحطيم المعلومات مباشرة إلى HBM 10x أسرع من إعادة تشغيل. هذا هو أقرب شيء لـ "تشغيل GPU دافئة في ثواني". التجارة: الصور الفورية هي لكل topology GPU، لذلك إذا قام Karpenter بتحريركك إلى SKU مختلف، تقوم بإعادة التفتيش.
الطبقة 4 حمامات دافئة (مئات العمال = 1)
أبسط التخفيف: إبقاء نسخة واحدة جاهزة دائما. التكلفة هي معدل ساعة واحد من GPU 24x7.$0.85-$1.50/ساعة لتجنب بدء بارد في 30s) ومهينة إلى الكبيرة (دفع 4 دولار / ساعة لتجنب بدء بارد في 5 دقائق). عتبة SLA حيث تصبح المسبحات الدافئة إلزامية: عادة TTFT P99 < 60s على نموذج 70B +.
الطبقة 5 التحميل المتعدد المستويات (LLM بدون خادم)
تعامل ServerlessLLM مع التخزين على أنه سلسة التسلسل: NVMe (سرعة ولكن كبيرة) ، DRAM (متوسطة ولكن مستوى) ، HBM (صغيرة ولكن فورية). يتم تحميل الوزن مسبقا إلى DRAM؛ تحميل على الطلب إلى HBM. تقارير ورقة تقرير 10-200x خفض التأخير على الأحمال الباردة مقابل البراغية القرص إلى HBM. تبني الإنتاج مبكر ولكن التكاملات مع vLLM موجودة.
الطبقة 6 الهجرة الحية (نمط مكافأة)
عندما تصبح العقدة غير متوفرة (إزالة النقاط ، تنفذ العقدة) ، فإن النمط التقليدي هو بدء نسخة أخرى باردة وتصفيف صف طلب. الهجرة الحية تنتقل رموز المدخل (كيلوبايت) إلى وجهة يتم تحميل النموذج وتقوم بإعادة حساب cache KV على وجهة النظر. تعد الحسابات الأخرى أرخص من نقل GB من cache KV عبر الشبكة. تطبق على التنفيذات المفصلة.
الرياضيات الحرارية
بالنسبة للخدمة مع P99 TTFT SLA من 2s، السؤال ليس "حوض دافئ نعم / لا" ولكن "كم نسخ دافئة، والمسارات التي تحصل عليها".
- مسارات تفاعلية ذات قيمة عالية (الرداد المباشر، وكيل الصوت):
min_workers=1-2. . . - مسارات البطاقات الخلفية (تصنيف ليلي): المقبولة من مقياس إلى الصفر، يمكن تحمل البدء البارد لمدة 5-10 دقائق.
- مستوى المكافأة:
min_workersلكل مستأجر لديه قدرة مخصصة.
القياس قبل التحسين
تشريح البدء البارد لنموذج 70B على عقدة جديدة (موضحية):
| Phase | Time | Mitigation |
|---|---|---|
| Node provision | 50s | Bottlerocket + pre-seeded image, warm pool |
| Image pull | 180s | Pre-seeded data volume (eliminate) |
| Weights to HBM | 75s | Model streamer (halve); GPU snapshot (eliminate) |
| Engine init | 20s | Persistent CUDA graph cache |
| First forward | 3s | Min inherent latency |
| Total cold | 328s | |
| Total with mitigations | ~15s | 22x reduction |
أرقام يجب أن تتذكر
- بدء البرد المتدري: 2-4 ثانية (مع صور GPU).
- الباسيتين افتراضي البرد: 5 إلى 10 ثانية؛ ثانوية دون التدفئة المسبقة.
- البداية الباردة 70B الخام: 3-8 دقائق.
- أداء: أيزم: 2x زيادة في الوزن
- تحميل مستويات غير خادم: 10-200x تخفيض تأخر (أرقام ورقة).
استخدمها
code/main.pyيُظهر مسار بدء البرد مع كل تخفيف وبدون ذلك. يُذكر إجمالي وقت بدء البرد، وتكلفة المسبح الحر، ومعدل طلبات التكامل الذي يزيد عن المسبح الحر على نفسه.
أرسله
هذا الدرس يُنتجoutputs/skill-cold-start-planner.md. بالنظر إلى SLA، حجم النموذج، وشكل حركة المرور، يختار ما التخفيفات التي يجب أن تتراكم.
التمارين
- أركض
code/main.py- حساب معدل طلبات التكامل فوقها نسخة دافئة أرخص من دفع ضريبة البدء الباردة عن طريق انخفاض طلبات إضافية في SLO. - تقوم بتنفيذ نموذج 13B مع P99 TTFT SLA من 3s. اختر الحد الأدنى من مكافحة (أقل طبقات) التي تحقق ذلك.
- يزيل التزاوج المسبق لقطة الزجاجات التقطير الصورة ولكن الأوزان لا تزال تحميل من اللقطة إلى HBM. احسب ساعة الجدار لنموذج 70B إذا كانت NVMe المدعومة لقطة الفور تقرأ عند 7 جيجابايت / ثانية.
- يقدم مزودك بدون خادم لقطات اللقطات GPU (مودال) ويمنع فريقك لأن "التقطات اللقطة تسرب PII".
- صمم سياسة حرارة المسبح المرتبة: كم عدد النسخ الدافئة للمستخدمين المدفوعين، والمستخدمين التجريبية، والحملات المكونة من العمل؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Cold start | "the big pause" | Time from request to first token on a fresh replica |
| Warm pool | "always-on minimum" | min_workers >= 1 to keep at least one replica ready |
| Pre-seeded image | "baked AMI" | Node image with container weights pre-resident |
| Bottlerocket | "AWS node OS" | AWS container-optimized OS with dual-volume snapshot support |
| Model streamer | "streaming load" | Overlap weights I/O with compute setup |
| GPU snapshot | "checkpoint to HBM" | Serialize post-load GPU state; deserialize on restart |
| Tiered loading | "NVMe + DRAM + HBM" | Hierarchy of storage tiers; load on demand |
| Live migration | "move tokens" | Transfer input (KB), recompute KV on destination |
min_workers | "warm replicas" | Serverless minimum keep-alive count |
| Scale-to-zero | "full serverless" | No cost when idle; accept full cold-start tax |
المزيد من القراءة
- Modal — Cold start performance مقاييس ومعمارة نقاط التفتيش التي نشرتها مودال.
- AWS Bottlerocket نمط تصوير مفاجئ حجم البيانات المسبقة.
- NVIDIA Run:ai Model Streamer تعبئة الوزن المتداخل مع إعداد الحساب.
- Baseten — Cold starts كتاب لعبة التدفئة المسبقة
- ServerlessLLM paper (USENIX OSDI'24) تصميم الشحن المرتبط.
- NVIDIA — Disaggregated LLM Inference on Kubernetes الهجرة الحية لتنفيذات منفصلة.
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.