llama.cpp b9455: 드디어 vLLM을 따라잡다 — 2x3090에서 Qwen 27B UQ8로 70t/s 달성
요약
llama.cpp의 최신 빌드(b9455)가 텐서 병렬화(-sm tensor) 플래그를 통해 멀티 GPU 환경에서 vLLM 수준의 추론 성능을 달성했습니다. 2x RTX 3090 환경에서 Qwen 27B 모델로 최대 81 t/s의 안정적인 디코딩 속도를 기록하며 성능 격차를 줄였습니다.
핵심 포인트
- -sm tensor 플래그를 통한 텐서 병렬화 지원
- 2x RTX 3090 환경에서 Qwen 27B 모델 70+ t/s 달성
- 긴 컨텍스트에서도 안정적인 디코딩 속도 유지
- 고품질 양자화(Q8)와 고속 추론의 병행 가능성 확인
r/LocalLLaMA의 한 Reddit 사용자가 llama.cpp 빌드 b9455에 대한 인상적인 수치를 공개했으며, 이는 멀티 GPU (multi-GPU) 설정을 사용하는 분들이라면 주목할 만한 가치가 있습니다.
수개월 동안 vLLM은 멀티 GPU 추론 (multi-GPU inference) 분야의 독보적인 강자였습니다. vLLM의 텐서 병렬화 (tensor parallelism)는 듀얼 3090 환경에서 지속적으로 70+ tokens per second (t/s)를 기록한 반면, llama.cpp는 30-50 t/s 수준에 머물러 있었습니다. GGUF 사용자들은 좋은 양자화 (quantization)를 위한 대가로 이러한 속도 저하를 마지못해 받아들여 왔습니다.
빌드 b9455가 이를 변화시켰습니다.
설정 (The Setup)
하드웨어: 2x RTX 3090 (각 24GB). 모델: Unsloth의 Qwen3.6-27B-UD-Q8_K_XL — 이 사용자가 이전 llama.cpp 빌드에서 30-50 t/s로 실행해 왔던 UD-Q8 양자화 모델입니다.
주요 새로운 플래그 (flags):
--tensor-split 50,50 -sm tensor
--flash-attn on
--cache-type-k q8_0 --cache-type-v q8_0
...
여기서 핵심은 -sm tensor 플래그입니다. 이는 llama.cpp가 GPU 간에 모델을 분할하는 방식을 변경합니다. 특정 연산 중에 한 카드가 대부분 유휴 상태로 남게 되는 기본 행 기반 분할 (row-based split) 대신, 텐서 병렬화 (tensor parallelism)는 개별 행렬 곱셈 (matrix multiplications)을 두 GPU 모두에 동시에 분산시킵니다.
수치 (The Numbers)
다음은 실제 코딩 세션의 트레이스 (trace)입니다. 각 줄은 컨텍스트 크기 (context size)와 처리량 (throughput)을 나타냅니다:
ctx 27K · pp 27K/18.8s 1417t/s · out 248/3.0s 81t/s · cold
ctx 31K · pp 3.8K/3.2s 1171t/s · out 353/4.7s 74t/s · 27K cached
ctx 37K · pp 6.7K/5.7s 1184t/s · out 335/4.5s 74t/s · 31K cached
...
세 가지 눈에 띄는 점이 있습니다:
1. 디코딩 속도 (Decode speed)가 67-81 t/s로 매우 안정적입니다. 2K 토큰 출력을 가진 68K 컨텍스트에서도 68 t/s를 유지했습니다. 이는 대화가 진행됨에 따라 컨텍스트가 끊임없이 증가하는 에이전트 워크로드 (agent workloads)에서 반드시 필요한 일관성입니다.
2. 프롬프트 처리 (Prompt processing) 속도가 비정상적으로 빠릅니다. 콜드 스타트 (Cold-started)된 27K 컨텍스트가 18.8초 만에 채워졌으며, 이는 초당 1,417 토큰의 프리필 (prefill) 속도입니다. 이 속도라면 콜드 상태에서 전체 100K 컨텍스트를 채우는 데 약 60-70초가 소요될 것으로 보입니다.
3. 54 t/s의 저점은 4,500 토큰 디코드(decode) 시 발생했습니다. 긴 출력(Long outputs)은 보통 병목 현상(bottleneck)이 발생하는 지점입니다. 그럼에도 불구하고 50 t/s 이상을 유지했는데, 이는 Q8 품질에서 전체 코드 리뷰나 리팩토링(refactor)을 스트리밍하기에 충분히 사용 가능한 수준입니다.
이것이 중요한 이유
원글 작성자(OP)는 타협안으로 vLLM에서 qwen3.6-mtp-8.0을 실행해 왔습니다. 속도는 빨랐지만, 8.0 양자화(quant) 모델은 미묘한 코딩 실수를 유발했습니다. 잘못된 변수 이름, 생성된 루프에서의 오프 바이 원(off-by-one) 오류 등, 단위 테스트(unit test)는 통과하지만 코드 리뷰(code review)에서는 탈락하는 종류의 버그들이었습니다.
이 정도 속도에서 UD-Q8_K_XL을 사용하는 것은 완전히 다른 경험을 제공합니다. 코드 출력이
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기