Przepustowość staje w miejscu.
Jedno zapytanie działa. Dziesięć równoległych i kolejka nigdy się nie opróżnia. GPU jest zajęte, ale nie użyteczną pracą.
Większość problemów z inferencją to nie problemy z modelem. To pamięć, batching, cache i planowanie. Profiluję stos, który uruchamiasz, zmieniam to, co naprawdę go ogranicza, i pokazuję przed i po na Twoim obciążeniu.
+31%
dekodowanie po strojeniu produkcyjnym
262K
kontekstu na jednej karcie 24 GB
16×
mniej przechwyceń grafów CUDA
Jedno zapytanie działa. Dziesięć równoległych i kolejka nigdy się nie opróżnia. GPU jest zajęte, ale nie użyteczną pracą.
Długie prompty mieszczą się tylko przy krótkim kontekście albo serwer spada na CPU i opóźnienia się załamują. Limitem jest cache KV, nie wagi.
Każdy nowy klient dodaje tokeny. Koszt serwowania rośnie szybciej niż przychód, a obniżka, której potrzebujesz, jest w stosie, nie w umowie.
Test obciążeniowy na Twoich promptach, długościach kontekstu i współbieżności. Znajduję rzeczywiste wąskie gardło, zanim cokolwiek zmienię: prefill, dekodowanie, przepustowość cache KV, planowanie albo host.
Cache decyduje o tym, ile kontekstu się mieści i jak szybko działa dekodowanie. Skwantyzowany cache, stronicowana alokacja, ponowne użycie prefiksu: wybieram kombinację, na którą pozwala Twój budżet dokładności.
Wagi i cache skwantyzowane do najniższej precyzji, która nadal zalicza Twoje ewaluacje. Mierzone na Twoich zadaniach, nie na leaderboardzie.
Ciągły batching, dzielony prefill, dekodowanie spekulatywne, grafy CUDA. Cel: mniej martwych przerw i więcej tokenów na sekundę z karty.
API zgodne z OpenAI, podmiana modelu na gorąco, health checks i metryki, żeby Twoje narzędzia dalej działały, a zespół mógł to obsługiwać.
62 → 82tok/s
dekodowanie po moim strojeniu produkcyjnym (+31%)
4,125bity
na wartość KV, cache TBQ4
16×
mniej przechwyceń grafów CUDA niż upstream
≤300MiB
przypiętej RAM na checkpointy, zamiast 4,7 GB
Źródło: README mojego forka i moje commity w llama.cpp-turboq-mtp; Qwen3.6-27B, jedna RTX 4090.
Matematyka pod spodem.
To zależy od tego, co Cię ogranicza. Na moim stosie strojenie dekodowania i cache KV podniosło szczytowe dekodowanie z 62 do 82 tok/s, +31%, i zmniejszyło liczbę przechwyceń grafów CUDA 16×. Stos z oczywistym wąskim gardłem zwykle zyskuje więcej; dobrze dostrojony mniej. Przegląd daje liczbę, zanim zdecydujesz się na wdrożenie.
Może, dlatego się ją mierzy. Kwantyzuję do najniższej precyzji, która nadal zalicza Twoje ewaluacje, i raportuję różnicę. 4-bitowy cache nie jest darmowy jakościowo; to wymiana, którą powinieneś zobaczyć, a nie zgadywać.
Ten, który pasuje do Twojego sprzętu i obciążenia. Uruchamiam llama.cpp na produkcji na 4090 i czytam kernele; silnik wybieram po teście obciążeniowym, nie przed.
Tylko na brzegach: kształt promptu, cache, routing między modelami, dyscyplina kontekstu. Jeśli nie kontrolujesz stosu serwującego, największe zyski zwykle są w tym, co wysyłasz, a nie w silniku.
Przegląd to tydzień do dwóch. Wdrożenie strojenia ustalamy potem, zwykle dwa do czterech tygodni, zależnie od tego, jak dużo stosu się zmienia.
30-minutowa rozmowa techniczna z inżynierem, który to buduje. Bez działu sprzedaży, bez slajdów.