ggml-cpu: ARM NVFP4 내적(dot product) 연산에 UE4M3 LUT 사용
요약
ggml-cpu 프로젝트에서 ARM 프로세서의 NVFP4 내적 연산 성능을 높이기 위해 UE4M3 룩업 테이블(LUT) 최적화를 적용했습니다. 이를 통해 ARM 구현을 x86과 일치시키고 CPU 기반 추론 속도를 크게 향상시켰습니다.
핵심 포인트
- ARM 구현에 UE4M3 LUT 최적화 확장 적용
- NVFP4 내적 연산 시 스케일 디코딩 효율 개선
- Qwen3.5-4B 모델 기준 t/s가 1.89에서 9.97로 대폭 상승
- x86과 ARM 간의 룩업 테이블 인프라 일치화
개요
이 PR(Pull Request)은 #23961에서 도입된 UE4M3 룩업 테이블 (lookup table, LUT) 최적화를 ARM 구현의 NVFP4 내적 (dot product) 연산에 확장 적용합니다.
ARM 구현은 이제 UE4M3 스케일 디코딩 (scale decoding)을 위해 기존의 GGML_CPU_UE4M3_TO_FP32 룩업 테이블을 사용합니다. 이는 공유된 룩업 테이블 인프라를 재사용하면서 ARM 구현을 x86 구현과 일치시킵니다.
lama-bench
기준점 (master)
명령어:
./build-master/bin/llama-bench -m models/Qwen3.5-4B-NVFP4.gguf -p 512 -n 0 -r 5
model size params backend threads test t/s
qwen35 4B NVFP4 3.28 GiB 4.33 B CPU 4 pp512 1.89 ± 0.00
이 PR
명령어:
./build-lut/bin/llama-bench -m models/Qwen3.5-4B-NVFP4.gguf -p 512 -n 0 -r 5
model size params backend threads test t/s
qwen35 4B NVFP4 3.28 GiB 4.33 B CPU 4 pp512 9.97 ± 0.07
이전 PR 23961(ggml-cpu : nvfp4 내적 연산을 위한 AVX2 및 AVX 최적화 추가)에서 공유된 수치들도 훌륭해 보입니다.
기준점 (master)
model size params backend threads test t/s
qwen3 4B NVFP4 2.63 GiB 4.02 B CPU 10 pp512 2.85 ± 0.03
초기 AVX2 구현
model size params backend threads test t/s
qwen3 4B NVFP4 2.63 GiB 4.02 B CPU 10 pp512 5.65 ± 0.03
최종 AVX2 구현 (LUT 포함)
model size params backend threads test t/s
qwen3 4B NVFP4 2.63 GiB 4.02 B CPU 10 pp512 30.48 ± 0.14
이제 CPU 전용 추론 (inference)에서 하나 또는 몇 개의 아주 작거나 작은 NVFP4 GGUF들을 시도해 볼 때가 된 것 같습니다.
제 오래된 노트북을 더 유용하고 효율적으로 사용할 수 있도록 CPU 관련 최적화가 이루어지는 것을 보는 것은 언제나 즐겁습니다.
제출자: /u/pmttyji
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기