VRAM에 자주 쓰는 expert만 올리자, LocalLLaMA가 본 27% 속도 향상

r/LocalLLaMA의 “Hot Experts” post는 큰 MoE model을 consumer workstation에서 돌리는 사람들이 바로 이해할 만한 병목을 건드렸다. 작성자는 Qwen3.5-122B-A10B를 4090 24GB와 Ryzen 9 7950X, 96GB RAM 조합에서 실행했고, all-CPU expert path의 15 tok/s대가 streaming response에서는 답답하다고 설명했다. 그래서 자주 route되는 expert만 VRAM에 올리는 dynamic cache를 실험했다.

아이디어는 단순하다. 최근 N tokens 동안 어떤 experts가 많이 선택됐는지 추적한 뒤, 그 experts를 “hot”으로 보고 VRAM cache에 둔다. 나머지는 system RAM에 남긴다. 매 N tokens마다 cache를 다시 균형 잡으면서, expert tensor를 옮기는 비용보다 VRAM에서 처리하는 이득이 크다는 bet를 거는 방식이다. 작성자는 code를 llama.cpp fork로 공개했다.

공유된 수치는 꽤 구체적이다. all-CPU experts baseline은 token generation이 약 15.65 tok/s였다. 22.6GB VRAM을 쓰는 layer-based offload에서는 약 17.87 tok/s가 나왔다. 반면 22.2GB VRAM을 쓰는 hot expert cache는 세 번의 generation run에서 22.26, 22.97, 22.77 tok/s를 기록했다. 작성자는 all-CPU baseline 대비 44.8%, 같은 VRAM commitment의 layer-based offload 대비 26.8% 빠르다고 정리했다.

댓글은 바로 비교 기준으로 파고들었다. 어떤 사용자는 llama-server의 fit option이나 MoE 관련 flag를 먼저 써 봐야 한다고 했고, 다른 사용자는 static mode에서 imatrix로 중요한 experts를 미리 고르는 아이디어를 제안했다. PowerInfer 같은 기존 project와 닮았다는 언급도 있었다. 이 반응은 LocalLLaMA답다. headline 숫자보다 “이게 upstream에 들어갈 수 있나”, “다른 offload strategy와 공정하게 비교했나”, “prefill과 generation latency를 분리했나”를 묻는다.

이 실험의 의미는 Qwen3.5-122B 하나의 속도보다 넓다. MoE model은 모든 parameter를 매 token마다 쓰지 않기 때문에, 어떤 expert를 빠른 memory에 둘지 선택하는 문제가 performance의 일부가 된다. unified memory가 없는 PC에서는 PCIe와 system RAM 왕복이 실제 비용이다. Hot expert cache가 주류 기능이 될지는 아직 모른다. 하지만 local LLM community가 이제 model size만이 아니라 memory hierarchy 자체를 tuning 대상으로 보고 있다는 점은 분명하다.