Rate Limiting en Circuit Breakers in AI-systemen
Gedistribueerde AI-systemen zijn complex. Ze verwerken enorme hoeveelheden verzoeken en zware modelinferentie. Je bent afhankelijk van GPU-clusters, databases en API's van derden. Eén defect onderdeel of een plotselinge piek in het verkeer kan je hele systeem laten crashen.
Je hebt twee hulpmiddelen nodig om je systeem te beschermen: rate limiting en circuit breakers.
Rate Limiting Rate limiting voorkomt dat een enkele gebruiker of service te veel middelen verbruikt. Het zorgt voor eerlijke toegang voor iedereen.
Veelvoorkomende methoden:
- Token Bucket: Het beste voor AI. Het staat korte pieken in activiteit toe terwijl het een stabiel gemiddelde behoudt.
- Leaky Bucket: Houdt een constante stroom van verzoeken aan.
- Fixed Window: Eenvoudig, maar kan pieken veroorzaken aan het begin van een nieuw venster.
- Sliding Window: Nauwkeuriger dan fixed windows.
Pro tip voor AI: Beperk op basis van het aantal tokens, niet alleen op het aantal verzoeken. Eén prompt met 4.000 tokens verbruikt meer middelen dan een prompt met 10 tokens.
Circuit Breakers Een circuit breaker houdt oproepen naar services zoals je GPU-server of vectordatabase in de gaten. Als een service te vaak faalt, gaat de breaker open. Het stopt onmiddellijk alle oproepen naar die service. Dit voorkomt een totale systeemcrash.
De circuit breaker heeft drie statussen:
- Closed: Alles werkt normaal.
- Open: De service faalt. Oproepen falen direct of maken gebruik van een fallback.
- Half-Open: Het systeem test de service om te zien of deze is hersteld.
Best practices:
- Houd trage oproepen bij. Als een LLM er te lang over doet, behandel dit dan als een fout.
- Maak onderscheid tussen fouttypen. Laat de breaker niet afgaan bij gebruikersfouten zoals 400 Bad Request. Laat hem alleen afgaan bij verbindingsfouten of time-outs.
Optionele leercommunity: https://t.me/GyaanSetuAi