spiritbuun/buun-llama-cpp
Experimental llama.cpp fork for inference research and development
buun‑llama‑cpp – 실험적인 Llama.cpp 포크
정의 – 인기 있는 llama.cpp 추론 엔진의 연구 지향적 포크입니다. 모델의 어텐션 메모리 품질을 유지하면서 GPU 메모리 사용량을 크게 줄이는 새로운 KV 캐시 양자화 기술을 추가합니다. 이 프로젝트는 단일 GPU(또는 멀티 GPU 서버)에서 LLM 추론을 이미 실행하고 있으며, 정확도를 크게 희생하지 않고 컨텍스트 길이를 최대화하거나 더 큰 모델을 맞추려는 사람들을 대상으로 합니다.
핵심 혁신
| 기능 | 기능 설명 | 중요성 |
|---|---|---|
| VBR – 가변 비트레이트 KV 캐시 | 프롬프트가 커짐에 따라 키-값 캐시를 레이어별로 동적으로 압축합니다. FP16에서 시작하여 사용자 지정 코덱 사다리(turbo8 → turbo4 → turbo3_tcq → … → turbo1_tcq)로 저하됩니다. | 보유한 VRAM으로 가능한 가장 긴 컨텍스트를 제공하면서 프롬프트의 초기 부분은 최고 품질 표현을 유지합니다. |
| Turbo 양자화 코덱 | 빠른 저비트 양자화기(turbo8, turbo4, turbo3, turbo2, turbo1)와 트렐리스 코딩 변형(*_tcq)의 제품군입니다. |
값당 1~4비트로 KV 메모리를 줄이면서 perplexity 손실은 미미합니다. 트렐리스 버전은 스칼라 양자화에 비해 KL 발산을 약 40% 줄입니다. |
| TCQ – 트렐리스 코딩 양자화 | 512상태 트렐리스와 비터비 인코딩을 사용하여 동일한 비트레이트에서 더 큰 유효 코드북을 얻습니다. | 매우 낮은 비트레이트(예: 3.25 bpv)에서 품질을 개선하면서 최신 GPU에서는 FP16에 가까운 디코딩 속도를 유지합니다. |
네이티브 .safetensors 및 EXL3 지원 |
.safetensors(EXL3 양자화 가중치 포함)로 저장된 모델을 GGUF로 변환하지 않고 직접 로드합니다. |
새로운 양자화 형식 사용자의 워크플로를 간소화합니다. |
투기적 디코딩 + 비전 스왑 (--mmproj-gpu-swap) |
이미지가 실제로 필요할 때까지 비전 인코더(mmproj)를 CPU로 이동한 다음 GPU에 로드하여 빠르게 인코딩합니다. | 멀티모달 모델을 메모리 부족이 발생할 수 있는 GPU에서 실행할 수 있게 합니다. |
| MoE 캐시 처리 | 혼합 전문가(MoE) 모델의 전문가 가중치를 GPU와 시스템 RAM 사이에 자동으로 배치하고 적응형 '자동' 모드를 제공합니다. | 매우 큰 MoE 모델(예: DeepSeek‑V4‑Flash)을 소비자급 하드웨어에서 사용할 수 있게 합니다. |
사용 방법
이 포크는 업스트림 llama.cpp 바이너리처럼 작동합니다. 전용 GPU에서의 일반적인 시작은 다음과 같습니다.
llama-server -m model.gguf # VBR은 기본적으로 켜져 있음
- 전체 코덱 사다리를 강제하려면(캐시가 최하위 계층까지 저하되도록)
-ct vbr을 추가합니다. - 컨텍스트 길이를 제한하고 VBR이 해당 창에 모든 VRAM을 사용하도록 하려면:
-c 30000. - VRAM 예산을 수동으로 설정하려면:
--vbr-vram 8G. - 더 낮은 품질의 시작 계층에서 시작하려면(메모리가 매우 부족한 경우 유용):
--vbr-entry t8. - 멀티모달 작업의 경우 스왑을 활성화합니다:
--mmproj-gpu-swap. - MoE 모델의 경우 권장 플래그는
--fit on --moe-cache auto입니다.
모든 설정은 선택 사항입니다. 기본값은 품질과 메모리 간의 최상의 균형을 자동으로 목표로 합니다.
성능 하이라이트(README에서)
| 코덱 | 비트/값 | perplexity(PPL) | 프리필 속도(토큰/초) | 디코딩 속도(토큰/초) |
|---|---|---|---|---|
| f16(참조) | 16.0 | 5.683 | 1104 | 30.7 |
| turbo3_tcq(트렐리스) | 3.25 | 5.668 | 818 | 26.6 |
| turbo3(스칼라) | 3.5 | 5.730 | 1015 | 28.1 |
| turbo1_tcq(1.25 bpv) | 1.25 | 6.012 | 991 | 28.5 |
트렐리스 코딩 코덱은 메모리의 일부만 사용하면서 FP16에 가까운 품질을 달성하며, RTX 3090에서 디코딩 속도는 FP16 기준선의 초당 몇 토큰 이내로 유지됩니다.
누가 관심을 가져야 하나요?
- 단일 GPU에서 더 긴 컨텍스트(20k~30k 토큰)를 실험하려는 연구자와 취미 개발자.
- 소비자 카드의 VRAM을 초과하는 멀티모달 또는 MoE 모델의 배포자.
- KV 캐시 양자화에 관심이 있는 모든 사람 – 저장소에는 트렐리스 코덱의 코드북과 훈련 스크립트가 포함되어 있습니다.
제한 사항/주의 사항
- 이 포크는 매우 실험적으로 표시되어 있습니다. 새로운 llama.cpp 릴리스와의 비호환성이나 가끔 충돌이 발생할 수 있습니다.
- CUDA 또는 ROCm 빌드와 flash-attention 활성화가 필요합니다. CPU 전용 추론은 Turbo 코덱에서 지원되지 않습니다.
- 일부 고급 기능(예: 계층 인식 저장-복원, 투기적 디코딩 체크포인트)은 아직 개발 중입니다.
빠른 시작 체크리스트
- CUDA/ROCm 및 flash-attention으로 빌드합니다(
make LLAMA_CUDA=1). - GGUF 또는 지원되는
.safetensors모델을 작업 디렉터리에 배치합니다. llama-server -m model.gguf를 실행합니다.- VBR 저하 단계를 보려면
-v를 추가하거나,-ct vbr/--vbr-floor t4로 미세 조정합니다. - 비전의 경우
--mmproj-gpu-swap을 추가하고mmproj.gguf파일을 제공합니다.
결론 – buun‑llama‑cpp는 가변 비트레이트 양자화와 트렐리스 코딩 코덱을 통해 KV 캐시 메모리 효율성의 한계를 넓히는 진지하고 연구 중심의 llama.cpp 확장입니다. 이미 llama.cpp에 익숙하고 더 많은 컨텍스트가 필요하거나 제한된 GPU 메모리에서 대규모 MoE/비전 모델을 실행하려는 경우, 이 포크는 구체적이고 잘 문서화된 도구 세트를 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트