एलएलएम के लिए छाया यातायात, कैनरी रोलआउट और प्रगतिशील तैनाती
Type: Learn
Languages: Python (stdlib, toy canary-progression simulator)
Prerequisites: Phase 17 · 13 (Observability), Phase 17 · 21 (A/B Testing)
Time: ~60 minutes
सीखने के लक्ष्य
- छाया मोड (शून्य प्रभाव तुलना), कैनरी (लाइव ट्रैफिक प्रगतिशील) और ए/बी (स्थिरता-सत्यापित तुलना) में अंतर करें।
- 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 मिश्रित $. उल्लंघनः मूल रेखा से 20% अधिक।
- Error / refusal rate 5xx प्लस स्पष्ट अस्वीकृति उल्लंघनः 2x मूल रेखा।
- Output length distribution औसत + P99। उल्लंघनः वितरण परिवर्तन।
- User-feedback rate अंगूठे नीचे / टिकट दाखिल. उल्लंघनः 1.5x मूल रेखा.
अनिश्चिततावाद नया विसंगति है
समान इनपुट से असमान आउटपुट उत्पन्न होते हैं।
- GPU FP गैर-संबद्धता (फ्लोटिंग पॉइंट घटाने का क्रम बैच के अनुसार भिन्न होता है)
- बैच आकार भिन्नता (एक बैच में 128 बनाम बैच में 16)
- नमूने लगाना (तापमान > 0)
मापा गयाः समान मूल्यांकन सेट पर रन-टू-रन 15% तक सटीकता भिन्नता। एक रोलआउट में "स्थिर" का मतलब है कि मीट्रिक अपेक्षित भिन्नता के भीतर हैं, बेसलाइन के समान नहीं हैं। शोर तल से ऊपर गेट सेट करें।
लागत एक चर है
20% बेहतर मॉडल प्रति कॉल 3 गुना अधिक महंगा हो सकता है। लागत/अनुरोध पांच गेटों में से एक है। इकाई अर्थव्यवस्था को तोड़ने वाला "बेहतर" मॉडल शिपिंग एक रोलबैक मामला है।
रोलबैक हथियार है
- नीति ध्वज (विशेषता ध्वज प्रणाली): कॉन्फ़िग में फ्लिप प्रतिशत; सेकंड लेता है।
- मॉडल पिनिंग (रजिस्ट्री डाइजेस्ट): पिंटेड मॉडल स्वतः अपग्रेड नहीं करता है।
- रॉलबैक = रिवर्ट फ्लैग + सेट पिन पिच डिजेस्ट पिछले. सेकंड, घंटे नहीं.
यदि आपके स्टैक को रोलबैक के लिए पुनः तैनात करने की आवश्यकता है, तो रोल करने से पहले इसे ठीक करें।
उपकरण
Argo Rollouts/Flagger कुबेरनेट्स प्रगतिशील वितरण नियंत्रक. इसटो/लिंकर्ड वेटेड रूटिंग के साथ एकीकृत।
Istio weighted routing सेवा-जाल स्तर पर यातायात विभाजन।
KServe / Seldon Core मॉडल में निर्मित कैनरी के साथ सेवा।
Feature flags लांच डार्कली, फ्लैगस्मिथ, रिलीश. नीति स्तर पर फ्लिप, कोई पुनः तैनाती नहीं.
मेट्रिक्स कैडेन्स
ट्रैफिक मात्रा के आधार पर कैनरी गेट्स हर 5-15 मिनट में जांच करते हैं। 10 req / min के साथ 1% ट्रैफ़िक प्रति विंडो 50-150 डेटा पॉइंट देता है देरी के लिए पर्याप्त लेकिन उपयोगकर्ता प्रतिक्रिया के लिए शोर। 10% ~ 10x अधिक देता है। प्रगति को प्रत्येक चरण में पर्याप्त नमूने जमा करने के लिए पर्याप्त समय तक रुकना चाहिए।
ए/बी चरण वैकल्पिक है
यदि नया मॉडल स्पष्ट रूप से अलग है (अलग व्यवहार, अलग लागत वक्र, अलग स्वर), तो कैनरी पास के बाद 50% पर ए / बी परीक्षण करें। यदि यह सिर्फ एक बेहतर संस्करण है, तो कैनरी गेट पास होने पर 100% पर कूदें।
संख्याओं को याद रखना चाहिए
- कैनरी प्रगतिः 1% → 10% → 25% → 50% → 75% → 100%.
- निर्धारिता सीमाः समान इनपुट पर 15% तक रन-टू-रन वैरिएंट।
- पांच कैनरी मीट्रिकः विलंबता, लागत, त्रुटि/अस्वीकार, आउटपुट लंबाई, उपयोगकर्ता प्रतिक्रिया।
- लागत गेटः मूल रेखा से 20% अधिक उल्लंघन है।
- रॉलबैकः सेकंड, घंटों नहीं।
इसका प्रयोग करें
code/main.pyएक इंजेक्शन regressions के साथ एक कैनरी रोलआउट अनुकरण। रिपोर्ट जो रोलआउट के चरणों पर रोकता है और जो गेट ट्रिगर किया गया है।
इसे भेजें
यह सबक हमें फल देता हैoutputs/skill-rollout-runbook.md. उम्मीदवार मॉडल, बेसलाइन और जोखिम सहिष्णुता को देखते हुए, छाया→कैनरी→100% योजना का डिजाइन करता है।
व्यायाम
- दौड़ें
code/main.py. 25% लागत रिग्रेशन इंजेक्ट करें. कैनरी किस चरण में रुकता है? - आपके नए मॉडल में 3% सटीकता बढ़ जाती है लेकिन लागत / अनुरोध + 18% है। क्या यह एक जहाज है? नीति पर निर्भर करता है दोनों मार्गों को लिखें।
- एक रोल-बैक डिजाइन करें जिसमें 60 सेकंड से कम समय लगे। आवश्यक बुनियादी ढांचे की सूची बनाएं।
- गैर-निर्धारकता आपके मूल्यांकन पर ± 7% दिखाता है। कैनरी गेट सेट करें ताकि आप झूठी अलार्म न करें। आप किस गुणक का उपयोग करते हैं?
- छाया मोड में 40% लागत spike कैनेरी से पहले पकड़ता है. चेतावनी नियम लिखें कि छाया में फायर.
प्रमुख शर्तें
| 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.