लोड टेस्टिंग LLM एपीआई क्यों k6 और टिड्डियां झूठ बोलती हैं
--mean-input-tokens+ --stddev-input-tokens. 2026 में उपकरण मानचित्रणः टोकन स्तर की सटीकता के लिए एलएलएआई-पर्फ, एलएलएमपीएफ, एलएलएम-लोकास्ट, गाइडेलम (एलएलएआई-पर्फ, एलएलएमपीएफ, एलएलएम-लोकास्ट, गाइडेलम) में विशेषज्ञता प्राप्त करना;k6 v2026.1.0+ k6 Operator 1.0 GA (Sept 2025) स्ट्रीमिंग-जागरूक, टेस्ट रन/प्राइवेटलोडज़ोन सीआरडी के माध्यम से वितरित कुबेरनेट्स-नेटिव, सीआई/सीडी गेट के लिए सबसे अच्छा; Vegeta for Go निरंतर दर से संतृप्त; स्ट्रीमिंग के लिए केवल एलएलएम-लोस्ट एक्सटेंशन के साथ लोक्सट 2.43.3। लोड पैटर्नः स्थिर-राज्य, रैंप, स्पाइक (ऑटोस्केलिंग परीक्षण), भिगो (मेमोरी लीक) ।Type: Build
Languages: Python (stdlib, toy realistic-prompt generator + latency collector)
Prerequisites: Phase 17 · 08 (Inference Metrics), Phase 17 · 03 (GPU Autoscaling)
Time: ~75 minutes
सीखने के लक्ष्य
- दो विरोधी पैटर्न (जीआईएल जाल, शीघ्र-समानता जाल) को समझाएं जो एलएलएम एपीआई के लिए सामान्य लोड परीक्षकों को झूठ बोलते हैं।
- किसी दिए गए उद्देश्य के लिए एक उपकरण चुनेंः LLMPerf (बेंचमार्क रन), k6 + स्ट्रीमिंग एक्सटेंशन (CI गेट), guidellm (बड़े पैमाने पर सिंथेटिक), GenAI-Perf (NVIDIA संदर्भ) ।
- चार लोड पैटर्न (स्थिर, रैंप, स्पाइक, भिगो) डिजाइन करें और प्रत्येक कैच के विफलता मोड का नाम दें।
- निश्चित लंबाई के बजाय इनपुट टोकन के औसत + stddev का उपयोग करके एक यथार्थवादी शीघ्र वितरण बनाएं।
समस्या
आप 500 समवर्ती उपयोगकर्ताओं पर अपने LLM अंत बिंदु के परीक्षण किया. यह था. आप शिप किया. उत्पादन में 200 वास्तविक उपयोगकर्ताओं पर सेवा गिर गया P99 TTFT विस्फोट, GPUs pinned.
दो चीजें हुईं. पहला, k6 ने 500 समान संकेत भेजे आपके अनुरोध-कॉलेक्सिंग और प्रीफिक्स कैशिंग ने ऐसा देखा कि आप 500 समवर्ती डिकोड संभाल रहे थे जब आप वास्तव में एक को संभाल रहे थे। दूसरा, k6 स्ट्रीमिंग प्रतिक्रियाओं पर इंटर-टोकन विलंबता को ट्रैक नहीं करता है जैसे आंख इसे अनुभव करती है; यह एक HTTP कनेक्शन देखता है, न कि 500 टोकन अलग-अलग अंतराल पर पहुंचते हैं।
LLM के लिए लोड टेस्टिंग का अपना ही अनुशासन है।
अवधारणा
जीआईएल जाल (लोकोस्ट)
लोकोस्ट पायथन का उपयोग करता है और जीआईएल के तहत ग्राहक-पक्ष टोकनकरण चलाता है। उच्च समवर्तीता के तहत अनुरोध उत्पादन के पीछे टोकनराइज़र कतारें होती हैं। रिपोर्ट किए गए इंटर-टोकन लटेंसी में क्लाइंट-पक्ष टोकनकरण बैकलॉग शामिल है। आपको लगता है कि सर्वर धीमा है; यह परीक्षण हर्न है।
फिक्सः एलएलएम-लॉकस्ट एक्सटेंशन टोकनाइज़ेशन को अलग प्रक्रियाओं में स्थानांतरित करता है, या एक संकलित-भाषा हर्नस का उपयोग करता है (k6, एलएलएमपीएफ टोकनाइजर्स.आरएस का उपयोग करके) ।
शीघ्रता-समरूपता जाल
सभी ज्ञात लोड टेस्टर्स आपको एक प्रॉम्प्ट को कॉन्फ़िगर करने देते हैं। 10,000 पुनरावृत्ति के लूप टेस्ट में प्रत्येक बार एक ही प्रॉम्प्ट भेजता है। सर्वर हर बार एक ही पूर्वावलोकन देखता है जब भी पूर्वावलोकन कैश 100% के करीब पहुंचता है, तो आउटपुट बहुत अच्छा दिखता है।
फिक्सः शीघ्र वितरण से नमूना। LLMPerf का उपयोग करता है --mean-input-tokens 500 --stddev-input-tokens 150 विविध लंबाई, विविध सामग्री।
चार लोड पैटर्न
- Steady-state 30-60 मिनट के लिए निरंतर आरपीएस। पकड़ः मूल प्रदर्शन प्रतिगमन।
- Ramp आरपीएस को 0 से 15 मिनट से अधिक समय में लक्ष्य तक रैखिक रूप से बढ़ाएं।
- Spike अचानक 3-10x आरपीएस के लिए 2 मिनट के लिए फिर वापस. कैचः ऑटोस्केलिंग विलंबता, कतार संतृप्ति, ठंड स्टार्ट प्रभाव.
- Soak 4-8 घंटे के लिए स्थिर स्थिति में। कैचः मेमोरी लीक, कनेक्शन पूल बहाव, अवलोकन क्षमता ओवरफ्लो।
2026 उपकरण मानचित्रण
LLMPerf(Anyscale) पायथन लेकिन Rust समर्थित टोकनकरण. मीड / stddev प्रमाणीकरण. स्ट्रीमिंग के बारे में जागरूक. प्रदर्शन रन के लिए सबसे अच्छा डिफ़ॉल्ट।
NVIDIA GenAI-Perf NVIDIA का संदर्भ। Triton क्लाइंट का उपयोग करता है; व्यापक मीट्रिक कवरेज। ध्यान दें कि इसके ITL में TTFT शामिल नहीं है; LLMPerf में यह शामिल है। दो उपकरण एक ही सर्वर के लिए अलग-अलग TPOT उत्पन्न करते हैं।
LLM-Locust(सच्चा पाया) लोमड़ी विस्तार जो जीआईएल जाल को ठीक करता है. परिचित लोमड़ी डीएसएल + स्ट्रीमिंग मीट्रिक.
guidellm बड़े पैमाने पर सिंथेटिक बेंचमार्किंग।
k6 v2026.1.0+ k6 Operator 1.0 GA (Sept 2025):
- k6 स्वयं (Go, संकलित, कोई GIL नहीं) स्ट्रीमिंग-जागरूक माप जोड़ा।
- k6 ऑपरेटर कुबेरनेट्स-निवासी वितरित परीक्षण के लिए टेस्टरन / प्राइवेटलोडज़ोन सीआरडी का उपयोग करता है।
- CI/CD गेट और SLA परीक्षण के लिए सबसे अच्छा।
Vegeta जाओ, k6 से सरल। निरंतर दर HTTP संतृप्ति। LLM- जागरूक नहीं है लेकिन गेटवे / दर-सीमा परीक्षण के लिए अच्छा है।
Locust 2.43.3 stock LLM के लिए GIL जाल है। केवल LLM-Locust विस्तार के साथ।
सीआई में एसएलए गेट
के 6 पर PR के साथ चलाएँः
- आरपीएस के आधार पर 30-50 पुनरावृत्ति प्रत्येक।
- गेटः P50/P95 TTFT, 5xx < 5%, TPOT सीमा से नीचे।
- तोड़ने के लिए निर्माण तोड़.
यथार्थवादी शीघ्र वितरण
वास्तविक ट्रैफ़िक नमूनों (यदि आपके पास हैं) या प्रकाशित वितरणों (जैसे, चैट के लिए ShareGPT प्रमाणीकरण, कोड के लिए HumanEval) से निर्माण करें। LLMPerf को औसत + stddev फ़ीड करें। किसी भी कीमत पर लूप-विथ-वन-प्रमाणीकरण से बचें।
संख्याओं को याद रखना चाहिए
- k6 ऑपरेटर 1.0 GA: सितंबर 2025
- k6 v2026.1.0: स्ट्रीमिंग के बारे में जागरूक मीट्रिक।
- सामान्य LLMPerf रनः समवर्ती X पर 100-1000 अनुरोध।
- सामान्य CI गेटः प्रति PR 30-50 पुनरावृत्ति।
- चार पैटर्नः स्थिर, रैंप, स्पाइक, भिगो।
इसका प्रयोग करें
code/main.pyवास्तविक शीघ्र वितरण के साथ लोड परीक्षण का अनुकरण करता है, प्रभावी TPOT मापता है, और समान शीघ्रता जाल का प्रदर्शन करता है।
इसे भेजें
यह सबक हमें फल देता हैoutputs/skill-load-test-plan.md. कार्यभार और एसएलए को देखते हुए, उपकरण चुनता है और चार भार पैटर्न डिजाइन करता है।
व्यायाम
- दौड़ें
code/main.py. समरूप बनाम यथार्थवादी वितरण की तुलना करें अंतर कहाँ है? - एक CI गेट के लिए k6 स्क्रिप्ट लिखेंः TTFT P95 < 800 ms 100 समवर्ती, रनटाइम 5 मिनट पर।
- आपके विसर्जन परीक्षण में मेमोरी 50 एमबी/घंटे बढ़ रही है. तीन कारणों का नाम दें और उनके बीच चयन करने के लिए उपकरण।
- 10 आरपीएस से 100 आरपीएस तक स्पाइक परीक्षण। यदि कारपेन्टर + वीएलएलएम उत्पादन-स्टैक (चरण 17 · 03 + 18) लागू है तो अपेक्षित पुनर्प्राप्ति समय क्या है?
- GenAI-Perf TPOT=6ms रिपोर्ट करता है; LLMPerf TPOT=11ms रिपोर्ट करता है उसी सर्वर पर। समझाएं।
प्रमुख शर्तें
| Term | What people say | What it actually means |
|---|---|---|
| LLMPerf | "the LLM harness" | Anyscale benchmark tool, streaming-aware |
| GenAI-Perf | "NVIDIA tool" | NVIDIA reference harness |
| LLM-Locust | "Locust for LLMs" | Locust extension fixing GIL trap |
| guidellm | "synthetic benchmark" | Large-scale synthetic tool |
| k6 Operator | "K8s k6" | CRD-based distributed k6 |
| GIL trap | "Python client overhead" | Tokenization backlog inflates reported latency |
| Prompt-uniformity trap | "single-prompt lie" | Loop with same prompt hits cache, inflates throughput |
| Steady-state | "constant load" | Flat RPS for N minutes |
| Ramp | "linear up" | 0 to target over duration |
| Spike | "burst test" | Sudden multiplier then revert |
| Soak | "long test" | Hours for leak detection |
आगे पढ़ना
- TianPan — Load Testing LLM Applications
- PremAI — Load Testing LLMs 2026
- NVIDIA NIM — Introduction to LLM Inference Benchmarking
- TrueFoundry — LLM-Locust
- LLMPerf
- k6 Operator
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.