b11408: ggml-cpu에 SpacemiT X60용 Q8_0 IME1 매트릭스 커널 추가 (#28479)
요약
본 기술 기사는 SpacemiT X60 환경에서 ggml-cpu 라이브러리를 업데이트하여 Qwen2.5-0.5B-Instruct 모델의 Q8_0 양자화 정확도를 향상시킨 내용을 다룹니다. 기존에는 Q8_0이 가속 경로가 없어 성능 저하가 심했지만, 새로운 IME1 매트릭스 커널과 4행 활성화 양자화를 추가하여 전반적인 추론 속도가 크게 개선되었습니다.
핵심 포인트
- Q8_0 지원을 위해 IME1 매트릭스 커널 및 4행 활성화 양자화가 추가됨.
- 기존 Q8_0은 가속 경로 부재로 인해 성능이 매우 느렸음.
- 업데이트 후, 특정 작업(pp128)의 추론 속도가 약 10배 가까이 향상됨 (10.70 t/s -> 93.87 t/s).
- 정확도 테스트 결과 최대 상대 오차는 1e-6 수준으로 양호함.
- ggml-cpu : SpacemiT X60용 Q8_0 IME1 매트릭스 커널 추가
SpacemiT X60에서는 IME 매트릭스 가속이 Q4_0/Q4_1/Q4_K만 지원했습니다. Q8_0은 IME1 커널이 없었고, SpacemiT 빌드가 GGML_CPU_REPACK=OFF로 설정되어 있어 리패킹 경로가 어느 쪽에도 컴파일되지 않았기 때문에, Q8_0은 가속된 경로가 전혀 없어 동일 보드에서 Q4_0 대비 프리필(prefill) 시 약 10배 느리게 작동했습니다.
- make_block_q8_0x16 및 Q8_0 리패킹 항목 추가: IME1 vmadot 시퀀스가 예상하는 16열 레이아웃으로 가중치들을 인터리브(interleave)합니다.
- ime1::gemm_kernel_i8i8 추가: 단일 행과 4행 A 경로를 가진 int8 x int8 IME1 커널을 추가했습니다. 이 4행 경로는 각 B 패널을 한 번 로드하고 이를 A의 4개 행에 걸쳐 재사용합니다.
- 4행 활성화 양자화를 위해 quantize_a_4row_i8 추가
- 둘 다 forward_mul_mat 및 Q8_0 리패킹 팩토리로 연결
- 문서: X60에서 Q8_0 지원을 표시
정확도는 K = 32부터 4096까지의 양자화 정확도 정수 참조(quant-exact integer reference)를 통해 확인했으며, 최대 상대 오차는 약 1e-6이었고, 여러 프롬프트에 걸쳐 생성이 일관성을 유지하는지 확인했습니다.
Milk-V Jupiter (SpacemiT X60), Bianbu 2.1.1, gcc 14.2 환경에서 Qwen2.5-0.5B-Instruct Q8_0을 테스트했으며, llama-bench -t 4 under taskset -c 0-3, 5 repetitions를 비활성 보드에서 실행한 결과: pp128은 10.70 t/s에서 93.87 t/s로 향상되었습니다. Q4_0은 이 경로에 영향을 주지 않기 때문에 예상대로 106.40 -> 107.51 t/s로 변동이 없었습니다.
-
ggml-cpu : q8_0_16x32 선언을 IME1 섹션으로 이동
-
ggml-cpu : q8_0 IME1 커널 할당 정렬
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기