Model o siedmiu miliardach parametrów zapisany w czterech bitach waży 3,5 GB. Żeby wygenerować jedno słowo odpowiedzi, sprzęt musi przeczytać te 3,5 GB z pamięci. Żeby wygenerować następne — znowu wszystkie 3,5 GB. I tak dla każdego tokenu.
To jedno zdanie wyjaśnia, dlaczego prędkość generowania nie zależy głównie od tego, jak szybko sprzęt liczy.
Czym jest przepustowość pamięci
Przepustowość pamięci to ilość danych, jaką akcelerator przepycha między pamięcią a rdzeniami obliczeniowymi w ciągu sekundy, podawana w gigabajtach na sekundę. Jest parametrem sprzętu, niezależnym od modelu — ale to właśnie ona, w połączeniu z rozmiarem wag, wyznacza górną granicę liczby tokenów na sekundę przy generowaniu odpowiedzi.
Wzór na sufit
Górną granicę liczy się przez podzielenie przepustowości przez rozmiar modelu w pamięci:
– laptop, pamięć operacyjna, około 80 GB/s — model 3,5 GB daje sufit około 23 tokenów na sekundę,
– karta graficzna klasy desktop, około 1000 GB/s — ten sam model daje sufit blisko 290 tokenów na sekundę,
– karta serwerowa z pamięcią HBM, ponad 3300 GB/s — sufit przekracza 900 tokenów na sekundę.
Realnie osiąga się siedemdziesiąt do osiemdziesięciu procent tej wartości. Reszta to narzut na wyniki pośrednie, pamięć podręczną kontekstu i synchronizację.
Dlaczego kwantyzacja przyspiesza model
Powszechne wytłumaczenie brzmi, że mniejsza precyzja upraszcza obliczenia. To nie jest główny powód. Kwantyzacja przyspiesza model przede wszystkim dlatego, że jest mniej bajtów do przeczytania. Plik czterokrotnie mniejszy to czterokrotnie mniej danych przepychanych przez tę samą rurę przy każdym tokenie.
Model zmniejsza się nie po to, żeby zmieścił się na dysku, tylko po to, żeby zmieścił się w przepustowości.
Ograniczenie pamięciowe kontra obliczeniowe
Zadanie ograniczone pamięciowo to takie, w którym rdzenie czekają na dane. Zadanie ograniczone obliczeniowo to takie, w którym dane czekają na rdzenie. Generowanie token po tokenie należy do pierwszej kategorii i wykorzystuje moc obliczeniową akceleratora na poziomie kilku procent.
Przetwarzanie promptu należy do drugiej — bo wszystkie tokeny wejściowe idą przez model naraz, więc jeden odczyt wag obsługuje tysiąc jednostek pracy zamiast jednej.
Z tej asymetrii wynika większość ekonomii serwowania modeli: batching, różnica w cenie tokenów wejściowych i wyjściowych oraz to, dlaczego karta obsługująca jedną rozmowę marnuje się prawie w całości.