지난주 한 독자가 물었다. GPU 없는 머신의 vLLM에서는 GGUF 파일이 실패하는데, 같은 파일이 Ollama에서는 멀쩡히 돌아가는 이유가 뭔가, 하고. 답부터 짧게: 가능합니다. vLLM은 GGUF를 실행한다 — 공식 플러그인을 통해, GPU에서만. 플러그인 이름은 vllm-gguf-plugin, 문법은 repo:quant_type입니다. CPU에서 시도하는 순간 지원 하드웨어 표 밖으로 나갑니다. 이하 내용은 전부 vLLM 공식 문서와 vllm-project/vllm 저장소 기록(2023년 2월 이후 9만2천+ 스타)에서 왔고, 제 벤치머시의 이야기가 아닙니다.
GGUF 모델을 vLLM으로 서빙하려면?
두 단계입니다. 플러그인을 설치하고, vLLM을 모델에 향하게 한다. GGUF 지원은 더 이상 vLLM 코어 안에 살지 않습니다 — 문서는 ”vllm-gguf-plugin으로 이전했다”고 적시하고, 단순한 pip install vllm으로은 부족합니다:
uv pip install vllm-gguf-plugin
# Hugging Face에서 바로, repo_id:quant_type 형식으로:
vllm serve unsloth/Qwen3-0.6B-GGUF:Q4_K_M
--tokenizer Qwen/Qwen3-0.6B
# 또는 이미 받아둔 로컬 파일:
vllm serve ./Qwen3-0.6B-Q4_K_M.gguf
--tokenizer Qwen/Qwen3-0.6B --tokenizer 플래그는 장식이 아닙니다. 공식 문서는 베이스 모델의 토크나이저를 쓰라고 권합니다. GGUF 토크나이저 변환이 “시간이 오래 걸리고 불안정하며, 어휘가 큰 모델에서 특히 그렇다”기 때문입니다. 이를 건너뛰는 것은 한 줄 플래그를 길고 변덕스러운 시작과 바꾸는 일입니다.
GPU 두 장, 모델 하나: --tensor-parallel-size 2를 붙이면 같은 GGUF를 두 카드에 나눠 실습니다. 텐서 병렬화는 GGUF에서도 다른 형식과 똑같이 동작합니다.
vLLM은 왜 CPU에서 GGUF를 거부하는가?
의외인 부분이 바로 여기입니다. GGUF의 평판은 CPU 퍼스트입니다 — llama.cpp가 노트북과 라즈베리파이 위에서 이름을 쌓은 바로 그 형식이죠. 그런데 vLLM 안에서는 상황이 뒤집힙니다. 공식 하드웨어 호환표의 GGUF 행은 이렇습니다:
| 하드웨어 | vLLM에서의 GGUF |
|---|---|
| NVIDIA Volta / Turing / Ampere / Ada / Hopper | 지원 |
| AMD GPU | 지원 |
| Intel GPU | 미지원 |
| x86 CPU | 미지원 |
| Arm CPU | 미지원 |
출처: vLLM 양자화 문서. 이유는 아키텍처에 있습니다. vLLM의 GGUF 경로는 블록을, 배치 서빙을 위해 만들어진 GPU 커널로 역양자화합니다. 그 뒤에 CPU 커널은 없습니다. vLLM은 서빙 엔진이지 노트북 장난감이 아니기 때문입니다. GPU가 없는 머신에서는 어떤 플래그도 구해주지 않습니다 — llama.cpp를 쓰십시오.
무엇이 깨지는가: 한계에 대한 정직한 목록
같은 문서 페이지에는 그대로 인용할 가치가 있는 경고가 있습니다: “vLLM의 GGUF 지원은 고도로 실험적이고 최적화가 부족합니다” 구체적으로는:
- 양자화 지원 폭이 llama.cpp보다 좁습니다. 모두가 내려받는 K-quant(Q4_K_M 등)는 동작하지만, 이색 스킴은 늘 그렇지 않습니다. 형식의 레퍼런스 구현은 여전히 llama.cpp입니다.
- 아키텍처 지원은 뒤따라옵니다. 새 모델 계열은 먼저 llama.cpp에 착지하고, 플러그인이 그다음입니다.
- mmap식 지연 로딩이 없습니다. llama.cpp는 파일을 메모리에 매핑하지만, vLLM은 일반 체크포인트처럼 로드합니다.
- 근본적으로는 메모리 풋프린트 기능입니다. 문서는 GGUF를 VRAM 사용량을 줄이는 수단으로 프레임하지, 처리량 플레이로 보지 않습니다.
이 중 하나도 숨겨져 있지 않습니다. 전부 공식 GGUF 페이지 첫 문단에 있습니다 — 대부분의 실험적 기능이 주는 것보다 많은 정직함입니다.
GGUF라면, vLLM과 llama.cpp 중 누가 이기나?
같은 파일을 읽는, 다른 도구들입니다:
| vLLM + GGUF | llama.cpp | |
|---|---|---|
| CPU 추론 | 불가 | 가능, 일급 |
| 동시 사용자 | continuous batching, 그러라고 만든 것 | 제한적 |
| 양자화 지원 폭 | 부분 집합, 실험적 | 레퍼런스 |
| 설치 | vLLM + 플러그인 | 바이너리 하나 |
| 최적 | GPU 한 장, 사용자 다수 | 사용자 하나, 하드웨어 무관 |
GPU 한 장으로 팀에 모델을 서빙한다면, vLLM + GGUF로 local-LLM 세계가 공유하는 같은 Q4_K_M 파일을 재활용할 수 있습니다 — 더 많은 선택지는 GGUF 양자화 가이드에서. 엔진 전체 비교는 llama.cpp vs Ollama와 GGUF 모델을 로컬에서 실행하는 법을 참고하십시오.
한 줄 규칙: 같은 파일, 정반대의 본능 — llama.cpp는 GGUF을 그 형식 자체로 대하고, vLLM은 선택지 하나로 대한다.
FAQ
vLLM은 GGUF 모델을 실행할 수 있나요?
네. vllm-gguf-plugin을 설치하고 repo:quant_type 문법으로 serve하면 됩니다 — 단 GPU에서만요. vLLM의 CPU 경로는 GGUF를 지원하지 않습니다.
vLLM은 CPU에서 GGUF를 실행할 수 있나요?
아니요. 공식 하드웨어 호환표는 GGUF를 x86·Arm CPU에서 미지원으로 표시합니다 — CPU 경로는 llama.cpp나 Ollama의 몫입니다.
GGUF 서빙은 vLLM과 llama.cpp 중 무엇으로?
한 장의 GPU로 여러 동시 사용자를 감당해야 하면 vLLM. GPU가 없는 장비거나 가장 넓은 양자화 지원이 필요하면 llama.cpp입니다.
— mrsaynothing
— mrsaynothing
AI, Linux, 셀프 호스팅 필드 노트.
다음 how-to를 이메일로 받아보세요
포스트당 한 통. 고치고 넘어가세요.
이게 뭔가요?데스크톱의 128k 컨텍스트는 거짓말이다. KV 캐시가 먹어치웠다.
글이 마음에 드셨나요? 제 본업이 바로 이런 일입니다. 저를 고용하세요