Phase 17: Infrastructure & Production

लोड टेस्टिंग LLM एपीआई क्यों k6 और टिड्डियां झूठ बोलती हैं

पारंपरिक लोड टेस्टर्स को स्ट्रीमिंग प्रतिक्रियाओं, चर आउटपुट लंबाई, टोकन स्तर के माप, या GPU संतृप्ति के लिए डिज़ाइन नहीं किया गया था। दो फंदे अधिकांश टीमों को काटते हैं। जीआईएल जालः लोकोस्ट के टोकन स्तर के माप पायथन जीआईएल के तहत टोकनकरण चलाते हैं, जो भारी समवर्तीता के तहत अनुरोध उत्पादन के साथ प्रतिस्पर्धा करता है; टोकनकरण बैकलॉग तब रिपोर्ट किए गए इंटर-टोकन विलंबता को बढ़ाता है आपका क्लाइंट बोतल गला है, सर्वर नहीं। प्रॉम्प्ट-इनोफॉर्मिटी फंदेः लूप में समान प्रॉम्प्ट्स टोकन वितरण पर एक बिंदु का परीक्षण करते हैं; वास्तविक ट्रैफ़िक में चर लंबाई और विविध प्रीफिक्स मैच होते हैं। LLMPerf इस समस्या को ठीक करता है --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 विविध लंबाई, विविध सामग्री।

चार लोड पैटर्न

  1. Steady-state 30-60 मिनट के लिए निरंतर आरपीएस। पकड़ः मूल प्रदर्शन प्रतिगमन।
  2. Ramp आरपीएस को 0 से 15 मिनट से अधिक समय में लक्ष्य तक रैखिक रूप से बढ़ाएं।
  3. Spike अचानक 3-10x आरपीएस के लिए 2 मिनट के लिए फिर वापस. कैचः ऑटोस्केलिंग विलंबता, कतार संतृप्ति, ठंड स्टार्ट प्रभाव.
  4. 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. कार्यभार और एसएलए को देखते हुए, उपकरण चुनता है और चार भार पैटर्न डिजाइन करता है।

व्यायाम

  1. दौड़ेंcode/main.py. समरूप बनाम यथार्थवादी वितरण की तुलना करें अंतर कहाँ है?
  2. एक CI गेट के लिए k6 स्क्रिप्ट लिखेंः TTFT P95 < 800 ms 100 समवर्ती, रनटाइम 5 मिनट पर।
  3. आपके विसर्जन परीक्षण में मेमोरी 50 एमबी/घंटे बढ़ रही है. तीन कारणों का नाम दें और उनके बीच चयन करने के लिए उपकरण।
  4. 10 आरपीएस से 100 आरपीएस तक स्पाइक परीक्षण। यदि कारपेन्टर + वीएलएलएम उत्पादन-स्टैक (चरण 17 · 03 + 18) लागू है तो अपेक्षित पुनर्प्राप्ति समय क्या है?
  5. GenAI-Perf TPOT=6ms रिपोर्ट करता है; LLMPerf TPOT=11ms रिपोर्ट करता है उसी सर्वर पर। समझाएं।

प्रमुख शर्तें

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

आगे पढ़ना

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.