로컬 LLM 그래픽 메모리 계산기
모델 파일과 문맥 저장 공간(KV 캐시)을 더해 그래픽 메모리에 들어가는지 어림합니다. 계산식은 GTX 1660 SUPER 6GB에서 잰 결과와 맞춰 봤습니다(긴 문서 글).
세부 값 바꾸기 (다른 모델·바탕화면 사용량)
계산 방법
- 토큰 하나의 문맥 저장 공간 = 층 수 × KV 헤드 수 × 헤드 차원 × 2(K·V) × 값 하나의 바이트 수. f16은 2바이트, q8_0은 약 1.06바이트(32개 값당 34바이트)입니다. Qwen3 4B·8B는 36층 × 8 × 128이라 f16에서 토큰당 144KB(147,456바이트), 14B는 40층이라 160KB입니다.
- 필요한 메모리 = 모델 파일 + 토큰당 공간 × 문맥 길이 + 바탕화면 등이 쓰는 양 + 추가 여유(선택).
- MB는
nvidia-smi와 같은 방식(1MB = 1,048,576바이트), GiB는llama-bench가 표시하는 단위입니다. 모델 설정값은 Hugging Face의 공식 설정 파일(Qwen3-8B 등)에서 가져왔습니다.
실측과 맞춰 보기
- Qwen3 8B Q4_K_M(4.86GiB) + 4,096토큰(f16) + 바탕화면 약 500MB = 약 6,053MB → 계산상 들어갑니다. 실측에서도 llama.cpp가 이 조건을 실행했고, 생성 속도는 36.1 tok/s였습니다.
- 같은 모델 + 8,192토큰 = 약 6,629MB → 6,144MB를 넘습니다. 실측에서 llama.cpp Vulkan 빌드는 이 조건에서 메모리 부족으로 실행되지 않았고, CUDA 빌드는 실행됐지만 13.2 tok/s로 떨어졌습니다.
- Qwen3 4B-instruct Q4_K_M(2.32GiB) + 16,384토큰 = 약 5,180MB → 들어갑니다. 실측에서도 1만 6천 토큰을 채운 상태에서 30.1 tok/s로 크게 느려지지 않았습니다.
주의
- 어림값입니다. 실행 도구(Ollama, llama.cpp)와 버전, 드라이버에 따라 작업 공간 크기가 다릅니다. "빠듯함"이 나오면 실제로는 넘칠 수 있다고 보세요.
- 윈도우의 NVIDIA 드라이버는 그래픽 메모리가 모자라도 멈추지 않고 시스템 메모리를 빌려 쓰는 경우가 있습니다. 이때는 오류 없이 속도만 크게 떨어집니다. Ollama의 "100% GPU" 표시만으로는 알 수 없습니다.
- Ollama는 문서 길이가 아니라
num_ctx만큼 문맥 공간을 미리 잡는 것으로 보였습니다. 짧은 질문만 할 거라면num_ctx를 크게 잡을 이유가 없습니다. - Gemma 3처럼 일부 층만 짧은 문맥을 보는 모델(슬라이딩 윈도우)은 이 계산보다 적게 쓸 수 있어서, 목록에 넣지 않았습니다.