«Hastighetsgevinsten var kontekst som falt på gulvet.» — utvikleren bak EdgeSync-LLM
Sitatet handler om utviklerens egen første implementasjon, beskrevet i en dev.to-post. Den kopierte rå K/V-tensorer direkte og målte 8,8x lavere TTFT. Den var feil. llama.cpp holder styr på mer enn tensorverdiene: cache-cellene har posisjons- og sekvensmetadata som brukes til å bygge attention-masken. Uten den bokføringen ble fragmentet inert, modellen hoppet over prefill, men attention kunne ikke se prefikset. I 14 av 24 cache-treff produserte modellen token for token det samme svaret som om prefikset aldri hadde vært der.
Den fungerende versjonen bruker de offentlige API-ene llama_state_seq_get_data og llama_state_seq_set_data, uten fork av llama.cpp og uten patch. Målt på en ARM64-telefon med Qwen2.5-0.5B-Instruct (Q4_K_M) og et delt prefiks på 123 tokens falt gjennomsnittlig TTFT fra 4828 ms kaldt til 486 ms varmt, altså 9,9x. På x86-64 var gevinsten 7,5x. Selve tilstandsfragmentet er 1,64 MB og tar 123 ms å gjenopprette.
Poenget for deg som bygger lokal inferens ligger ikke i tallene, men i kontrollen som avslørte feilen. EdgeSync sammenligner nå varmt svar mot kaldt svar (28 av 28 like på ARM64), og i tillegg mot en generering fra suffikset alene, uten prefiks. Hvis de to siste er like, gjør det injiserte fragmentet ingenting. Null av 28 traff der. En ren latens-benchmark ville aldri fanget det, fordi en ødelagt cache er rask nettopp fordi den er ødelagt.
Har du et system-prompt, et RAG-dokument eller en few-shot-blokk som går igjen i hver eneste forespørsel, betaler du prefill-kostnaden på nytt hver gang. Det er den regningen dette fjerner, forutsatt at du måler at konteksten faktisk overlever turen.