marco-lu2508/fllm은 Rust만으로 만든 로컬 LLM 추론 엔진이다. GGUF 모델을 읽고 OpenAI·Anthropic·Ollama 호환 API를 제공한다. 2026-11-07 커밋 fbf33f5는 가중치를 2~4비트 수준으로 묶어 압축해 저장하는 양자화 포맷 Q2_K, Q3_K, IQ4_XS가 공용으로 쓰는 커널(kernel_extra)에 메모리 프리페치(prefetch)를 넣었다. 정수 연산은 그대로이고 블록을 메모리에서 읽어들이는 시점만 바뀐다.
이 프리페치는 Q4_K~Q6_K 커널이 이미 쓰던 방식이다. 각 행(row)의 블록 4개 앞을 미리 요청하는데, 공유 커널은 그랬고 하드웨어 프리페처에 맡겼다. 행마다 따로 흐르는 길이 몇 블록짜리 메모리 스트림이라 하드웨어 프리페처가 미리 읽기를 올리지 못한 탓이다. 이번에는 각 블록 앞에 같은 요청을 넣었고, 단일 행 디코딩뿐 아니라 검증 패스(verification pass)에 쓰이는 커널에도 적용된다. 커밋 메시지에 기록된 측정은 320MB 가중치, 한 행, 릴리스 빌드, 2스레드 조건에서 두 빌드를 번갈아 세 차례 돌린 중앙값이다. Q2_K는 28.3ms에서 19.1ms로 32% 줄었고 IQ4_XS는 15.5ms에서 13.4ms로 13% 줄었다. Q3_K는 19.1ms에서 18.9ms로 변화가 없고(실행 간 편차 18.3~21.4ms), 대조군인 Q4_K는 10.8ms 그대로, Q6_K는 11.0ms에서 11.6ms였다.
다만 이 수치는 커널 단위다. 실제 모델이 없었기 때문에 Q2_K와 IQ4_XS는 무작위 가중치로 커널만 측정했고 종단 간 성능은 확인하지 않았다. 값이 정확히 유지되는지 보는 cpu_quantized, projection_kernels, the_exact_choice, noise_of_a_verification_pass 테스트는 통과했다. Q3_K가 줄지 않은 이유는 한계가 메모리 요청이 아니라 3비트 값과 6비트 스케일의 디코딩에 있고, 그쪽이 다음에 볼 과제로 남아 있다. 프리페치 방식은 Q2_K와 IQ4_XS에서 이득이 확인된 방식이지만, 모델 전체에서 같은 폭이 나오는지는 판단하기 이르다.