24GB VRAM 환경에서의 Qwen 3.6 27B 설정: 백엔드 비교, 양자화 선택 및 설정 (llama.cpp, ik_llama.cpp
요약
RTX 3090 24GB VRAM 환경에서 Qwen 3.6 27B 모델을 구동하기 위한 최적의 설정과 백엔드 성능을 비교 분석했습니다. 테스트 결과 ik_llama.cpp 백엔드와 IQ4_KS 양자화 모델을 조합했을 때 가장 뛰어난 프리필 및 디코드 성능을 보였습니다.
핵심 포인트
- RTX 3090(24GB) 환경에서 ik_llama.cpp + Qwen3.6-27B-MTP-IQ4_KS.gguf 조합이 최적의 성능을 제공함
- 156k 컨텍스트 설정 시 프리필 약 1261 tok/s, 디코드 약 72.9 tok/s의 벤치마크 결과 기록
- vLLM은 고컨텍스트 상황에서 OOM(Out of Memory) 불안정성 문제로 인해 제외됨
- MTP(Multi-Token Prediction) 및 q8_0 KV 캐시 설정을 통해 성능 최적화 가능
요약 (TL;DR)
- RTX 3090 24GB에서 테스트한 최적의 설정:
ik_llama.cpp+Qwen3.6-27B-MTP-IQ4_KS.gguf 156k컨텍스트 (context),q8_0/q8_0KV, MTP, CPU 기반 비전 (vision)~5.9k프롬프트 (prompt) +1k출력 (output) 벤치마크 결과: 프리필 (prefill) 약1261 tok/s, 디코드 (decode)72.9 tok/sllama.cpp는 좋은 시작점이었고, BeeLlama도 테스트할 가치가 있었으나,ik_llama.cpp가 가장 뛰어난 성능을 보였습니다.
테스트 항목
- 업스트림
llama.cpp: 쉬운 베이스라인 (baseline)이자 시작하기 좋은 지점 beellama.cpp: 이론상으로는 유망했으나, 내 설정에서는 기대했던 속도를 재현할 수 없었음ik_llama.cpp: 최고의 디코드/프리필 성능 및 최적의 VRAM 적합성
vLLM / club-3090에 대해서도 시간을 할애했으나, 이번 배치에서 공정한 비교 (apples-to-apples)를 위한 실행을 완료하지 못했기에 제외합니다. 응답 속도는 약 78 tok/s 정도였으나, 고컨텍스트 (high-context) 상황에서의 OOM (Out of Memory) 문제가 너무 불안정하여 해결될 때까지 중단했습니다. 최근에 테스트하지는 않았지만, 해당 저장소(repo)에는 여전히 단일 카드에서의 긴 컨텍스트 문제가 해결되지 않은 상태로 표시되어 있습니다.
벤치마크 (The benchmark)
원샷 채팅 완료 (One-shot chat-completion) 작업:
- 프롬프트 크기: 약
5.9k토큰 (tokens) - 출력 크기:
1024토큰 (tokens) - 작업 형태: 로컬 설정 파일에 대한 코드 리뷰 / 마이그레이션 노트
따라서 주로 다음을 테스트합니다:
- 중간에서 큰 규모의 실제 프롬프트에 대한 프리필 (prefill) 속도
- 지속적인
1k토큰 생성에 대한 디코드 (decode) 속도
이는 최상의 조건에서의 tok/s가 아니라, 현실에 더 가까운 수치입니다.
유지한 설정
내가 기본값으로 유지한 프로필은 다음과 같습니다:
- 백엔드 (backend):
ikawrakow/ik_llama.cpp - 현재 테스트된 빌드:
4507 (c35189d8) - 모델:
ubergarm/Qwen3.6-27B-GGUF - 직접 모델 파일:
Qwen3.6-27B-MTP-IQ4_KS.gguf
상위 수준의 실행 형태 (High-level launch shape):
상위 수준의 실행 형태 (High-level launch shape):
--ctx-size 156000--cache-type-k q8_0--cache-type-v q8_0--flash-attn on--multi-token-prediction--draft-max 4--draft-p-min 0.0--merge-qkv--merge-up-gate-experts--cache-ram 32768--ctx-checkpoints 32--reasoning on--reasoning-format deepseek--chat-template-kwargs '{"preserve_thinking":true}'--no-mmproj-offload
참고 사항 (Notes):
ik_llama.cpp의 내장 MTP(Multi-token Prediction)가 다른 추측 경로보다 더 잘 작동했습니다.q8_0KV는 품질이 좋았으며,q4를 선택할 수도 있지만,IQ4_KS를 사용하면 충분한 VRAM 여유 공간이 있습니다.
왜 IQ4_KS인가 (Why IQ4_KS)
- Unsloth의
UD-Q4_K_XL보다 훨씬 작습니다. - 품질은 충분히 높게 유지되어 실제적인 페널티를 느끼지 못했습니다.
24 GB카드에서, 컨텍스트와 적절한 u-batch 크기를 늘리기 시작하면 절약되는 GiB가 중요합니다.- 공정하게 말하자면, 더 높은 양자화(quant) 레벨, 아마도
q5정도의 여지가 있을 수 있습니다. 아직 테스트해보지 않았습니다. Qwen-3.6 quants논의 #1663
요약 (TLDR):
Qwen 3.6은IQ4_KS에서 매우 잘 양자화됩니다.ikawrakow는IQ4_KS가UD_Q4_XL에 매우 가깝거나 더 좋다고 측정했습니다.- Unsloth의
UD-Q4_K_XL은 같은 영역에 도달하려면 약2.8 GiB가 더 필요합니다.
양자화 계열 자체에 대한 배경 지식이 궁금하다면:
비전 (Vision)
- 기본적으로 CPU에서 작동하는 프로젝터:
--mmproj ...+--no-mmproj-offload를 사용합니다. - 더 빠른 이미지 처리를 원하고 약
1.5 GiB의 VRAM을 추가로 사용할 의향이 있다면 GPU로 옮길 수 있습니다. - 만약 메모리 부족(OOM)이 발생하면, 컨텍스트 크기를 낮추거나
q4KV로 전환하세요.
GPU 관련 내용 (GPU Stuff)
이는 iGPU에 데스크톱을 사용하고 RTX 3090을 LLM 전용으로 사용한 Linux 환경에서 측정된 것입니다.
- 전력 제한(power limit):
330 W - 메모리 오버클럭(memory OC):
+600 - 언더볼트(undervolt): 약
1875 MHz @ 868 mV에서 평탄화되었습니다. (LACT에 이제 커브 에디터가 있습니다.)
일부 실험은 기본 설정을 개선하지 못했습니다.
ik_llama.cpp에서--spec-autotune: 이 워크로드(workload)에서 의미 있는 이득이 없었음--mtp-requantize-output-tensor q6_K: 때때로 더 빠르지만, 결과가 일관되지 않고 약1 GiB의 추가 VRAM을 소모하므로 유지하지 않음- BeeLlama DFlash 정밀도(precision) 퀵스타트: 정상적으로 로드되었으나, 예상보다 훨씬 느렸음
- 업스트림(upstream)
llama.cppMTP 경로: 좋은 기준점(baseline)이었으나, 내 테스트에서는ik_llama.cpp보다 느렸음
BeeLlama와 vLLM은 여전히 탐색해 볼 가치가 있습니다. 다만, 내 워크로드에 대해 ik_llama.cpp 프로필을 능가하는 설정을 찾지 못했을 뿐입니다.
결과 (Results)
다음은 동일한 실제 프롬프트 / 1024 토큰 출력 벤치마크를 통한 유용한 비교 지점들입니다.
| 백엔드 (Backend) | 모델 / 양자화 (quant) | Spec 경로 | 컨텍스트 (Context) | KV 캐시 (KV cache) | Prefill tok/s | Decode tok/s | 실제 시간 (Wall time) | 비고 (Notes) |
|---|---|---|---|---|---|---|---|---|
ik_llama.cpp | Qwen3.6-27B-MTP-IQ4_KS | 내장 MTP | 156k | q8_0/q8_0 | 1260.95 | 72.93 | 18.79s | 최상의 전반적 기본 프로필 |
| ... |
테스트된 플래그 (Flags tested):
--spec-autotune은 이 워크로드에서 더 나은 결과를 생성하지 못함--mtp-requantize-output-tensor q6_K는 최상의 실행에서 약+5 tok/s디코드(decode) 속도 향상이 있는 등 간헐적인 이점이 있었으나, 추가적인~1 GiBVRAM 사용을 정당화할 만큼 안정적이지 않았음
플래그 비교 (Flag comparison)
다음은 가장 중요했던 상위 수준의 설정 차이점입니다.
| 백엔드 (Backend) | 양자화 (Quant(s)) | 초안 / Spec 모드 (Draft / spec mode) | 주요 초안 파라미터 (Key draft params) | KV 캐시 (KV cache) | 기타 주목할 만한 플래그 |
|---|---|---|---|---|---|
ik_llama.cpp | 대상 IQ4_KS MTP | 내장 --multi-token-prediction | --draft-max 4, --draft-p-min 0.0 | q8_0/q8_0 | --merge-qkv, --merge-up-gate-experts, --ctx-checkpoints 32, CPU mmproj |
| ... |
링크 (Links)
링크 (Links)
ik_llama.cpp: https://github.com/ikawrakow/ik_llama.cppExLlamaV3: https://github.com/turboderp-org/exllamav3- BeeLlama: https://github.com/Anbeeld/beellama.cpp
- BeeLlama Qwen 3.6 quickstart: https://github.com/Anbeeld/beellama.cpp/blob/main/docs/quickstart-qwen36-dflash.md
club-3090: https://github.com/noonghunna/club-3090IQ4_KSwith MTP: https://huggingface.co/ubergarm/Qwen3.6-27B-GGUF/blob/main/Qwen3.6-27B-MTP-IQ4_KS.ggufQwen-3.6 quantsdiscussion: https://github.com/ikawrakow/ik_llama.cpp/discussions/1663IQ4_KSquant family discussion: https://github.com/ikawrakow/ik_llama.cpp/discussions/8
제가 지금까지 찾은 최고의 24 GB 설정이지만, 상황이 빠르게 변하고 있어서 아직 확정적이라고 생각하지 않습니다.
이 스레드의 목적은 실제 single-3090 / 24 GB 결과, 즉 백엔드 선택, 양자화(quants), 플래그(flags) 그리고 실제 사용 시 안정적으로 유지되는 것을 비교하는 것입니다.
저는 이 글이 24 GB 카드에 유용한 참고 자료가 되기를 바랍니다. 무엇이 작동하고, 무엇이 깨지며, 실제로 매일 실행할 가치가 있는 것들 말입니다. 저는 아직 ExLlamaV3를 테스트하지 않았으며, 더 나은 설정이 있을 수도 있습니다.
또한, 이 모든 것을 구축해 준 모든 분들께 감사드립니다: 백엔드 개발자들, 양자화 제작자들, 템플릿 수정가들, 그리고 로컬 LLM을 사용 가능하게 만드는 지루한 디버깅 작업을 하는 사람들에게 말입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기