𝗥𝗮𝘁𝗲 𝗟𝗶𝗺𝗶𝘁𝗶𝗻𝗴 𝗮𝗻𝗱 𝗖𝗶𝗿𝗰𝘂𝗶𝘁 𝗕𝗿𝗲𝗮𝗸𝗲𝗿𝘀 𝗶𝗻 𝗔𝗜 𝗦𝘆𝘀𝘁𝗲𝗺𝘀
ഡിസ്ട്രിബ്യൂട്ടഡ് (Distributed) AI സിസ്റ്റങ്ങൾ സങ്കീർണ്ണമാണ്. അവ വലിയ അളവിലുള്ള റിക്വസ്റ്റുകളും (requests) കനത്ത മോഡൽ ഇൻഫറൻസുകളും (model inference) കൈകാര്യം ചെയ്യുന്നു. നിങ്ങൾ GPU ക്ലസ്റ്ററുകൾ, ഡാറ്റാബേസുകൾ, തേർഡ് പാർട്ടി API എന്നിവയെ ആശ്രയിക്കുന്നു. ഒരു മോശം ഘടകമോ അല്ലെങ്കിൽ പെട്ടെന്നുണ്ടാകുന്ന ട്രാഫിക് വർദ്ധനവോ നിങ്ങളുടെ മുഴുവൻ സിസ്റ്റത്തെയും തകരാറിലാക്കാം.
നിങ്ങളുടെ സിസ്റ്റത്തെ സംരക്ഷിക്കാൻ നിങ്ങൾക്ക് രണ്ട് ടൂളുകൾ ആവശ്യമാണ്: rate limiting-ഉം circuit breakers-ഉം.
Rate Limiting ഒരു വ്യക്തിയോ സേവനമോ അമിതമായി റിസോഴ്സുകൾ ഉപയോഗിക്കുന്നത് തടയാൻ rate limiting സഹായിക്കുന്നു. ഇത് എല്ലാവർക്കും തുല്യമായ ആക്സസ് ഉറപ്പാക്കുന്നു.
സാധാരണ രീതികൾ:
- Token Bucket: AI-ക്ക് ഏറ്റവും അനുയോജ്യം. ഇത് ഒരു സ്ഥിരമായ ശരാശരി നിലനിർത്തുന്നതോടൊപ്പം ചെറിയ ഇടവേളകളിലുള്ള പ്രവർത്തനങ്ങളെ അനുവദിക്കുകയും ചെയ്യുന്നു.
- Leaky Bucket: റിക്വസ്റ്റുകളുടെ ഒഴുക്ക് സ്ഥിരമായി നിലനിർത്തുന്നു.
- Fixed Window: ലളിതമാണ്, എന്നാൽ പുതിയ വിൻഡോയുടെ തുടക്കത്തിൽ പെട്ടെന്നുള്ള വർദ്ധനവിന് (spikes) കാരണമായേക്കാം.
- Sliding Window: Fixed windows-നേക്കാൾ കൃത്യതയുള്ളതാണ്.
AI-യ്ക്കുള്ള പ്രോ ടിപ്പ് (Pro tip): റിക്വസ്റ്റുകൾക്ക് പകരം ടോക്കൺ എണ്ണം (token count) അടിസ്ഥാനമാക്കി പരിധി നിശ്ചയിക്കുക. 10 ടോക്കണുകളുള്ള ഒരു പ്രോംപ്റ്റിനേക്കാൾ കൂടുതൽ റിസോഴ്സുകൾ 4,000 ടോക്കണുകളുള്ള ഒരു പ്രോംപ്റ്റ് ഉപയോഗിക്കുന്നു.
Circuit Breakers നിങ്ങളുടെ GPU സെർവർ അല്ലെങ്കിൽ വെക്റ്റർ ഡാറ്റാബേസ് പോലുള്ള സേവനങ്ങളിലേക്കുള്ള കോളുകൾ ഒരു circuit breaker നിരീക്ഷിക്കുന്നു. ഒരു സേവനം പലതവണ പരാജയപ്പെട്ടാൽ, ബ്രേക്കർ ഓപ്പൺ (open) ആകുന്നു. ഇത് ആ സേവനത്തിലേക്കുള്ള എല്ലാ കോളുകളും ഉടനടി നിർത്തുന്നു. ഇത് സിസ്റ്റം പൂർണ്ണമായും തകരാറിലാകുന്നത് തടയുന്നു.
സർക്യൂട്ട് മൂന്ന് അവസ്ഥകളിലൂടെ കടന്നുപോകുന്നു:
- Closed: എല്ലാം സാധാരണ നിലയിൽ പ്രവർത്തിക്കുന്നു.
- Open: സേവനം പരാജയപ്പെടുന്നു. കോളുകൾ വേഗത്തിൽ പരാജയപ്പെടുകയോ അല്ലെങ്കിൽ ഒരു ഫോളബാക്ക് (fallback) ഉപയോഗിക്കുകയോ ചെയ്യുന്നു.
- Half-Open: സേവനം വീണ്ടെടുത്തിട്ടുണ്ടോ എന്ന് പരിശോധിക്കാൻ സിസ്റ്റം അത് ടെസ്റ്റ് ചെയ്യുന്നു.
മികച്ച രീതികൾ:
- സാവധാനത്തിലുള്ള കോളുകൾ ട്രാക്ക് ചെയ്യുക. ഒരു LLM എടുക്കുന്ന സമയം വളരെ കൂടുതലാണെങ്കിൽ, അതിനെ ഒരു പരാജയമായി കണക്കാക്കുക.
- എറർ തരങ്ങൾ വേർതിരിക്കുക. 400 Bad Request പോലുള്ള ഉപയോക്താവിന്റെ പിഴവുകൾക്ക് ബ്രേക്കർ പ്രവർത്തിപ്പിക്കരുത്. കണക്ഷൻ എററുകൾക്കോ ടൈമൗട്ടുകൾക്കോ (timeouts) വേണ്ടി മാത്രം ഇത് ഉപയോഗിക്കുക.
Optional learning community: https://t.me/GyaanSetuAi