Qwen3.8 27B, 12GB로 돌리면 — "돌아간다"와 "쓸 만하다"의 간격 실측
이 포스팅은 쿠팡 파트너스 및 네이버 쇼핑 커넥트 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
“8GB 카드로 27B를 돌렸다”는 영상이 돌길래 직접 재봤습니다.
돌아가는 것과 쓸 만한 것은 다른 문제니까요.
RTX 3060 12GB 두 장 장비에서 한 장만 쓰는 조건까지 만들어 같은 프롬프트·같은 시드로 3회씩 쟀습니다.
두 장 합산 24GB는 단일 24GB 카드와 같지 않습니다. 레이어 분할과 PCIe 통신 비용이 끼므로, 이 글의 24GB는 어디까지나 ‘3060 두 장’ 이야기입니다.
잰 모델
Qwen3.8 27B (Q4_K_M, 17GB)입니다.
api/show로 확인하니 Dense 27.3B, 65개 레이어입니다.
MoE가 아니라서 토큰마다 전체 연산을 다 합니다.
같은 장비에서 잰 30B급 MoE가 94 tok/s였던 것과 기대치가 다른 배경입니다.
다만 그 비교도 모델·양자화가 달라 참고용입니다.
Ollama는 0.33.1로 올려서 쟀습니다. 0.20은 이 모델을 거부합니다(412).
결과표
num_ctx 8192, 생성 속도는 3회 중앙값입니다.
| 조건 | 오프로드 비율 (ollama ps 표기) | 속도 |
|---|---|---|
| 24GB 자동 | 27% / 73% | 10.4 tok/s |
| 24GB + num_gpu 강제 | 0% / 100% | 23.6 tok/s |
| 12GB 자동 | 49% / 51% | 8.9 tok/s |
| 12GB + num_gpu 40 | 42% / 58% | 10.0 tok/s |
| 12GB + num_gpu 45 | 메모리 초과 | 측정 불가 |
| 8GB 근사 (레이어 25개) | 61% / 39% | 7.5 tok/s |
뜻밖의 발견 — 자동을 믿으면 절반 손해
24GB면 17GB 모델이 다 들어갑니다.
그런데 자동 설정은 27%를 CPU로 내려보냈습니다. 결과는 10.4 tok/s.
num_gpu를 강제로 올리니
같은 장비에서 23.6 tok/s — 2.3배입니다.
ollama run qwen3.8:27b
>>> /set parameter num_gpu 99
왜 이럴까요?
Ollama 0.33의 메모리 추정이 멀티 GPU 분할에서 보수적으로 잡히는 것으로 보입니다. 추정 로직 자체를 뜯어보진 않았습니다. 관측된 사실은 분배와 속도뿐입니다.
하나 더 — 이 24GB 구성에서 0.33이 자동 선택한 기본 컨텍스트가 32768이었습니다. Ollama의 기본 컨텍스트는 감지된 VRAM에 따라 달라집니다. 그대로 두면 KV 캐시와 실행 버퍼가 커져서 런타임 메모리가 20GB로 표시되고 오프로드가 더 심해집니다. 가중치 파일이 커진 게 아니라 실행 메모리가 커진 겁니다. 컨텍스트를 쓰는 만큼만 잡는 것도 같은 이유로 중요합니다.
12GB 한 장에서 나온 최고치
제가 시도한 설정 안에서는 10 tok/s가 최고였습니다. 41~44레이어는 재지 않았으니 상한 단정은 아닙니다.
- 자동: 8.9
- 40레이어 강제: 10.0
- 45레이어: OOM
65개 중 40개가 12GB의 한계입니다. 나머지 25개 레이어가 CPU를 거치는 이상 오프로드 절벽을 피할 수 없습니다.
10 tok/s는 읽는 속도보다 조금 느립니다. 짧은 질문은 쓸 만하고, 긴 코드 생성은 기다림이 됩니다.
그럼 8GB는?
실제 8GB 카드가 없어서 레이어 수만 8GB 수준(25개)으로 제한해 근사했습니다.
7.5 tok/s.
영상 제목처럼 “돌아간다”는 맞습니다. 다만 이 근사 조건에서 24GB 튜닝 대비 3.1배 느렸습니다. 이 근사는 VRAM 용량만 흉내낸 것이라 실제 8GB 카드의 대역폭 차이는 반영하지 못합니다.
전기요금으로 보면
같은 작업량을 뽑는 데 걸리는 시간이 다르니 에너지도 달라집니다.
기준 작업량을 ’튜닝 조건으로 하루 1시간 생성하는 출력 토큰’으로 잡고 한 달 GPU 전력량을 비교하면:
- 튜닝: 23.6 tok/s × 1시간, GPU 합계 252W → 7.6 kWh
- 자동: 같은 토큰에 2.3배 시간, GPU 합계 167W → 11.4 kWh
GPU 전력만 따져도 느린 설정이 1.5배를 씁니다. 자동 조건은 CPU가 더 많이 일하므로, CPU·램까지 포함한 콘센트 기준 격차는 이보다 클 가능성이 있습니다. 다만 그건 재지 않았습니다. 요금 환산은 전기요금 계산기에서 본인 누진 구간으로 확인할 수 있습니다.
정리하면 이렇게 됩니다
- 24GB에서 자동 설정은 10.4 tok/s, num_gpu 강제로 23.6 tok/s — 설정 한 줄이 2.3배를 가릅니다
- 12GB 한 장의 측정 최고치는 10 tok/s였습니다 (40레이어. 41~44 미측정, 45는 OOM)
- 8GB 근사 조건은 7.5 tok/s — 돌아가지만 이 근사에서 3.1배 느렸습니다
- 이 구성에서 자동 선택된 컨텍스트 32768을 그대로 쓰면 오프로드가 더 심해집니다
- 같은 작업량 기준 GPU 전력량이 자동 조건에서 1.5배였습니다 (CPU 전력은 미포함)
측정 조건과 한계
- RTX 3060 12GB × 2 (전력 상한 각 170W), Ryzen 7 5800X, Ollama 0.33.1. 단일 카드 조건은
CUDA_VISIBLE_DEVICES=0으로 만들었습니다. - 같은 프롬프트(BST 구현)·시드 고정·temperature 0, 3회 반복. 단일 프롬프트라 다른 작업 유형(긴 입력, 짧은 답)에서는 수치가 달라질 수 있고, 프롬프트 처리 속도는 따로 보지 않았습니다.
- 8GB 근사는 실제 8GB 카드가 아닙니다. 12GB 카드에서 GPU 레이어 수만 제한한 것이라, 실물 8GB 카드의 대역폭·발열 특성은 다를 수 있습니다.
- num_gpu 40이 12GB의 최적이라고 단정할 수 없습니다. 41~44는 재지 않았습니다.
- “메모리 추정이 보수적”이라는 표현은 관측(분배·속도)에서 온 추정이며, Ollama 소스를 분석한 결론이 아닙니다.
- 전력은 nvidia-smi 1초 샘플 평균이라 짧은 피크를 놓칠 수 있고, GPU 전력만 포함합니다. 오프로드 조건은 CPU가 더 일하므로 총전력 격차는 여기 수치와 다를 수 있습니다.
- 표의 ’오프로드 비율’은 ollama ps 가 표시한 모델 배치 비율이지, 연산 이용률이 아닙니다.
- 전기요금 환산은 기타계절·저압·기존 250kWh 기준 전력량 비교이며, 계절·구간이 다르면 달라집니다.
이 측정에 쓴 장비
- RTX 3060 12GB 계열 — 쿠팡에서 보기 · 네이버 380,000원
이 측정에 쓴 카드 계열입니다. 두 장이면 이 글의 24GB 조건이 됩니다.
- AMD Ryzen 7 5800X — 쿠팡에서 보기
측정 구성의 CPU입니다. 오프로드 시 이쪽이 병목이 됩니다.