Back to archive
#ai#llm#glossary#aigen

Continuous Batching

Serwer generuje dwie odpowiedzi jednocześnie. Jedna kończy się szybko, druga jest długa. Jeśli kolejny użytkownik musi czekać na zakończenie całej pary, zwolnione miejsce marnuje się przez wiele kroków.

Continuous Batching pozwala zmieniać skład grupy obsługiwanych żądań między kolejnymi iteracjami modelu. Zakończona odpowiedź opuszcza batch — wspólnie przetwarzaną grupę — a nowe żądanie może wejść na jej miejsce.

Długa odpowiedź rozwija się dalej, podczas gdy krótką zastępuje następna. Za wybór uczestników odpowiada scheduler, czyli program planujący pracę. Nie trzeba czekać na jednego najwolniejszego uczestnika całej wcześniejszej grupy.

Takie wykorzystanie miejsca może zwiększać przepustowość, lecz nie gwarantuje krótszego oczekiwania każdemu użytkownikowi. Znaczenie mają długości żądań, limity pamięci i reguły planowania. Przy podobnych długościach przewaga nad stałą grupą może być mała.

Źródło mechanizmu: Orca, §3, „Iteration-level scheduling”.

Mechanizm i szczegóły

Prasa z dwoma torami: długa turkusowa taśma biegnie dalej, a miejsce krótkiej ochrowej zajmuje pomarańczowa.

To szczególnie przydatne w Decode: jedna osoba potrzebuje krótkiej odpowiedzi, inna kilkuset tokenów. Samo zebranie kilku żądań przed uruchomieniem modelu nie zapewnia możliwości zmiany składu już działającego batcha. Nowe żądanie wymaga też Prefill; obsługa tego etapu razem z generowaniem zależy od implementacji silnika.

Czy C musi czekać na A?

Własny eksperyment: dostępne są dwa miejsca. A i B są gotowe w chwili 0 i potrzebują odpowiednio sześciu oraz dwóch rund. C staje się gotowe w chwili 1, potrzebuje dwóch rund. W obu wariantach wykonujemy te same obliczenia, ale w stałej grupie miejsce po B nie przyjmuje C aż do końca A.

Przy Continuous Batching C rusza w chwili 2 i kończy w 4; przy stałej grupie rusza w 6 i kończy w 8. Przełącz B na sześć rund: w tym przypadku wcześniejsze zwolnienie miejsca znika i obie strategie dają ten sam harmonogram.

Rundy mają tu umowną, jednakową długość. Prefill i transfery są poza eksperymentem; „gotowe” oznacza gotowość do pokazywanych rund. Na GPU czas iteracji zależy od jej pracy, więc liczba zajętych miejsc nie jest procentem wykorzystania urządzenia.

Możliwość dołączenia żądania nie gwarantuje natychmiastowego startu: obowiązują limity pamięci i polityka schedulera (Orca, §4.2). PagedAttention ułatwia gospodarowanie pamięcią, ale samo nie ustala kolejności obsługi.

Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.