
BeeLlama.cpp v0.4.0: KVarN, KV 정밀도 테일(precision tail), q2_0-q3_1 KV 캐시, 업스트림
요약
llama.cpp의 포크 버전인 BeeLlama v0.4.0이 출시되었습니다. KVarN 양자화와 KV 캐시 정밀도 테일(Precision Tail) 기술을 통해 VRAM 사용량을 최소화하면서도 모델의 추론 정밀도를 크게 개선했습니다.
핵심 포인트
- KVarN: 분산 정규화를 통해 비트당 정밀도를 높인 KV 캐시 양자화 기술 적용
- KV 캐시 정밀도 테일: 최근 토큰을 BF16/F16으로 저장하여 정밀도 손실 방지
- q2_0~q3_1, q6_0, q6_1 등 다양한 표준 KV 캐시 유형 지원
- 최신 llama.cpp 코드베이스를 기반으로 리베이스 및 최적화 완료
요약(TL;DR): 벤치마크로 모든 주장이 입증된, 더 많은 KV 캐시 양자화 (quantization) 기능을 갖춘 llama.cpp 포크(fork)입니다: KVarN, KV 캐시 정밀도 테일 (KV cache precision tail), 추가적인 표준 KV 캐시 유형 (q2_0-q3_1, q6_0, q6_1) 등이 포함됩니다. BeeLLama v0.4.0은 기능을 거의 비슷한 비율로 제거하고 추가한 복잡한 업데이트입니다. 이전까지 이 포크의 주요 핵심은 DFlash와 TurboQuant + TCQ였습니다. 하지만 이제 DFlash는 업스트림 llama.cpp에서 지원하며, 사실상 전체 추측적 디코딩 (speculative decoding) 스택도 지원됩니다. 또한 TurboQuant는 제가 수행한 모든 벤치마크 결과, 일반적인 양자화 (quants) 대비 정밀도 향상을 제공하지 못했기에 그 자리를 유지하지 못했습니다. TCQ는 어느 정도 명분이 있었으나, 상당한 성능 비용이 발생했습니다. 따라서 포크 전용 DFlash 구현(원할 경우 v0.3.1 / v0.3.2를 통해 여전히 사용 가능)과 모든 TurboQuant 관련 사항을 제거하고, 최신 llama.cpp 코드베이스를 기준으로 포크를 리베이스 (rebase) 했습니다. 대신 v0.4.0에서는 현재 상황에서 더 중요하다고 판단되는 기능들에 집중했으며, 앞으로 추가할 계획인 더욱 흥미로운 기능들도 준비 중이고 그중 일부는 이미 개발 단계에 있습니다. 이번 릴리스는 새로운 논문인 'KV 캐시 정밀도 테일: 구현 및 벤치마크 (KV Cache Precision Tail: Implementation and Benchmarks)'에 의해 뒷받침됩니다. 이 논문에는 Qwen 3.6 27B와 Gemma 4 31B를 모두 사용하여 KV 캐시 정밀도 테일 및 현재의 KVarN 구현에 대한 KLD 벤치마크를 포함하며, 내부 메커니즘에 대한 설명과 결과 분석이 담겨 있습니다. KVarN: 비트당 더 나은 정밀도를 제공하는 분산 정규화 KV 캐시 양자화 (Variance-normalized KV-cache quantization, 논문 참조). 몇 주 전 v0.3.2 프리뷰(Preview)에서 이미 소개되었으나, 당시에는 성능 문제와 VRAM 사용량 급증이 있는 매우 초기 단계의 구현이었습니다. 이제 v0.4.0에서는 진정한 결과물을 선보입니다: 정밀도는 여전히 동일한 비트 너비(bit width)를 가진 일반적인 양자화 모델이 제공하는 것보다 높으면서도, 프리필 (prefill), 디코드 (decode) 및 메모리에 대한 희생이 거의 없거나 최소화되었습니다.
SWA (Sliding Window Attention) 아키텍처(Gemma, GPT-OSS)의 경우, SWA 링(ring)과 VRAM 사용량 사이의 문제로 인해 아직 프로덕션 환경에 적용하기에는 준비가 부족하지만, 다른 모델들은 잘 작동할 것입니다.
KV 캐시 정밀도 테일 (KV cache precision tail). 혼합 정밀도 (mixed-precision) KV 캐시 분야에서 유망한 새로운 기능입니다. 이 기능은 나머지 KV 캐시는 평소처럼 양자화(quantized)하되, 최근 토큰의 특정 개수만큼은 BF16 또는 F16으로 저장하도록 지정할 수 있게 해줍니다. 이러한 방식을 통해 가장 중요한(hottest) 토큰들을 손실 없이(lossless) 저장할 수 있으며, 모델이 사용자의 작업 세부 사항, 코드 또는 데이터를 잘못 읽는 것을 방지할 수 있습니다. 많은 시나리오에서, KLD 벤치마크가 이에 대해 상당히 긍정적으로 반응하는 것을 보여주듯, 전체 캐시를 BF16으로 전환하여 VRAM 비용을 폭증시키지 않고도 KV 캐시 양자화로 인한 정밀도 손실 문제를 상당 부분 해결할 수 있음을 의미합니다. 다만, SWA 링이 이러한 메커니즘과 호환되지 않기 때문에 SWA 아키텍처는 다시 한번 현재 지원이 원활하지 않다는 점에 유의하십시오.
추가적인 표준 KV 캐시 유형. q6_0 및 q6_1이 상위 계층에 추가되어, 업스트림(upstream)의 q5_0/1 및 q8_0 유형 사이에서 정밀도와 VRAM 간의 균형을 미세 조정할 수 있게 되었습니다. q2_0, q2_1, q3_0 및 q3_1은 KVarN이 잘 작동하지 않지만 극단적인 양자화 없이는 모든 것을 VRAM에 담을 수 없는 경우를 위해 turbo3 및 turbo2를 대체하는 용도로 추가되었습니다.
DFlash를 위한 적응형 draft-max (Adaptive draft-max). Bee 자체 DFlash 구현 기능 중 메인 메커니즘과 깔끔하게 분리되어 있어 업스트림 병합 과정에서도 살아남은 몇 안 되는 기능 중 하나입니다. 업스트림의 기본값인 고정된 draft-max 8 대신, BeeLlama은 엔진이 현재 DFlash로부터 얻는 실제 이득에 따라 draft-max 16을 사용하며, 이를 적응적으로 낮출 수 있습니다. 만약 이득이 기준치(baseline) 미만으로 떨어지면 DFlash를 완전히 비활성화할 수도 있습니다.
추론 루프 보호 (Reasoning-loop protection). 서버가 반복되는 숨겨진 추론(hidden reasoning) 출력을 감지하고 개입하여, 모델이 루프에서 벗어나도록 강제합니다.
GitHub 리포지토리: https://github.com/Anbeeld/beellama.cpp
Qwen 3.6 27B Q5_K_S 64k에 대한 KLD 결과
전체 벤치마크 데이터 및 분석: KV Cache Precision Tail: Implementation and Benchmarks .
Cache 유형 Tail 0 median Tail 1024 median Tail 2048 median
q2_0 0.019374 0.004648 0.003696 -76.0% -20.5%
q3_0 0.004696 0.001551 0.001382 -67.0% -10.9%
q4_0 0.001846 0.001057 0.001019 -42.7% -3.6%
q5_0 0.001154 0.000938 0.000928 -18.7% -1.1%
q6_0 0.000960 0.000908 0.000904 -5.4% -0.4%
q8_0 0.000909 0.000897 0.000895 -1.3% -0.2%
kvarn2 0.007108 0.003811 0.002820 -46.4% -26.0%
kvarn3 0.001797 0.001316 0.001158 -26.8% -12.0%
kvarn4 0.001111 0.000994 0.000952 -10.5% -4.2%
kvarn5 0.000927 0.000897 0.000892 -3.2% -0.6%
kvarn6 0.000889 0.000879 0.000876 -1.1% -0.3%
kvarn8 0.000871 0.000871 0.000877 0.0% +0.7%
제출자: /u/Anbeeld [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기