16GB VRAM 환경에서의 llama.cpp LLM 벤치마크 (속도 및 컨텍스트)

llama.cpp의 16GB VRAM 기준 토큰 속도(표)

Page content

여기서는 16GB VRAM의 GPU에서 실행되는 여러 LLM의 속도를 비교하고, 셀프 호스팅을 위한 최적의 모델을 선택하는 과정입니다.

저는 19K, 32K, 64K 토큰 컨텍스트 윈도우로 llama.cpp를 통해 이 LLM들을 실행했습니다.

VRAM 블록과 벤치마크 스타일 차트가 포함된 스타일화된 GPU 이미지

이 포스트에서는 속도의 관점에서 최대한 많은 성능을 끌어내려는 제 시도를 기록합니다.

LLM 속도 비교표 (초당 토큰 수와 VRAM)

Model Size 19K VRAM 19K GPU/CPU 19K T/s 32K VRAM 32K Load 32K T/s 64K VRAM 64K Load 64K: T/s
Qwen3.6-35B-A3B-UD-IQ3_XXS 13.2 13.8GB 96%/100% 147.5 14.0GB 96%/101% 149.1 14.7GB 96%/101% 145.8
Qwen3.6-35B-A3B-UD-IQ4_XS 17.7 14.3GB 62%/266% 95.0 14.9GB 58%/279% 92.3 14.9GB 57%/293% 86.4
Qwen3.5-35B-A3B-UD-IQ3_S 13.6 14.3GB 93%/100% 136.4 14.6GB 93%/100% 138.5 14.9GB 88%/115% 136.8
Qwen3.5-27B-IQ3_XXS-bartowsky 11.3 12.8 98/100 44.9 13.5 98/100 44.9 14.5 45/415 23.6
Qwen3.5-27B-UD-IQ3_XXS 11.5 12.9 98/100 45.3 13.7 98/100 45.1 14.7 45/410 22.7
Qwen3.5-27B-IQ4_XS.gguf 15.0 14.6 49/406 20.5 14.7 37/465 17.4 14.7 23/533 13.3
Qwen3.5-122B-A10B-UD-IQ3_XXS 44.7 14.7 30/470 22.3 14.7 30/480 21.8 14.7 28/490 21.5
Qwen3.5-122B-A10B-UD-IQ3_S 46.5 14.7 25/516 19.4 14.7 24/516 19.5 14.7 24/516 19.6
Mistral-Small-4-119B UD-IQ3_XXS 42.8 14.8 28/585 30.4 14.7 27/574 28.5 14.9 20/590 31.5
Qwen3-Coder-Next-UD-IQ4_XS 38.4 14.6 32/460 41.1 14.7 29/440 41.3 14.8 32/460 38.3
Nemotron Super 120b IQ3_XXS 56.2 15.0 26/517 17.5 14.6 26/531 17.4 14.6 26/535 17.6
gemma-4-26B-A4B-it-UD-IQ4_XS 13.4 14.7 95/100 121.7 14.9 95/115 114.9 14.9 75/190 96.1
gemma-4-31B-it-UD-IQ3_XXS 11.8 14.8 68/287 29.2 14.8 41/480 18.4 14.8 18/634 8.1
GLM-4.7-Flash-IQ4_XS 16.3 15.0 66/240 91.8 14.9 62/262 86.1 14.9 53/313 72.5
GLM-4.7-Flash-REAP-23B IQ4_XS 12.6 13.7 92/100 122.0 14.4 95/102 123.2 14.9 71/196 97.1

19K, 32K, 64K는 컨텍스트 크기를 의미합니다.

위 표의 load(로드)는 GPU Load(GPU 로드)를 의미합니다. 이 열에서 낮은 숫자를 보게 된다면, 해당 모델이 주로 CPU에서 실행되고 있음을 의미하며, 이 하드웨어에서 적당한 속도를 낼 수 없음을 나타냅니다. 이러한 패턴은 모델의 일부분만 GPU에 올라가는 경우나, 컨텍스트가 호스트(CPU)로 작업을 밀어내는 경우에 사람들이 흔히 관찰하는 현상과 일치합니다.

llama.cpp, LLM 성능, OpenCode 및 기타 비교에 대하여

설치 경로, llama-clillama-server 사용 예시, 그리고 VRAM 및 초당 토큰 수(컨텍스트 크기, 배치, -ngl)에 중요한 플래그에 대해 알고 싶다면 llama.cpp Quickstart with CLI and Server로 시작해 보세요.

더 포괄적인 성능 개요(처리량 대 지연 시간, VRAM 한계, 동시 요청, 그리고 하드웨어와 런타임 전반에 걸친 벤치마크의 통합)에 대해서는 LLM Performance in 2026: Benchmarks, Bottlenecks & Optimization를 참조하세요.

응답의 품질은 다른 글들에서 분석하고 있으며, 예를 들어 다음과 같습니다:

저는 Ollama 기반 LLM에 대해 유사한 테스트를 수행한 적이 있습니다: Best LLMs for Ollama on 16GB VRAM GPU.

llama.cpp를 통해 Qwen 3.6 27B 또는 35B를 실행하면서 생성 속도를 더 끌어올리고 싶다면, Qwen 3.6 MTP vs Standard Decoding on 16GB GPU를 확인해 보세요 — MTP 예측적 디코딩은 27B dense 모델에서 최대 67%의 생성 처리량 향상을 보여주며, 모든 --spec-draft-n-max 단계에서 VRAM 비용과 컨텍스트 윈도우 트레이드오프를 보여주는 표가 포함되어 있습니다.

왜 컨텍스트 길이가 초당 토큰 수를 바꾸는가

19K에서 32K 또는 64K 토큰으로 이동함에 따라 KV 캐시가 증가하고 VRAM 압력이 높아집니다. 일부 모델은 64K에서 초당 토큰 수가 크게 떨어지는 반면, 다른 모델은 평탄한 경향을 보입니다. 이는 모델이 일반적인 의미에서 “느리다"고 가정하기보다는 양자화 수준, 컨텍스트 한계 또는 레이어 오프로드를 재검토해야 한다는 신호입니다. 이러한 숫자 뒤의 예산 수식에 대해 — 토큰당 KV 바이트를 위한 정확한 공식, 32K/64K/128K에서의 캐시 유형 표, 그리고 자체 헤더룸을 계산하는 방법 — 에 대해서는 [KV Cache on 16 GB GPUs: Making Long Context Actually Fit](https://www.glukhov.org/ko/llm-performance/optimization/kv-cache-16gb-long-context/ “KV 캐시 비용 계산, 캐시 정밀도 선택 및 llama.cpp, vLLM 또는 Ollama 안전 튜닝을 통해 16 GB VRAM에 32K에서 128K LLM 컨텍스트 적합하게 배치."}을 참고하세요.

제가 테스트를 위해 선택한 모델과 양자화 수준은 제가 스스로 실행하여 이 장비에서 비용 대비 수익성 측면에서 좋은 이득을 주는지 확인하기 위한 것입니다. 따라서 200k 컨텍스트를 갖춘 q8 양자화 수준은 여기에 없습니다. :) …

GPU/CPU는 nvitop으로 측정한 로드(load)입니다.

llama.cpp가 GPU로 레이어 언로딩(unloading)을 자동 구성할 때 1GB를 비워두도록 시도합니다. 우리는 커맨드라인 파라미터 -ngl을 통해 이 매개변수를 수동으로 지정하지만, 여기서 이를 미세 조정(finetuning)하지는 않습니다. 그냥 컨텍스트 윈도우 크기를 32k에서 64k로 증가시킬 때 상당한 성능 저하가 발생한다면, 언로딩 레이어 수를 미세 조정함으로써 64k에서 속도를 올릴 수 있음을 이해하기 위함입니다.

테스트 하드웨어 및 llama.cpp 설정

저는 다음 구성의 PC에서 LLM 속도를 테스트했습니다:

  • CPU i-14700
  • RAM 64GB 6000Hz (2x32GB)
  • GPU RTX-4080
  • NVidia 드라이버가 설치된 Ubuntu
  • llama.cpp/llama-cli, 언로딩 레이어 미지정
  • llama-cli 시작 전 초기 VRAM 사용량: 300MB

128K 컨텍스트 추가 실행 (Qwen3.5 27B 및 122B)

Model 128K Load 128K: T/s
Qwen3.5-27B-UD-IQ3_XXS 16/625 9.6
Qwen3.5-122B-A10B-UD-IQ3_XXS 27/496 19.2

미세 조정된 실행 (Finetuned Runs)

몇 가지 흥미로운 모델과 양자화 수준에 대해 VRAM을 더 잘 활용하기 위해 특별히 llama-cpp 커맨드라인 파라미터를 찾아보았습니다. 다음은 제가 달성할 수 있었던 결과입니다:

Model Context Layers on GPU CPU/CPU load Speed
Qwen3.5-27B-IQ4_XS.gguf 18k 65 98%/100% 38.0
Qwen3.5-27B-IQ4_XS.gguf 64k 53 33%/488% 15.7

16 GB VRAM 빌드를 위한 핵심 요약 (Takeaways)

  • 제 현재 최애인 Qwen3.5-27B-UD-IQ3_XXS는 그 스윗스팟인 50k 컨텍스트에서 좋은 성능을 보이고 있습니다 (약 36t/s 달성 중).
  • Qwen3.5-122B-A10B-UD-IQ3_XXS는 64K 이상의 컨텍스트에서 성능 면에서 Qwen3.5 27B를 추월하고 있습니다.
  • Qwen3.5-35B-A3B-UD-IQ3_S를 100k 토큰의 컨텍스트를 처리하도록 밀어붙일 수 있으며, VRAM에 적합하므로 성능 저하가 없습니다.
  • gemma-4-31B는 16GB VRAM에서 사용하지 않을 것입니다. 하지만 gemma-4-26B는 중간 이상일 것 같기도 합니다… 테스트가 필요합니다.
  • Nemotron cascade 2와 GLM-4.7 Flash REAP 23B가 얼마나 잘 작동하는지 테스트해야 합니다. Qwen3.5-35B q3보다 더 나은 결과를 낼까요? 그 가능성은 낮다고 생각하지만, 여전히 의심이 확신으로 바뀌는 것을 확인하기 위해 테스트해볼 수도 있습니다.

구독하기

시스템, 인프라, AI 엔지니어링에 관한 새 글을 받아보세요.