본문으로 건너뛰기

© 2026 Molayo

r/LocalLLaMA분석2026. 05. 18. 23:59

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_0 KV, MTP, CPU 기반 비전 (vision)
  • ~5.9k 프롬프트 (prompt) + 1k 출력 (output) 벤치마크 결과: 프리필 (prefill) 약 1261 tok/s, 디코드 (decode) 72.9 tok/s
  • llama.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가 아니라, 현실에 더 가까운 수치입니다.

유지한 설정

내가 기본값으로 유지한 프로필은 다음과 같습니다:

상위 수준의 실행 형태 (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_0 KV는 품질이 좋았으며, 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.6IQ4_KS에서 매우 잘 양자화됩니다.
  • ikawrakowIQ4_KSUD_Q4_XL에 매우 가깝거나 더 좋다고 측정했습니다.
  • Unsloth의 UD-Q4_K_XL은 같은 영역에 도달하려면 약 2.8 GiB가 더 필요합니다.

양자화 계열 자체에 대한 배경 지식이 궁금하다면:

비전 (Vision)

  • 기본적으로 CPU에서 작동하는 프로젝터: --mmproj ... + --no-mmproj-offload를 사용합니다.
  • 더 빠른 이미지 처리를 원하고 약 1.5 GiB의 VRAM을 추가로 사용할 의향이 있다면 GPU로 옮길 수 있습니다.
  • 만약 메모리 부족(OOM)이 발생하면, 컨텍스트 크기를 낮추거나 q4 KV로 전환하세요.

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.cpp MTP 경로: 좋은 기준점(baseline)이었으나, 내 테스트에서는 ik_llama.cpp보다 느렸음

BeeLlama와 vLLM은 여전히 탐색해 볼 가치가 있습니다. 다만, 내 워크로드에 대해 ik_llama.cpp 프로필을 능가하는 설정을 찾지 못했을 뿐입니다.

결과 (Results)

다음은 동일한 실제 프롬프트 / 1024 토큰 출력 벤치마크를 통한 유용한 비교 지점들입니다.

백엔드 (Backend)모델 / 양자화 (quant)Spec 경로컨텍스트 (Context)KV 캐시 (KV cache)Prefill tok/sDecode tok/s실제 시간 (Wall time)비고 (Notes)
ik_llama.cppQwen3.6-27B-MTP-IQ4_KS내장 MTP156kq8_0/q8_01260.9572.9318.79s최상의 전반적 기본 프로필
...

테스트된 플래그 (Flags tested):

  • --spec-autotune은 이 워크로드에서 더 나은 결과를 생성하지 못함
  • --mtp-requantize-output-tensor q6_K는 최상의 실행에서 약 +5 tok/s 디코드(decode) 속도 향상이 있는 등 간헐적인 이점이 있었으나, 추가적인 ~1 GiB VRAM 사용을 정당화할 만큼 안정적이지 않았음

플래그 비교 (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.0q8_0/q8_0--merge-qkv, --merge-up-gate-experts, --ctx-checkpoints 32, CPU mmproj
...

링크 (Links)

링크 (Links)


제가 지금까지 찾은 최고의 24 GB 설정이지만, 상황이 빠르게 변하고 있어서 아직 확정적이라고 생각하지 않습니다.

이 스레드의 목적은 실제 single-3090 / 24 GB 결과, 즉 백엔드 선택, 양자화(quants), 플래그(flags) 그리고 실제 사용 시 안정적으로 유지되는 것을 비교하는 것입니다.

저는 이 글이 24 GB 카드에 유용한 참고 자료가 되기를 바랍니다. 무엇이 작동하고, 무엇이 깨지며, 실제로 매일 실행할 가치가 있는 것들 말입니다. 저는 아직 ExLlamaV3를 테스트하지 않았으며, 더 나은 설정이 있을 수도 있습니다.

또한, 이 모든 것을 구축해 준 모든 분들께 감사드립니다: 백엔드 개발자들, 양자화 제작자들, 템플릿 수정가들, 그리고 로컬 LLM을 사용 가능하게 만드는 지루한 디버깅 작업을 하는 사람들에게 말입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0