𝗥𝗮𝘁𝗲 𝗟𝗶𝗺𝗶𝘁𝗶𝗻𝗴 𝗮𝗻𝗱 𝗖𝗶𝗿𝗰𝘂𝗶𝘁 𝗕𝗿𝗲𝗮𝗸𝗲𝗿𝘀 𝗶𝗻 𝗔𝗜 𝗦𝘆𝘀𝘁𝗲𝗺𝘀 -> AI સિસ્ટમ્સમાં Rate Limiting અને Circuit Breakers
ડિસ્ટ્રિબ્યુટેડ AI સિસ્ટમ્સ જટિલ હોય છે. તેઓ વિનંતીઓના (requests) વિશાળ જથ્થા અને ભારે મોડેલ ઇન્ફરન્સ (model inference) ને હેન્ડલ કરે છે. તમે GPU ક્લસ્ટર્સ, ડેટાબેઝ અને થર્ડ-પાર્ટી APIs પર નિર્ભર હોવ છો. એક ખરાબ ઘટક અથવા ટ્રાફિકમાં અચાનક વધારો તમારી આખી સિસ્ટમને ક્રેશ કરી શકે છે.
તમારી સિસ્ટમને સુરક્ષિત રાખવા માટે તમારે બે સાધનોની જરૂર છે: rate limiting અને circuit breakers.
Rate Limiting Rate limiting કોઈ એક યુઝર અથવા સર્વિસને વધુ પડતા રિસોર્સિસનો ઉપયોગ કરતા અટકાવે છે. તે દરેક માટે સમાન એક્સેસ સુનિશ્ચિત કરે છે.
સામાન્ય પદ્ધતિઓ:
- Token Bucket: AI માટે શ્રેષ્ઠ છે. તે સ્થિર સરેરાશ જાળવી રાખીને પ્રવૃત્તિના ટૂંકા bursts (ઝડપી વધારો) ની મંજૂરી આપે છે.
- Leaky Bucket: વિનંતીઓનો સતત પ્રવાહ જાળવી રાખે છે.
- Fixed Window: સરળ છે પરંતુ નવા વિન્ડોની શરૂઆતમાં ટ્રાફિકમાં અચાનક વધારો (spikes) કરી શકે છે.
- Sliding Window: Fixed windows કરતા વધુ સચોટ છે.
AI માટે પ્રો ટિપ: માત્ર વિનંતીઓ (requests) દ્વારા નહીં, પણ ટોકન કાઉન્ટ (token count) દ્વારા મર્યાદા નક્કી કરો. 4,000 ટોકન્સ ધરાવતું એક પ્રોમ્પ્ટ 10 ટોકન્સ ધરાવતા પ્રોમ્પ્ટ કરતા વધુ રિસોર્સિસનો ઉપયોગ કરે છે.
Circuit Breakers Circuit breaker તમારા GPU સર્વર અથવા vector database જેવી સર્વિસના કોલ્સ પર દેખરેખ રાખે છે. જો કોઈ સર્વિસ ઘણી વખત નિષ્ફળ જાય, તો બ્રેકર 'ઓપન' થઈ જાય છે. તે તરત જ તે સર્વિસના તમામ કોલ્સ બંધ કરી દે છે. આનાથી આખી સિસ્ટમ ક્રેશ થતી અટકે છે.
સર્કિટ ત્રણ સ્ટેટ્સ (states) અનુસરે છે:
- Closed: બધું સામાન્ય રીતે કામ કરી રહ્યું છે.
- Open: સર્વિસ નિષ્ફળ જઈ રહી છે. કોલ્સ ઝડપથી નિષ્ફળ જાય છે અથવા fallback નો ઉપયોગ કરે છે.
- Half-Open: સિસ્ટમ સર્વિસ રિકવર થઈ છે કે નહીં તે જોવા માટે તેની ટેસ્ટિંગ કરે છે.
શ્રેષ્ઠ પદ્ધતિઓ (Best practices):
- ધીમા કોલ્સને ટ્રેક કરો. જો LLM વધુ સમય લેતું હોય, તો તેને નિષ્ફળતા તરીકે ગણો.
- એરરના પ્રકારો અલગ રાખો. 400 Bad Request જેવા યુઝર એરર માટે બ્રેકરને ટ્રિપ ન કરો. માત્ર કનેક્શન એરર અથવા ટાઈમઆઉટ માટે જ તેને ટ્રિપ કરો.
Optional learning community: https://t.me/GyaanSetuAi