All news

Multi-token prediction trafia do llama.cpp (beta)

PR #22673 zintegrował obsługę MTP w llama.cpp 16 maja 2026. Społecznościowy benchmark Qwen 3.6-27B zgłosił skok prędkości dekodowania z 38 do 65 tok/s na pojedynczej RTX 5090 — przyspieszenie 1,71×.

Multi-token prediction (MTP) została zintegrowana z llama.cpp 16 maja przez PR #22673 autorstwa am17an. Funkcja wchodzi w fazę beta — za flagą --mtp w llama-cli i llama-server, domyślnie wyłączona.

Społecznościowy benchmark opublikowany w ciągu pierwszej doby po merge zgłosił: Qwen 3.6-27B dekoduje z prędkością 65 tok/s na pojedynczej RTX 5090, w porównaniu do 38 tok/s bez MTP — przyspieszenie 1,71× przy Q4_K_M bez dostrzegalnej regresji jakości w porównaniach promptów obok siebie. Na razie to jedyny punkt danych; szersze pokrycie build × model zajmie kilka cykli odświeżania.

Czym właściwie jest MTP

Model jest trenowany z dodatkowymi głowami wyjściowymi, które przewidują kolejne 2, 3 lub 4 tokeny jednocześnie z tego samego wspólnego ukrytego stanu backbone’a. Główna głowa następnie ponownie się uruchamia, aby zweryfikować sekwencję kandydacką. Jeśli spekulacyjne tokeny się zgadzają, dostaje się je praktycznie za darmo. Jeśli nie, dla tego kroku wraca się do dekodowania token-po-tokenie.

To kompresuje to, co tradycyjnie robi speculative decoding — uruchamianie małego modelu draft obok dużego modelu target — w jeden model z wbudowanymi głowami predykcyjnymi. Narzut to z grubsza jedna dodatkowa warstwa transformer na każdą dodatkową pozycję predykcji, a nie cała druga sieć. Koszt pamięci jest niewielki; koszt przepustowości przy nieudanych weryfikacjach to główna wada, ale na modelach trenowanych pod MTP wskaźnik trafień jest wystarczająco wysoki, by średnie dekodowanie było wyraźnie szybsze.

Czego MTP wymaga od modelu

MTP wymaga głów predykcyjnych wpiętych w trening — runtime nie potrafi ich zsyntetyzować po fakcie. Cytowany benchmark użył Qwen 3.6-27B przy Q4_K_M; flaga --mtp to no-op dla każdego modelu, którego checkpoint nie zawiera wag dodatkowych głów, więc pozostawienie jej domyślnie włączonej nie szkodzi.

Artykuł o DeepSeek-V3 spopularyzował MTP jako pomocniczy cel treningu. Które modele open-weights wydane po artykule DeepSeek-V3 niosą głowy w swoich publicznych checkpointach — i o ile pozycji do przodu — skatalogujemy per model przy następnym odświeżeniu danych, cytując bezpośrednio każdą model card zamiast opierać się na architektonicznych plotkach.

Zastrzeżenia

  • Beta znaczy beta. Sama PR #22673 to sygnalizuje; spodziewaj się surowych krawędzi i obserwuj powiązany tracker issue’ów llama.cpp, zanim oprzesz na tym produkcję.
  • Przyspieszenia skalują się z tym, co jest wąskim gardłem dekodowania. Na bogatych w compute i nakarmionych pasmem rigach pas spekulacyjny ma zapas; na rigach ograniczonych pasmem zysk się kurczy. 1,71× na 5090 to jeden punkt na tym gradiencie — nie zakładaj, że jest uniwersalny.

Jak włączyć

Zbuduj llama.cpp z brancha main po 16 maja i przekaż --mtp do llama-server lub llama-cli. Wsparcie upstream w Ollama, LM Studio i Jan zazwyczaj wlecze się jeden cykl release za llama.cpp main — sprawdź release notes każdego runtime’u dla pierwszego buildu, który to podchwytuje.

Źródła