Ilu jednoczesnych użytkowników może obsłużyć jeden domowy model AI, zanim opóźnienia staną się niestabilne?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Jeden domowy model AI może niezawodnie obsługiwać od jednego do kilku interaktywnych użytkowników, ale stabilny limit zależy od zapotrzebowania na tokeny, grupowania żądań i docelowych opóźnień.

Model generujący 30 tokenów na sekundę może wydawać się szybki podczas jednej krótkiej rozmowy, ale może zwolnić, gdy cztery osoby jednocześnie prześlą długie zapytania. Równoległość zużywa pamięć pamięci podręcznej KV, współdzieli przepustowość dekodowania i powoduje nagłe wzrosty kolejki. Właściwym limitem jest najwyższe obciążenie oferowane, przy którym nadal osiągane są określone docelowe wartości p95 dla czasu do pierwszego tokena i szybkości generowania tokenów podczas typowego korzystania przez rodzinę.

Równoległość zamienia przepustowość w czas oczekiwania

Zgrubne oszacowanie przepustowości polega na podzieleniu utrzymywanej przepustowości generowania przez średnią liczbę tokenów żądanych na sekundę we wszystkich aktywnych sesjach. Gdy zapotrzebowanie zbliża się do przepustowości usługi, niewielkie skoki obciążenia tworzą długie kolejki. Użytkownicy nie są identycznymi jednostkami — odpowiedź zawierająca 50 tokenów i odpowiedź zawierająca 2000 tokenów obciążają serwer w różny sposób.

Analiza opóźnienia i przepustowości wyjaśnia, że grupowanie żądań zwiększa łączną przepustowość, często jednak kosztem indywidualnego opóźnienia odpowiedzi. To napięcie decyduje o tym, czy dodatkowe sesje będą działać stabilnie.

Wstępne przetwarzanie promptu może również blokować dekodowanie, zależnie od harmonogramu zadań. Dwóch użytkowników wklejających duże dokumenty może zaszkodzić wszystkim bardziej niż sześciu użytkowników zadających krótkie pytania. Sama liczba użytkowników bez rozkładu długości promptów i odpowiedzi nie jest więc miarodajna.

Pamięć podręczna KV i harmonogramowanie tworzą drugi limit

Każda aktywna sekwencja przechowuje klucze i wartości mechanizmu uwagi dla swojego kontekstu. Dłuższe historie i większe grupy zwiększają zużycie pamięci podręcznej KV, aż żądania zostaną odrzucone, przeniesione lub opóźnione. Ciągłe grupowanie może przyjmować nowe zadania między iteracjami dekodowania, poprawiając wykorzystanie zasobów, ale nie tworzy dodatkowej pamięci.

Techniczne wyjaśnienie ciągłego grupowania pokazuje, jak harmonogramowanie na poziomie iteracji wypełnia niewykorzystane miejsca w grupie. Korzyść zależy od charakteru obciążenia i może nieznacznie zwiększać rywalizację między żądaniami.

Opóźnienie staje się niestabilne w pobliżu nasycenia, ponieważ długość kolejki gwałtownie reaguje na zmienność napływu żądań. Średnie opóźnienie może rosnąć stopniowo, podczas gdy p95 i maksymalne opóźnienie nagle skaczą. Stabilna przepustowość powinna znajdować się poniżej tego punktu załamania, a nie przy najwyższej wartości tokenów na sekundę z benchmarku.

Kiedy liczba użytkowników przestaje przewidywać jakość działania

Ten sam serwer może obsługiwać więcej użytkowników podczas autouzupełniania niż w przypadku RAG, korzystania z narzędzi lub generowania długich treści. Zimne uruchomienia, ograniczanie wydajności z powodu temperatury, wyszukiwanie i synteza mowy dodają etapy wykraczające poza samo udostępnianie modelu. Wskaźnik równoległości dotyczący wyłącznie modelu nie gwarantuje responsywności całej aplikacji.

Przewodnik dotyczący udostępniania pamięci opisuje pamięć, kontekst, grupowanie i równoległość jako wzajemnie powiązane ograniczenia. Zmiana dowolnego z tych elementów może przesunąć punkt załamania przepustowości.

Przewidywanie zawodzi również wtedy, gdy żądania rodziny napływają jednocześnie, a nie niezależnie. Czterech użytkowników, których sesje rzadko się nakładają, może nie stanowić problemu, podczas gdy dwóch automatycznych agentów może stale nasycać model. Mierz rzeczywistą pracę, a nie liczbę zarejestrowanych kont.

Znajdź punkt załamania równoległości za pomocą testu obciążeniowego

Odtwórz realistyczne krótkie, średnie i długie żądania przy jednej, dwóch, czterech i ośmiu równoczesnych sesjach. Nie zmieniaj modelu, kwantyzacji, limitu kontekstu ani parametrów próbkowania. Rejestruj czas oczekiwania w kolejce, opóźnienie do pierwszego tokena, opóźnienie między tokenami, współczynnik ukończenia, zużycie pamięci podręcznej KV oraz wartości p50, p95 i maksymalne.

Wykorzystaj architekturę współdzielonych sesji modelu jako kontekst testu, gdy kilka domowych sesji korzysta z jednego modelu. Etapy RAG i narzędzia pozostaw wyłączone albo mierz je oddzielnie.

Uznaj limit za stabilny, gdy jest to najwyższy poziom równoległości, przy którym p95 opóźnienia do pierwszego tokena mieści się w docelowej wartości dla gospodarstwa domowego, a kolejka nie wykazuje rosnącego trendu i nie występują błędy pamięci. Zachowaj 20–30% zapasu przepustowości na nagłe skoki obciążenia. Powtarzaj testy za każdym razem, gdy zmieni się długość kontekstu, model lub harmonogram zadań.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.