ترافیک سایه، انتشار کاناری و گسترش تدریجی برای LLM
Type: Learn
Languages: Python (stdlib, toy canary-progression simulator)
Prerequisites: Phase 17 · 13 (Observability), Phase 17 · 21 (A/B Testing)
Time: ~60 minutes
اهداف یادگیری
- حالت سایه (مقارنتی با صفر تاثیر) ، حالت قناری (ترویج زنده در حال پیشرفت) و حالت A/B (مقارنتی با ثبات تایید شده) را متمایز کنید.
- پنج متریک کناری مخصوص LLM را ذکر کنید (خاموشی، هزینه/تطلب، خطا/رفض، توزیع طول تولید، بازخورد کاربران).
- توضیح دهید که چرا غیر تعیین کننده بودن LLM (تا 15٪) معنی "ثابت" را در یک راه اندازی تغییر می دهد.
- یک مسیر برگشت را طراحی کنید که ثانیه ها (تغییر سیاست) را صرف کند نه ساعت ها (تغییر مجدد).
مشکل
شما یک مدل جدید را ارسال می کنید. ارزیابی های آفلاین 3 درصد دقت را نشان می دهند. شما آن را در تولید تغییر دهید. در عرض 24 ساعت، هزینه 40 درصد افزایش یافته است، انگشتهای انگشت کاربر به پایین 8 درصد افزایش یافته است، سه بلیط مشتری گزارش "جواب عجیب". شما برگشت. بازنویسی 3 ساعت طول می کشد. آخر هفته شما خراب شده است.
هر بخش از آن قابل اجتناب بود. حالت سایه قبل از اینکه کاربر آن را ببیند، 40٪ افزایش هزینه را گرفت. کانری با حرکت انگشت پایین در 10٪ متوقف می شد. بازگشت پرچم سیاست 30 ثانیه طول می کشید. نظم و ضبط چیزی است که شکاف بین "تجربات غیر آنلاین خوب به نظر می رسد" و " کاربران واقعی خوشحال هستند".
مفهوم
حالت سایه
نامزدها درخواست های مشابه تولید را دریافت می کنند؛ خروجی ها ثبت شده، نه به کاربران بازگردانده می شوند. صفر تأثیر کاربر.
- محتوای تولید (مختلف در برابر تولید)
- شمارش توکن ها (دلتا هزینه)
- تاخير
- رد و اشتباه
گرفتاری: افزایش هزینه، بازگشت طول، تغییرات آشکار انکار، اشتباهات سخت. نمی گیرد: کیفیت کاربران دلتا درک می کنند. سایه یک آزمایش دود است، نه یک آزمایش کیفیت.
انتشار کاناری
تغییر ترافیک متغیر با دروازه ها. پیشرفت معمول: 1٪ → 10٪ → 25٪ → 50٪ → 75٪ → 100٪. دروازه در 5 متریک در هر مرحله:
- Latency percentiles P50، P95، P99 نقض: کاناری P99 > 1.5x در خط پایه دارد.
- Cost per request مخلوط شده.
- Error / refusal rate5xx + رد صریحي
- Output length distribution متوسط + P99 . نقض: تغییر توزیع
- User-feedback rate انگشت پایین / ثبت بلیط. نقض: 1.5x خط اصلی.
عدم تعیین گرایی تفاوت جدید است
ورودی های یکسان، ورودی های غیر یکسان را تولید می کنند.
- عدم ارتباط FP GPU (تسلسل کاهش نقطه شناور با دسته متفاوت است).
- تفاوت اندازه دسته (در دسته 128 با دسته 16)
- نمونه برداری (در درجه حرارت > 0)
اندازه گیری: تا 15٪ دقت تغییر اجرا در مجموعه های ارزیابی یکسان. "ثابت" در یک انتشار به این معنی است که متریک در میان متغیر انتظار می رود، نه مشابه خط پایه. دروازه ها را بالای کف شور تنظیم کنید.
هزینه یک متغیر است
یک مدل 20٪ بهتر می تواند 3 برابر گران تر در هر تماس باشد. هزینه / درخواست یکی از پنج دروازه است. ارسال یک مدل "بهتر" که اقتصاد واحد را شکسته است یک مورد برگشت است.
رول بیک سلاحه
- پرچم سیاست (سیستم پرچم ویژگی): درصد تغییر در تنظیم؛ ثانیه طول می کشد.
- پیین کردن مدل (سربازی ثبت): مدل پیین شده به طور خودکار ارتقا نمی یابد.
- رول بیک = پرچم برگشت + تنظیم هضم بسته به قبلی. ثانیه نه ساعت.
اگر دسته شما نیاز به تعویض مجدد به رول بیک داشته باشد، قبل از رول کردن آن را اصلاح کنید.
ابزار
Argo Rollouts-Flagger کنترل کننده های تحویل پیشرفته Kubernetes. با مسیر وزن شده Istio/Linkerd ادغام شده است.
Istio weighted routing تقسیم ترافیک در سطح شبکه خدمات
KServe / Seldon Core مدل خدمت با ساخته شده کاناری.
Feature flags لانچ، تارک، فلگسميث، آزاد کردن.
تراکم متریک
دروازه های کاناری هر 5-15 دقیقه بسته به حجم ترافیک را بررسی می کنند. 1٪ ترافیک با 10 req / min 50-150 نقطه داده در هر پنجره را می دهد برای تاخیر کافی اما برای بازخورد کاربر شور و صدا. 10٪ ~ 10x بیشتر می دهد. پیشرفت باید به اندازه کافی متوقف شود تا نمونه های کافی در هر مرحله جمع شود.
مرحله A/B اختیاری است
اگر مدل جدید کاملا متفاوت است (رفتار متفاوت، منحنی هزینه متفاوت، طنز متفاوت) ، A / B آن را در 50٪ پس از گذر قناری آزمایش کنید. اگر فقط یک نسخه بهبود یافته باشد، وقتی دروازه قناری عبور می کند، به 100٪ حرکت کنید.
شماره هایی که باید به یاد داشته باشی
- پیشرفت قناری: ۱٪ → ۱۰٪ → ۲۵٪ → ۵۰٪ → ۷۵٪ → ۱۰۰٪
- سقف عدم تعیین گرایی: تا 15 درصد تفاوت در جریان در ورودی های یکسان.
- پنج متریک کناری: تاخیر، هزینه، خطا/رفض، طول خروجی، بازخورد کاربران.
- دروازه هزینه: > 20 درصد بالاتر از خط اصلی نقض است.
- رول بیک: ثانیه نه ساعت
ازش استفاده کن
code/main.pyشبیه سازی یک انتشار کاناری با بازپسین تزریق شده گزارش هایی که مرحله ی توقف انتشار را در و دروازه ای که فعال شده است.
-باده
این درس به ما کمک می کندoutputs/skill-rollout-runbook.md. با توجه به مدل کاندید، خط پایه و تحمل ریسک، طرح های shadow→canary→100% برنامه.
تمرینات
- فرار کن
code/main.py. 25 درصد کاهش هزینه را تزریق کنید . در چه مرحله ای کاناری متوقف می شود؟ - مدل جدید شما 3 درصد دقت را از طریق اینترنت افزایش می دهد اما هزینه / درخواست +18 درصد است. آیا این یک کشتی است؟ بستگی به سیاست نوشتن هر دو مسیر دارد.
- طراحی یک رول بیک که کمتر از 60 ثانیه طول می کشد.
- غیر تعیین کننده در ارزیابی شما ±7 درصد نشان می دهد. دروازه های کاناری را تنظیم کنید تا هشدار نادرست نباشد.
- حالت سایه 40 درصد افزایش هزینه قبل از کاناریو رو پیدا می کنه
اصطلاحات کلیدی
| Term | What people say | What it actually means |
|---|---|---|
| Shadow mode | "duplicate to new" | Zero-impact send-to-candidate for logging |
| Canary | "progressive traffic" | Gradual user-exposed rollout with gates |
| Gates | "rollout checks" | Metric thresholds that block progression |
| Non-determinism | "LLM variance" | Irreducible run-to-run differences |
| Policy flag | "flag flip rollback" | Config-level rollback, seconds not hours |
| Model pin | "registry digest" | Immutable reference to a model version |
| Argo Rollouts | "K8s progressive" | Kubernetes-native canary/rollback controller |
| KServe | "inference K8s" | Model serving with canary primitives |
| Istio weighted | "mesh split" | Service-mesh traffic splitter |
خواندن بیشتر
- TianPan — Releasing AI Features Without Breaking Production
- MarkTechPost — Safely Deploying ML Models
- APXML — Advanced LLM Deployment Patterns
- Argo Rollouts docs
- Flagger docs
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.