𝗥𝗮𝘁𝗲 𝗟𝗶𝗺𝗶𝘁𝗶𝗻𝗴 𝗶 𝗖𝗶𝗿𝗰𝘂𝗶𝘁 𝗕𝗿𝗲𝗮𝗸𝗲𝗿𝘀 𝘄 𝘀𝘆𝘀𝘁𝗲𝗺𝗮𝗰𝗵 𝗔𝗜
Rozproszone systemy AI są złożone. Obsługują ogromne wolumeny żądań i intensywne wnioskowanie modeli (model inference). Polegasz na klastrach GPU, bazach danych i zewnętrznych API. Jeden wadliwy komponent lub nagły skok ruchu może doprowadzić do awarii całego systemu.
Aby chronić swój system, potrzebujesz dwóch narzędzi: rate limitingu oraz circuit breakerów.
Rate Limiting Rate limiting zapobiega sytuacji, w której pojedynczy użytkownik lub usługa zużywa zbyt wiele zasobów. Zapewnia on sprawiedliwy dostęp dla wszystkich.
Typowe metody:
- Token Bucket: Najlepszy dla AI. Pozwala na krótkie serie intensywnej aktywności, zachowując jednocześnie stałą średnią.
- Leaky Bucket: Utrzymuje stały przepływ żądań.
- Fixed Window: Prosty, ale może powodować skoki ruchu na początku nowego okna.
- Sliding Window: Bardziej dokładny niż okna stałe.
Pro tip dla AI: Ograniczaj liczbę tokenów, a nie tylko liczbę żądań. Jeden prompt z 4000 tokenami zużywa więcej zasobów niż prompt z 10 tokenami.
Circuit Breakers Circuit breaker monitoruje wywołania do usług, takich jak serwer GPU czy baza danych wektorowych. Jeśli usługa zawiedzie zbyt wiele razy, wyłącznik się otwiera. Natychmiast wstrzymuje on wszystkie wywołania do tej usługi, co zapobiega całkowitej awarii systemu.
Obwód znajduje się w trzech stanach:
- Closed: Wszystko działa normalnie.
- Open: Usługa zawodzi. Wywołania są natychmiast odrzucane (fail fast) lub korzystają z mechanizmu fallback.
- Half-Open: System testuje usługę, aby sprawdzić, czy odzyskała ona sprawność.
Dobre praktyki:
- Monitoruj powolne wywołania. Jeśli LLM odpowiada zbyt długo, potraktuj to jako błąd.
- Rozdzielaj typy błędów. Nie aktywuj wyłącznika z powodu błędów użytkownika, takich jak 400 Bad Request. Aktywuj go tylko w przypadku błędów połączenia lub przekroczenia czasu oczekiwania (timeouts).
Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi