सर्वरलेस का यह मिथक कि "आप केवल उन मिलीसेकंड के लिए भुगतान करते हैं जितने समय आपका कोड चलता है", तब धराशायी हो जाता है जब आप AWS Lambda पर एक AI एजेंट चलाने की कोशिश करते हैं। व्यवहार में, सबसे बड़े खर्च Lambda-compute चार्ज नहीं, बल्कि कोल्ड-स्टार्ट लेटेंसी (cold-start latency), रिट्राय लूप (retry loops) और उन लूप्स से उत्पन्न होने वाला टोकन उपयोग (token usage) हैं।
सामान्य सर्वरलेस चित्रण AI एजेंटों को गुमराह क्यों करता है
अधिकांश डेवलपर्स Lambda फंक्शन को एक शुद्ध कंप्यूट सैंडबॉक्स (compute sandbox) की तरह मानते हैं: हैंडलर को तेज़ रखें, मेमोरी का आकार मध्यम रखें, और बिल को स्थिर रहने दें। यह सरल HTTP एंडपॉइंट्स के लिए तो ठीक है, लेकिन एक ऐसा एजेंट जो लैंग्वेज मॉडल को कॉल करता है, रिस्पॉन्स का मूल्यांकन करता है, और संभवतः पूरे चक्र को फिर से दोहराता है, वह एक सिंगल Lambda इनवोकेशन (invocation) के साथ सीधे तौर पर मेल नहीं खाता। एजेंट का आंतरिक वर्कफ़्लो मॉडल कॉल्स की संख्या को कई गुना बढ़ा देता है, और प्रत्येक अतिरिक्त कॉल से टोकन की लागत बढ़ जाती है, जो कंप्यूट चार्ज की तुलना में बहुत अधिक हो सकती है।
कोल्ड स्टार्ट (Cold starts) एक छिपा हुआ खर्च है
जब एक Lambda कंटेनर पहली बार प्रोविज़न (provision) किया जाता है, तो उसे डिप्लॉयमेंट पैकेज को अनपैक करना पड़ता है। संबंधित एजेंट Python लाइब्रेरीज़ का एक बड़ा सेट लोड करता है, इसलिए इमेज का आकार काफी बड़ा हो सकता है। केवल डेवलपमेंट के लिए उपयोग होने वाले टूल्स—जैसे कि स्थानीय परीक्षण के लिए उपयोग की जाने वाली ब्राउज़र ऑटोमेशन लाइब्रेरी—को हटाने से इमेज का आकार कम हो जाता है, जिससे अनपैक होने का समय भी कम हो जाता है। एक छोटा पैकेज होने का मतलब है कि फंक्शन अनुरोध (request) को संभालने के लिए तेज़ी से तैयार हो जाता है, जिससे कंटेनर के वार्म अप होने के इंतज़ार में लगने वाला समय कम हो जाता है।
दूसरा तरीका यह है कि इनिशियलाइज़ेशन कोड (initialization code) कहाँ स्थित है। मॉड्यूल इम्पोर्ट (import) के समय एजेंट के ग्राफ का निर्माण करने से, भारी काम हर अनुरोध के बजाय प्रति कंटेनर स्टार्ट केवल एक बार होता है। इसके बाद वार्म इनवोकेशन्स (warm invocations) उस काम को पूरी तरह से छोड़ देते हैं। इसका नुकसान थोड़ा लंबा कोल्ड स्टार्ट हो सकता है, लेकिन इसका फायदा यह है कि कंटेनर वार्म होने के बाद प्रति-अनुरोध सेटअप समय लगभग शून्य हो जाता है।
मेमोरी लेटेंसी को नियंत्रित करने वाले नॉब (latency knob) के रूप में भी काम करती है
Lambda पर, आपके द्वारा आवंटित की गई मेमोरी की मात्रा यह भी निर्धारित करती है कि फंक्शन को CPU का कितना हिस्सा मिलेगा। फंक्शन को 1 GB मेमोरी सेट करने से उसे एक पूरा वर्चुअल CPU कोर मिल जाता है। अतिरिक्त CPU लाइब्रेरीज़ के इम्पोर्ट और एजेंट ग्राफ के निर्माण को तेज़ कर देता है, जिससे कोल्ड-स्टार्ट और वार्म-अप लेटेंसी दोनों कम हो जाती हैं।
लूप की लागत: रिट्राय टोकन खर्च को कई गुना बढ़ा देते हैं
एजेंट एक वर्कर-इवैल्यूएटर (worker-evaluator) लूप का पालन करता है। वर्कर एक रिस्पॉन्स जेनरेट करता है, इवैल्यूएटर उसकी जाँच करता है, और यदि इवैल्यूएटर किसी त्रुटि (error) को चिह्नित करता है, तो कार्य वापस वर्कर को भेज दिया जाता है। हार मानने से पहले यह लूप पाँच बार तक दोहराया जा सकता है। इसका मतलब है कि एक सिंगल बाहरी अनुरोध निम्नलिखित को ट्रिगर कर सकता है:
- वर्कर मॉडल को पाँच तक कॉल
- इवैल्यूएटर मॉडल को पाँच तक कॉल
- एजेंट द्वारा किए जाने वाले टूल कॉल्स की कोई भी संख्या
Lambda बिल अनुमानित रहता है क्योंकि AWS निष्पादन (execution) के मिलीसेकंड के आधार पर शुल्क लेता है, लेकिन टोकन बिल इस बात पर निर्भर करते हुए बहुत अधिक ऊपर-नीचे हो सकता है कि कितने रिट्राय की आवश्यकता है।
टाइमआउट का जाल: API Gateway बनाम Lambda
API Gateway उस HTTP अनुरोध पर 29 सेकंड का सख्त टाइमआउट लगाता है जिसका वह प्रबंधन करता है। एक पाँच-चरण वाला एजेंट लूप आसानी से उस सीमा को पार कर सकता है, भले ही अंतर्निहित (underlying) Lambda फंक्शन को पाँच मिनट के निष्पादन विंडो के लिए कॉन्फ़िगर किया गया हो। Lambda Function URLs के साथ API Gateway को बायपास करने से 29 सेकंड की सीमा हट जाती है, जिससे फंक्शन बिना कटे अपना लूप पूरा कर सकता है।
डेवलपर्स को किस चीज़ के लिए बजट बनाना चाहिए
सबक सरल है: सर्वरलेस AI एजेंट के लिए बजट बनाने के लिए केवल Lambda रनटाइम के मिलीसेकंड को जोड़ना ही काफी नहीं है। आपको निम्नलिखित कारकों पर विचार करने की आवश्यकता है:
- डिप्लॉयमेंट पैकेज का आकार और उसके परिणामस्वरूप होने वाली कोल्ड-स्टार्ट लेटेंसी
- मेमोरी सेटिंग जो CPU और इस प्रकार इम्पोर्ट स्पीड को निर्धारित करती है
- वर्कर-इवैल्यूएटर लूप में अपेक्षित रिट्राय की संख्या, जो सीधे तौर पर टोकन उपयोग को बढ़ाती है
- समय से पहले टाइमआउट से बचने के लिए फ्रंट-एंड का चुनाव (API Gateway बनाम Function URL)
इनमें से किसी भी वेरिएबल (variable) को अनदेखा करने से आपका बिल आपके अनुमानित बिल से बिल्कुल अलग हो सकता है।
