Jak API dla LLM powinny ograniczać żądania, tokeny i współbieżność?

Tłumaczenie automatyczne

Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.

API dla LLM potrzebuje osobnych limitów liczby żądań, liczby tokenów i współbieżnego przetwarzania. Sam limit żądań na minutę nie ochroni usługi, gdy długości promptów i generowanych odpowiedzi są różne. Dodaj limity wejścia i wyjścia dla pojedynczego żądania, a następnie sprawdź limity przyjmowania żądań względem docelowego opóźnienia.

Dlaczego liczba żądań nie wystarcza

Prompt z 10 tokenami i prompt ze 100,000 tokenów różnią się długością wejścia 10,000 razy. Ich całkowite koszty zależą też od długości odpowiedzi, modelu i pamięci podręcznej. Limit, który traktuje je jednakowo, może dopuścić więcej pracy, niż usługa jest w stanie przetworzyć.

Stosuj kilka ograniczeń razem:

LimitCo ogranicza
Żądania na minutęLiczbę wywołań, w tym wiele małych żądań
Tokeny wejściowe i wyjścioweZmienny zakres przetwarzania i zmienne koszty
Żądania współbieżneAktywne przetwarzanie, które zużywa zasoby dekodowania i pamięć KV
Tokeny na żądaniePojedyncze prompty lub odpowiedzi przekraczające przetestowane granice

Stosuj limity poszczególnych tenantów przed wspólnym limitem całej usługi, aby jeden tenant nie mógł zużyć wszystkich dostępnych zasobów.

Jak działa rezerwacja tokenów

Jedna z możliwych zasad aplikacji polega na rezerwowaniu przy przyjęciu żądania szacowanej liczby tokenów wejściowych oraz maksymalnej dozwolonej liczby tokenów wyjściowych. Żądanie z 2,000 tokenów wejściowych i limitem wyjścia wynoszącym 1,000 rezerwuje 3,000 tokenów. Jeśli wygeneruje 200 tokenów wyjściowych, rzeczywiste zużycie wynosi 2,200; aplikacja zwraca 800.

Oddziel ten przykład od zasad rozliczania dostawcy. OpenAI opisuje własne szacunki limitów żądań i tokenów. Anthropic opisuje osobne limity tokenów wejściowych i wyjściowych. Lokalna rezerwacja nie pozwala przewidzieć, który limit dostawcy zużyje żądanie. Rozliczaj przerwane żądania, gdy dane o zużyciu staną się dostępne, i ograniczaj rezerwacje, których nie da się rozliczyć.

Co sprawdzać pod obciążeniem

Łącz krótkie i długie prompty, krótkie i długie odpowiedzi oraz tenantów działających jednocześnie. Rejestruj czas w kolejce, odrzucone żądania, TTFT, TPOT i zużycie KV cache. Utrzymuj żądania w kolejce tylko przez ograniczony czas; w przeciwnym razie odrzucaj je z jasną zasadą ponawiania. Budżet tokenów na minutę nadal może dopuścić nagły wzrost ruchu, który przekracza pojemność pamięci dla współbieżnych żądań.

Szersze omówienie projektu znajdziesz w sekcji o ograniczaniu częstotliwości żądań w przewodniku inżynierii LLM.