Phase 17: Infrastructure & Production

ترافیک سایه، انتشار کاناری و گسترش تدریجی برای LLM

راه اندازی LLM سخت ترین بخش های پیاده سازی نرم افزار را ترکیب می کند: هیچ آزمایش واحد، حالت شکست متفرق، سیگنال های تاخیر. ترتیب این است که (1) حالت سایه درخواست های تکراری از مدل کاندید، ثبت نام، مقایسه با صفر تاثیر کاربر؛ مشکلات توزیع آشکار را می گیرد اما تضمین کیفیت نیست؛ (2) انتشار کاناری تغییر ترافیک پیشگام 10% → 25% → 50% → 75% → 100% با دروازه ها در هر مرحله؛ درصد تاخیر ردیابی، هزینه / درخواست، خطا / نرخ رد، توزیع طول خروجی، نرخ بازخورد کاربر؛ (3) آزمایش A / B برای گزینه های مختلف پس از ثبات تایید شده. غیر تعیین کننده نامحدود است تا 15٪ تغییر دقت در میان اجرا با ورودی های یکسان به دلیل عدم ارتباط GPU FP به علاوه تفاوت اندازه دسته. هزینه متغیر است نه ثابت یک مدل 20 درصد بهتر می تواند 3 برابر گران تر در هر تماس باشد. سرعت رول بیک مهم است: اگر رول بیک نیاز به تعویض مجدد دارد، شما خیلی کند هستید. سیاست در پیکربندی/ پرچم زندگی می کند؛ مدل در ثبت با دایرکت های پینی شده زندگی می کند؛ رول بیک = سیاست فلپ + آستانه برگشت + مدل قدیمی را در ثانیه ها پین کنید.

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 متریک در هر مرحله:

  1. Latency percentiles P50، P95، P99 نقض: کاناری P99 > 1.5x در خط پایه دارد.
  2. Cost per request مخلوط شده.
  3. Error / refusal rate5xx + رد صریحي
  4. Output length distribution متوسط + P99 . نقض: تغییر توزیع
  5. 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% برنامه.

تمرینات

  1. فرار کنcode/main.py. 25 درصد کاهش هزینه را تزریق کنید . در چه مرحله ای کاناری متوقف می شود؟
  2. مدل جدید شما 3 درصد دقت را از طریق اینترنت افزایش می دهد اما هزینه / درخواست +18 درصد است. آیا این یک کشتی است؟ بستگی به سیاست نوشتن هر دو مسیر دارد.
  3. طراحی یک رول بیک که کمتر از 60 ثانیه طول می کشد.
  4. غیر تعیین کننده در ارزیابی شما ±7 درصد نشان می دهد. دروازه های کاناری را تنظیم کنید تا هشدار نادرست نباشد.
  5. حالت سایه 40 درصد افزایش هزینه قبل از کاناریو رو پیدا می کنه

اصطلاحات کلیدی

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

خواندن بیشتر

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.