llama.cpp Vulkan vs CUDA: GTX 1660 SUPER에서 최대 20% 차이
윈도우에서 winget install llama.cpp로 llama.cpp를 설치하면 Vulkan 빌드가 깔립니다. NVIDIA 그래픽카드에서도 잘 돌아가서 모르고 넘어가기 쉬운데, GTX 1660 SUPER 6GB에서 같은 모델 파일을 NVIDIA 전용 빌드로 돌려 보니 11~20% 더 빨랐습니다. Ollama와도 같이 비교했습니다.
한눈에 보는 결과
모두 같은 모델 파일(Ollama가 받아 둔 GGUF 그대로), 모든 층을 그래픽카드에 올린 상태에서 256토큰 생성 속도입니다.
| 모델 (Q4_K_M) | llama.cpp Vulkan | llama.cpp CUDA | CUDA가 빠른 정도 | Ollama (num_gpu 99) |
|---|---|---|---|---|
| Qwen3 8B | 39.8 tok/s | 46.6 tok/s | +17% | 41.2~41.4 tok/s |
| Qwen3 4B-instruct | 71.3 tok/s | 78.8 tok/s | +11% | 77.0 tok/s |
| EXAONE 3.5 7.8B | 41.3 tok/s | 49.5 tok/s | +20% | 48.9 tok/s |
- 두 빌드 수치는
llama-bench가 3회 반복해 낸 평균이고, 편차는 ±0.7 tok/s 이내였습니다. - Ollama 수치는 같은 PC에서 따로 잰 값입니다(질문을 넣고 256토큰 생성, 3회 평균). 측정 도구가 달라서 Ollama와의 비교는 참고용으로 보세요.
테스트 환경과 방법
- CPU: Intel Core i9-10900K, RAM: 32GB (3200MHz)
- 그래픽카드: NVIDIA GeForce GTX 1660 SUPER 6GB, 드라이버 591.86, Windows 11 Home
- llama.cpp Vulkan 빌드: winget 설치본 b11175 (
ggml.llamacpp) - llama.cpp CUDA 빌드: llama.cpp 공식 릴리스 b11193의
win-cuda-12.4-x64빌드 - Ollama 0.34.4 (Ollama 저장소)
모델 파일은 Ollama가 내려받아 둔 파일을 ollama show 모델이름 --modelfile의 FROM 경로로 찾아서, llama.cpp에 그대로 넣었습니다. 그래서 세 가지 실행 방식이 완전히 같은 가중치를 씁니다. 측정 명령은 llama-bench -m 모델파일 -p 0 -n 256 -r 3 -ngl 99입니다(프롬프트 처리 생략, 256토큰 생성 3회, 모든 층 그래픽카드).
두 빌드의 버전이 b11175와 b11193으로 조금 다릅니다. 버전 차이의 영향도 섞여 있을 수 있다는 점은 감안해 주세요.
지금 쓰는 빌드 확인하는 법
llama-bench --list-devices를 실행하면 바로 보입니다.
# Vulkan 빌드
Vulkan0: NVIDIA GeForce GTX 1660 SUPER (6180 MiB, 5395 MiB free)
# CUDA 빌드
CUDA0: NVIDIA GeForce GTX 1660 SUPER (6143 MiB, 5132 MiB free)
장치 이름 앞에 Vulkan0이 붙으면 Vulkan 빌드, CUDA0이 붙으면 CUDA 빌드입니다. 속도 측정 결과표의 backend 칸에도 Vulkan 또는 CUDA가 표시됩니다.
CUDA 빌드 설치하는 법 (윈도우)
- llama.cpp 릴리스 페이지에서 최신 버전의 Assets를 펼칩니다.
- 두 파일을 받습니다.
-
llama-b(버전번호)-bin-win-cuda-12.4-x64.zip— 프로그램 본체 (이번에 받은 파일은 약 250MB) -cudart-llama-bin-win-cuda-12.4-x64.zip— CUDA 실행 파일 (약 373MB) - 두 압축 파일을 같은 폴더에 풉니다. 예:
C:\llamacpp-cuda - 그 폴더에서
llama-bench --list-devices를 실행해 장치 이름 앞에CUDA0이 보이면 완료입니다.
개발 도구(CUDA 툴킷)를 따로 설치할 필요는 없습니다. 두 번째 압축 파일에 필요한 파일이 들어 있습니다. 그래픽 드라이버는 최신에 가깝게 유지하세요. 이번 측정은 591.86 드라이버에서 했습니다.
참고로 이번에 받을 때는 "Latest"로 표시된 릴리스(v0.5.0)에 윈도우 빌드 파일이 없었습니다. 그럴 땐 목록을 조금 내려서 win-cuda 파일이 있는 버전을 받으면 됩니다.
그럼 Ollama 대신 llama.cpp를 써야 할까
속도만 보면 NVIDIA 전용 빌드가 가장 빨랐지만, Ollama와의 차이는 모델마다 달랐습니다.
- Qwen3 8B: 46.6 vs Ollama 41.2~41.4로 약 13% 차이. Modelfile에
num_gpu 99를 넣어 만든 모델은 Ollama에서 43.8 tok/s까지 나왔습니다. - Qwen3 4B-instruct, EXAONE 3.5 7.8B: 차이가 1~2%로 사실상 같았습니다.
Ollama는 모델을 이름으로 받아서 바로 쓰고, 서버가 알아서 켜지고, 다른 프로그램과 연결하기도 쉽습니다. 몇 % 속도보다 이런 편의가 중요하다면 Ollama를 그대로 쓰는 게 낫습니다. 이미 이 프로그램을 쓰고 있고 그래픽카드가 NVIDIA라면, 빌드만 바꿔도 11~20%를 공짜로 얻을 수 있습니다.
Ollama에서 8B 모델을 쓴다면 먼저 num_gpu 설정 글을 보세요. 6GB 카드에서는 이 설정 하나가 2.9배 차이를 만듭니다.
한계
- 그래픽카드 한 종류(GTX 1660 SUPER)에서만 측정했습니다. 실행 중에 "텐서 코어가 없어 성능이 최적이 아니다"라는 경고가 나왔는데, 텐서 코어가 있는 RTX 카드에서는 차이가 다를 수 있습니다.
- 생성 속도만 쟀고, 긴 프롬프트를 읽는 속도(프롬프트 처리)는 이번에 비교하지 않았습니다.
- Vulkan 빌드는 AMD·인텔 그래픽카드에서도 돌아간다는 장점이 있습니다. 이 결과는 NVIDIA 카드에 한정된 이야기입니다.