𝗥𝗮𝘁𝗲 𝗟𝗶𝗺𝗶𝘁𝗶𝗻𝗴 𝗮𝗻𝗱 𝗖𝗶𝗿𝗰𝘂𝗶𝘁 𝗕𝗿𝗲𝗮𝗸𝗲𝗿𝘀 𝗶𝗻 𝗔𝗜 𝗦𝘆𝘀𝘁𝗲𝗺𝘀
डिस्ट्रिब्यूटेड AI सिस्टम्स जटिल होते हैं। वे अनुरोधों (requests) की भारी मात्रा और भारी मॉडल इन्फरेंस (model inference) को संभालते हैं। आप GPU क्लस्टर्स, डेटाबेस और थर्ड-पार्टी APIs पर निर्भर होते हैं। एक खराब कंपोनेंट या ट्रैफिक में अचानक उछाल आपके पूरे सिस्टम को क्रैश कर सकता है।
अपने सिस्टम की सुरक्षा के लिए आपको दो टूल्स की आवश्यकता होती है: रेट लिमिटिंग (rate limiting) और सर्किट ब्रेकर्स (circuit breakers)।
रेट लिमिटिंग (Rate Limiting) रेट लिमिटिंग किसी एक यूजर या सर्विस को बहुत अधिक संसाधनों (resources) का उपयोग करने से रोकती है। यह सभी के लिए समान पहुंच (fair access) सुनिश्चित करती है।
सामान्य तरीके:
- टोकन बकेट (Token Bucket): AI के लिए सबसे अच्छा है। यह एक स्थिर औसत बनाए रखते हुए गतिविधि के छोटे उछाल (short bursts) की अनुमति देता है।
- लीकी बकेट (Leaky Bucket): अनुरोधों का निरंतर प्रवाह बनाए रखता है।
- फिक्स्ड विंडो (Fixed Window): सरल है लेकिन नए विंडो की शुरुआत में स्पाइक्स (spikes) का कारण बन सकता है।
- स्लाइडिंग विंडो (Sliding Window): फिक्स्ड विंडो की तुलना में अधिक सटीक है।
AI के लिए प्रो टिप: केवल अनुरोधों (requests) के बजाय टोकन काउंट (token count) के आधार पर सीमा निर्धारित करें। 4,000 टोकन वाला एक प्रॉम्प्ट, 10 टोकन वाले प्रॉम्प्ट की तुलना में अधिक संसाधनों का उपयोग करता है।
सर्किट ब्रेकर्स (Circuit Breakers) एक सर्किट ब्रेकर आपके GPU सर्वर या वेक्टर डेटाबेस जैसी सेवाओं को किए जाने वाले कॉल्स (calls) की निगरानी करता है। यदि कोई सेवा बहुत अधिक बार विफल होती है, तो ब्रेकर 'ओपन' (open) हो जाता है। यह तुरंत उस सेवा के सभी कॉल्स को रोक देता है। यह पूरे सिस्टम को क्रैश होने से बचाता है।
सर्किट तीन अवस्थाओं (states) का पालन करता है:
- क्लोज्ड (Closed): सब कुछ सामान्य रूप से काम कर रहा है।
- ओपन (Open): सेवा विफल हो रही है। कॉल्स तुरंत विफल हो जाते हैं या फॉलबैक (fallback) का उपयोग करते हैं।
- हाफ-ओपन (Half-Open): सिस्टम यह देखने के लिए सेवा का परीक्षण करता है कि क्या वह ठीक हो गई है।
सर्वोत्तम अभ्यास (Best practices):
- धीमे कॉल्स को ट्रैक करें। यदि कोई LLM बहुत अधिक समय लेता है, तो इसे विफलता (failure) मानें।
- त्रुटियों के प्रकारों को अलग करें। 400 Bad Request जैसे यूजर एरर के लिए ब्रेकर को ट्रिप न करें। इसे केवल कनेक्शन एरर या टाइमआउट के लिए ही ट्रिप करें।
Optional learning community: https://t.me/GyaanSetuAi