16GB GPU에서 100k 컨텍스트로 Qwen 3.8 27B 모델을 초당 50토큰 속도로 구동하기 (beellama.cpp)
Qwen 3.8 27B at 50 tok/s with 100k Context on a 16GB GPU! (beellama.cpp)
핵심 요약
16GB VRAM 환경에서 beellama.cpp와 kvarn 양자화를 활용해 Qwen 27B 모델을 고속으로 구동하는 최적화 설정 공유.
- 최적화 설정 — beellama.cpp의 kvarn KV 캐시 양자화와 MTP 추론을 활용함
- VRAM 효율화 — 16GB 한계 내에서 100k 컨텍스트를 확보하기 위해 정밀도 조절함
- 성능 결과 — 27B 모델임에도 초당 47~50토큰의 빠른 생성 속도를 달성함
- 설정 팁 — 최근 토큰 정밀도를 유지하는 kv-tail-tokens 설정이 핵심임
RTX 4070 Ti SUPER(16GB VRAM) 같은 일반 소비자용 그래픽카드에서 Qwen 3.8 27B 모델을 대용량 컨텍스트 윈도우로 돌리는 데 성공해서 공유해 본다. 목표는 품질이나 속도 저하 없이 VRAM 안에 모든 걸 다 때려 박는 거였음.
🧠 핵심 구성 요소
-
모델: jrell의 Hugging Face에 있는
Qwen3.8-27B-i1-IQ4_XS-GGUF-Smaller. 16GB VRAM 예산 안에서 MTP(Multi-Token Prediction)랑 긴 컨텍스트를 돌리려고 만든 커스텀 하이브리드 양자화 모델임. -
채팅 템플릿: peculiar-ragdoll의 Qwen-Sharp-Chat-Templates에 있는 Jinja 템플릿 썼음. 품질 저하 없이 생각 토큰(thinking tokens)을 줄여줘서 속도 면에서 아주 좋음.
-
추론 엔진: 이게 제일 중요함. beellama.cpp(GitHub 링크)를 썼는데, 이 최적화의 핵심인
kvarnKV 캐시 타입을 지원하거든.
🖥️ 최적화된 llama-server 명령어 (Windows)
내가 돌리고 있는 명령어다. kvarn 캐시 설정이랑 테일 정밀도(tail precision)가 핵심임.
%LLAMA_DIR%/llama-server.exe ^
-m %MODEL_PATH% ^
-a %MODEL_NAME% ^
--port 11434 ^
--temp 1.0 ^
--top-p 0.95 ^
--top-k 20 ^
--min-p 0.0 ^
--presence-penalty 0.0 ^
--repeat-penalty 1.0 ^
--parallel 1 ^
--n-gpu-layers 99 ^
--batch-size 1024 ^
--ubatch-size 256 ^
--flash-attn on ^
--spec-type draft-mtp ^
--spec-draft-n-max 2 ^
--cache-type-k kvarn5 ^ <-- 핵심: K 캐시에 높은 정밀도 할당
--cache-type-v kvarn4 ^ <-- 핵심: V 캐시에 균형 잡힌 정밀도 할당
--kv-tail-tokens 1024 ^ <-- 최근 토큰은 풀 정밀도로 유지
--ctx-size 100000 ^
--fit-ctx 100000 ^
--jinja ^
--chat-template-kwargs "{\"preserve_thinking\": true, \"reasoning_effort\":\"medium\"}" ^
--chat-template-file %MODEL_JINJA% ^
--no-mmproj-offload ^
--threads 7 ^
--threads-batch 8 ^
--metrics ^
--verbosity 3 ^
--perf
📊 결과 및 최적화 노트
| Metric | Result | Note |
|---|---|---|
| Generation Speed |

