تحديد معدل الطلبات وقواطع الدائرة في أنظمة الذكاء الاصطناعي
أنظمة الذكاء الاصطناعي الموزعة معقدة. فهي تتعامل مع أحجام هائلة من الطلبات وعمليات استنتاج النماذج الثقيلة. أنت تعتمد على مجموعات GPU، وقواعد البيانات، وواجهات برمجة التطبيقات (APIs) الخارجية. يمكن لمكون واحد معطل أو طفرة مفاجئة في حركة المرور أن تؤدي إلى انهيار نظامك بالكامل.
أنت بحاجة إلى أداتين لحماية نظامك: تحديد معدل الطلبات (rate limiting) وقواطع الدائرة (circuit breakers).
تحديد معدل الطلبات (Rate Limiting)
يمنع تحديد معدل الطلبات مستخدماً واحداً أو خدمة واحدة من استهلاك الكثير من الموارد، مما يضمن وصولاً عادلاً للجميع.
الأساليب الشائعة:
- Token Bucket: الأفضل للذكاء الاصطناعي؛ فهو يسمح بنوبات قصيرة من النشاط مع الحفاظ على متوسط مستقر.
- Leaky Bucket: يحافظ على تدفق ثابت للطلبات.
- Fixed Window: بسيط ولكنه قد يتسبب في حدوث طفرات عند بداية نافذة زمنية جديدة.
- Sliding Window: أكثر دقة من النوافذ الثابتة.
نصيحة احترافية للذكاء الاصطناعي: حدد الاستهلاك بناءً على عدد الرموز (tokens)، وليس فقط عدد الطلبات. فالمطالبة (prompt) الواحدة التي تحتوي على 4,000 رمز تستهلك موارد أكثر من مطالبة تحتوي على 10 رموز فقط.
قواطع الدائرة (Circuit Breakers)
يقوم قاطع الدائرة بمراقبة الاستدعاءات لخدمات مثل خادم GPU الخاص بك أو قاعدة بيانات المتجهات (vector database). إذا فشلت الخدمة عدة مرات، يفتح القاطع، مما يؤدي إلى إيقاف جميع الاستدعاءات لتلك الخدمة فوراً، وهذا يمنع الانهيار الكامل للنظام.
تتبع الدائرة ثلاث حالات:
- Closed (مغلقة): كل شيء يعمل بشكل طبيعي.
- Open (مفتوحة): الخدمة تفشل. تفشل الاستدعاءات بسرعة أو يتم استخدام خيار احتياطي (fallback).
- Half-Open (نصف مفتوحة): يقوم النظام باختبار الخدمة لمعرفة ما إذا كانت قد تعافت.
أفضل الممارسات:
- تتبع الاستدعاءات البطيئة. إذا استغرق نموذج لغوي كبير (LLM) وقتاً طويلاً جداً، فتعامل معه كحالة فشل.
- افصل بين أنواع الأخطاء. لا تقم بتفعيل القاطع بسبب أخطاء المستخدم مثل 400 Bad Request. قم بتفعيله فقط في حالات أخطاء الاتصال أو انتهاء المهلة (timeouts).
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi