llama.cpp MMQ 최적화
CUDA: reduce MMQ stream-k overhead by JohannesGaessler · Pull Request #22298 · ggml-org/llama.cpp
·2026.04.25 23:22
llama.cpp CUDA MMQ 커널이 fastdiv와 동적 타일링으로 일부 구간에서 속도를 개선했다.
CUDA의 MMQ 커널에서 발생하던 stream-k 오버헤드를 줄이는 PR이다.
핵심 변경은 두 가지다.
- CPU에서 일부 값을 미리 계산하는 fastdiv를 써서 정수 나눗셈 비용을 낮췄다.
- 조건에 따라 stream-k 대신 tiling을 사용해 fixup 단계를 건너뛴다. 이때 타일 수에 맞춰 CUDA 블록 수를 동적으로 조정해, 각 블록이 정확히 하나의 타일을 처리하도록 했다.
이전 제안과 달리, 이 PR은 MoE 여부로 분기하지 않고 tiling의 효율 손실이 10% 이하면 tiling을 선택한다.
벤치마크는 NVIDIA P40에서 llama 8B 계열 양자화 모델을 대상으로 진행됐다. 결과는 전반적으로 큰 폭의 변화는 아니었고, 저비트 구간에서는 소폭 하락 또는 사실상 동일, 일부 3-bit 구간에서는 1~3% 수준의 개선이 보였다. 예를 들어 IQ3_S 계열에서는 microbatch 64~2048 구간에서 약 2~3% 빨라진 수치가 보고됐다.
요약하면, llama.cpp의 CUDA MMQ 경로를 미세 최적화한 패치이며, 체감 효과는 크지 않지만 특정 설정에서는 실측 개선이 확인됐다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.