محدودیت نرخ (Rate Limiting) و قطعکنندههای مدار (Circuit Breakers) در سیستمهای هوش مصنوعی
سیستمهای توزیعشدهی هوش مصنوعی پیچیده هستند. آنها حجم عظیمی از درخواستها و استنتاجهای سنگین مدل (model inference) را مدیریت میکنند. شما به خوشههای GPU، پایگاههای داده و APIهای شخص ثالث متکی هستید. یک قطعهی معیوب یا یک جهش ناگهانی در ترافیک میتواند کل سیستم شما را از کار بیندازد.
برای محافظت از سیستم خود به دو ابزار نیاز دارید: محدودیت نرخ (rate limiting) و قطعکنندههای مدار (circuit breakers).
محدودیت نرخ (Rate Limiting)
محدودیت نرخ مانع از آن میشود که یک کاربر یا سرویس واحد، منابع بیش از حد مصرف کند. این کار دسترسی عادلانه برای همه را تضمین میکند.
روشهای رایج:
- سطل توکن (Token Bucket): بهترین گزینه برای هوش مصنوعی است. این روش اجازه میدهد فعالیتهای کوتاهمدت و متمرکز (bursts) انجام شود، در حالی که میانگین جریان را ثابت نگه میدارد.
- سطل نشتی (Leaky Bucket): جریان درخواستها را ثابت نگه میدارد.
- پنجره ثابت (Fixed Window): ساده است اما میتواند باعث ایجاد جهشهای ناگهانی در شروع یک پنجره جدید شود.
- پنجره لغزان (Sliding Window): دقیقتر از پنجرههای ثابت است.
نکته حرفهای برای هوش مصنوعی: محدودیت را بر اساس تعداد توکن (token count) اعمال کنید، نه فقط تعداد درخواستها. یک پرامپت با ۴۰۰۰ توکن، منابع بیشتری نسبت به یک پرامپت با ۱۰ توکن مصرف میکند.
قطعکنندههای مدار (Circuit Breakers)
یک قطعکننده مدار، فراخوانیهای مربوط به سرویسهایی مانند سرور GPU یا پایگاه داده برداری (vector database) شما را نظارت میکند. اگر یک سرویس بیش از حد با خطا مواجه شود، قطعکننده «باز» (open) میشود. این کار بلافاصله تمام فراخوانیها به آن سرویس را متوقف میکند و از فروپاشی کامل سیستم جلوگیری میکند.
مدار سه حالت دارد:
- بسته (Closed): همه چیز به طور عادی کار میکند.
- باز (Open): سرویس در حال شکست است. فراخوانیها سریعاً با خطا مواجه میشوند یا از یک راهکار جایگزین (fallback) استفاده میکنند.
- نیمهباز (Half-Open): سیستم سرویس را آزمایش میکند تا ببیند آیا دوباره به حالت عادی بازگشته است یا خیر.
بهترین روشها:
- فراخوانیهای کند را ردیابی کنید. اگر یک مدل زبانی بزرگ (LLM) بیش از حد طول بکشد، با آن مانند یک خطا برخورد کنید.
- انواع خطاها را از هم جدا کنید. قطعکننده را برای خطاهای کاربر مانند
400 Bad Requestفعال نکنید. فقط در صورت بروز خطاهای اتصال یا اتمام زمان (timeout) آن را فعال کنید.
Optional learning community: https://t.me/GyaanSetuAi