- DeepSeek-V3 जैसे कुछ AI मॉडल बड़े पैमाने पर उपलब्ध कराए जाने पर सस्ते और तेज़ होते हैं, लेकिन लोकल रन में धीमे और महंगे पड़ते हैं
- इसका कारण GPU उपयोग दक्षता से जुड़ा throughput (प्रोसेसिंग क्षमता) और latency (विलंबता) के बीच का मूलभूत trade-off है
- बैच साइज़ बढ़ाने पर GPU अधिक कुशलता से काम करता है, लेकिन यूज़र को टोकन इकट्ठा होने तक इंतज़ार करना पड़ता है, जिससे latency बढ़ती है
- Mixture-of-Experts संरचना और deep pipeline वाले मॉडल को उच्च बैच और अधिक latency की आवश्यकता होती है
- लोकल single-user environment में काफी बड़ा बैच बनाना मुश्किल होता है, जिससे performance घटती है और लागत बढ़ती है
- OpenAI, Anthropic आदि आर्किटेक्चर की अपनी दक्षता, उन्नत batching strategy, या बहुत अधिक GPU लगाने जैसी विधियों से तेज़ response देते हैं
बैच inference और GPU दक्षता
- GPU बड़े matrix multiplication (GEMM) के लिए optimized hardware है
- कई यूज़रों के टोकन को एक साथ बड़े matrix में बैच करके चलाने पर कम round-trip overhead और memory efficiency की वजह से throughput तेज़ी से बढ़ता है
- inference server कई requests के टोकन को queue में जमा करता है, फिर उपयुक्त आकार का बैच चुनकर बड़े GEMM operations चलाता है
- इस प्रक्रिया में server को batch size (throughput बढ़ना) और waiting time (latency बढ़ना) के बीच trade-off चुनना पड़ता है
कुछ मॉडल बड़े बैच के लिए optimized क्यों होते हैं
Mixture of Experts (MoE) और बैच
- MoE संरचना (DeepSeek-V3, अनुमानित GPT-4) GPU दक्षता कम होने का एक प्रमुख कारण है
- सैकड़ों ‘expert’ blocks में से हर एक को अलग matrix multiplication चाहिए, इसलिए छोटे बैच में हर expert के पास कम काम होता है और दक्षता गिरती है
- सभी experts का पूरा उपयोग करने के लिए बहुत सारी concurrent requests चाहिए होती हैं, इसलिए service level पर बड़े बैच अनिवार्य हो जाते हैं
- कम wait (window 5ms) में experts बार-बार idle रहते हैं, जबकि लंबे wait (window 200ms) में उच्च दक्षता को अधिकतम किया जा सकता है
deep pipeline मॉडल के बैच संबंधी मुद्दे
- सैकड़ों layers वाले बड़े transformer कई GPUs में layer-wise split (pipelining) करके चलाए जाते हैं
- अगर एक बैच के भीतर टोकन की संख्या pipeline steps से कम हो, तो ‘pipeline bubble’ की समस्या आती है, जिससे throughput घटता है
- इसे रोकने के लिए बड़ा बैच (यानी लंबा इंतज़ार) ज़रूरी है, और इससे model response time बढ़ जाता है
queue को हमेशा पूरा भरा क्यों नहीं जा सकता
- सिद्धांत रूप में, अगर पर्याप्त concurrent traffic हो और queue हमेशा भरी रहे, तो bubble से बचा जा सकता है
- लेकिन व्यवहार में transformer attention चरण में batch करने के लिए matrix size (length) समान होना चाहिए, इसलिए single queue से इसे पूरी तरह चलाना कठिन है
- इसके अलावा FFN और attention चरणों को अलग करने पर memory overhead तेज़ी से बढ़ता है और data movement में inefficiency आती है
सारांश और निष्कर्ष
- बड़े बैच की प्रोसेसिंग GPU लागत घटाने और throughput बढ़ाने के लिए ज़रूरी है, लेकिन यूज़र के लिए waiting time लंबा हो जाता है
- Mixture-of-Experts और बड़े pipeline architecture वाले मॉडल स्वभावतः wait-based high-efficiency batching environment के लिए optimized होते हैं
- लोकल जैसे कम-traffic वाले environment में optimized बड़े बैच बन नहीं पाते, इसलिए GPU दक्षता तेज़ी से गिरती है और execution cost बढ़ती है
- OpenAI, Anthropic आदि तेज़ responsiveness दिखाते हैं, उसके कारण हो सकते हैं:
- (1) वे MoE नहीं, बल्कि अधिक कुशल architecture इस्तेमाल करते हों
- (2) batching/pipeline optimization और उन्नत inference tricks लागू करते हों
- (3) ज़रूरत से भी अधिक GPU लगाकर speed खरीदी जाती हो
अतिरिक्त: prefill batch और मुख्य batch में अंतर
- transformer एक यूज़र prompt के prefill (लंबा input) को भी batch में चलाकर तेज़ initial inference दे सकता है
- लेकिन इस लेख में चर्चा किया गया batch कई यूज़रों की requests के वास्तविक token generation चरण में होने वाला throughput-latency trade-off batch है
- prefill batch का इस लेख में बताए गए concurrent large batch से सीधा संबंध नहीं है
संदर्भ बिंदु
- वास्तविक inference systems अक्सर continuous batching पद्धति भी साथ में इस्तेमाल करते हैं, जिसमें बैच भरते ही उसे तुरंत चलाया जाता है
- लेकिन मूल throughput-latency trade-off की संरचना वही रहती है
1 टिप्पणियां
Hacker News राय