Обмеження частоти запитів та запобіжники в AI-системах
Розподілені AI-системи є складними. Вони обробляють величезні обсяги запитів та важке виведення (inference) моделей. Ви покладаєтеся на GPU-кластери, бази даних та сторонні API. Один несправний компонент або сплеск трафіку може призвести до збою всієї системи.
Для захисту вашої системи вам потрібні два інструменти: обмеження частоти запитів (rate limiting) та запобіжники (circuit breakers).
Обмеження частоти запитів (Rate Limiting) Обмеження частоти запитів не дозволяє одному користувачеві або сервісу використовувати занадто багато ресурсів. Це забезпечує справедливий доступ для всіх.
Поширені методи:
- Token Bucket: Найкращий варіант для AI. Він дозволяє короткі сплески активності, зберігаючи при цьому стабільний середній показник.
- Leaky Bucket: Підтримує постійний потік запитів.
- Fixed Window: Простий, але може спричиняти сплески на початку нового вікна.
- Sliding Window: Більш точний, ніж фіксовані вікна.
Порада експерта для AI: Обмежуйте за кількістю токенів, а не лише за кількістю запитів. Один промпт із 4000 токенів споживає більше ресурсів, ніж промпт із 10 токенами.
Запобіжники (Circuit Breakers) Запобіжник (circuit breaker) відстежує виклики до таких сервісів, як ваш GPU-сервер або векторна база даних. Якщо сервіс виходить з ладу занадто багато разів, запобіжник «відкривається». Він негайно припиняє всі виклики до цього сервісу. Це запобігає повному краху системи.
Запобіжник має три стани:
- Closed: Все працює нормально.
- Open: Сервіс працює зі збоями. Виклики швидко повертають помилку або використовують резервний варіант (fallback).
- Half-Open: Система тестує сервіс, щоб перевірити, чи він відновився.
Найкращі практики:
- Відстежуйте повільні виклики. Якщо LLM відповідає занадто довго, вважайте це збоєм.
- Розділяйте типи помилок. Не допускайте спрацьовування запобіжника через помилки користувача, такі як 400 Bad Request. Активуйте його лише через помилки підключення або таймаути.
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi