GPU VRAM 계산기 (로컬 LLM)

7B 모델을 4비트로 쓰면 가중치가 약 3.3GiB이고, Llama 3.1 8B급 모델은 컨텍스트 8,192토큰마다 KV 캐시가 약 1GiB 더해집니다.

추정치입니다. 실제 VRAM 사용량은 프레임워크, 커널, 캐시 설정에 따라 다릅니다.

문제가 해결됐나요?
Google 선호 출처로 추가

사용 방법

  1. 모델 프리셋을 고르면 파라미터, 레이어, KV 헤드, 헤드 차원이 채워집니다. 직접 쓰려면 직접 입력을 고르고 모델의 config.json 값을 넣습니다.
  2. 가중치 양자화 비트(Q4면 4, FP16이면 16)와 KV 캐시 정밀도를 정합니다.
  3. 컨텍스트 길이(토큰)와 배치 크기, 즉 동시에 돌릴 시퀀스 수를 입력합니다.
  4. 합계와 가중치, KV 캐시, 오버헤드 내역을 봅니다. 표에서 어떤 GPU 용량에 들어가는지 확인합니다.

계산 방법

가중치 메모리 = 파라미터 × 비트 ÷ 8 바이트. 70억 파라미터 모델을 4비트로 쓰면 7,000,000,000 × 0.5 = 3.5GB, 즉 3.26GiB입니다. 같은 모델을 16비트로 쓰면 14GB로, Hugging Face 가이드 "Optimizing LLMs for Speed and Memory"의 bfloat16 기준 파라미터 10억 개당 2GB 규칙과 맞습니다.

KV 캐시 = 2 × 레이어 × KV 헤드 × 헤드 차원 × 컨텍스트 길이 × 배치 × 값당 바이트. 2는 키와 값입니다. Hugging Face 블로그 "Unlocking Longer Generation with Key-Value Cache Quantization"은 16비트 값 기준 토큰당 2 × 2 × 레이어 × KV 헤드 × 헤드 차원으로 적고 있습니다.

오버헤드는 가중치와 KV 캐시 합의 비율로 입력합니다. CUDA 컨텍스트, 활성화 버퍼, 메모리 단편화를 대신하는 값이며 기본 10%는 측정값이 아니라 가정입니다.

결과는 모두 GiB(1GiB = 1,073,741,824바이트)입니다. GPU 제조사는 24GiB 카드를 "24GB"로 표기하므로, 적합 표는 합계를 8·12·16·24·48·80과 그대로 비교합니다. 추정치입니다. llama.cpp, vLLM, Ollama, Transformers 같은 프레임워크와 커널, 캐시 할당 방식에 따라 실제 사용량이 다릅니다.

VRAM을 채우는 것

크게 둘입니다. 가중치는 모델과 양자화를 정하면 고정됩니다. KV 캐시는 컨텍스트의 토큰이 늘수록, 배치의 시퀀스가 많을수록 커집니다. 들어간다고 생각한 모델이 긴 컨텍스트나 동시 사용자가 늘면서 갑자기 안 들어가는 곳이 여기입니다.

GQA(그룹 쿼리 어텐션) 모델은 어텐션 헤드보다 KV 헤드를 적게 두어 캐시를 몇 배 줄입니다. 그래서 어텐션 헤드 수보다 KV 헤드 값이 중요합니다. 모델의 config.json에서 num_key_value_heads를 확인하세요.

파라미터 10억 개당 가중치 크기

가중치 비트파라미터 10억 개당 GiB예: 8B 모델
16 (FP16 / BF16)1.8614.90 GiB
8 (INT8 / Q8)0.937.45 GiB
6 (Q6)0.705.59 GiB
5 (Q5)0.584.66 GiB
4 (Q4)0.473.73 GiB
3 (Q3)0.352.79 GiB
2 (Q2)0.231.86 GiB

프리셋 출처

  • 각 저장소의 config.json: huggingface.co/Qwen/Qwen2.5-7B (14B, 32B, 72B도 같은 형식), huggingface.co/Qwen/Qwen3-8B (32B도 동일), huggingface.co/mistralai/Mistral-7B-v0.3, huggingface.co/mistralai/Mistral-Nemo-Base-2407, huggingface.co/microsoft/phi-4.
  • Llama 3.1 8B·70B: Meta의 config.json은 Hugging Face에서 승인 후에만 받을 수 있어, Meta 논문 "The Llama 3 Herd of Models"(arXiv 2407.21783) Table 3의 값을 썼습니다. Gemma 2 9B·27B: Google 보고서 "Gemma 2"(arXiv 2408.00118) Table 1입니다.
  • 파라미터 수는 Hugging Face API가 저장소별로 보여 주는 safetensors 합계입니다. config.json에 head_dim이 없으면 hidden_size ÷ 어텐션 헤드 수를 씁니다.

자주 묻는 질문

7B 모델을 4비트로 돌리려면 VRAM이 얼마나 필요한가요?

가중치만 약 3.3GiB입니다. Llama 3.1 8B급 모델에서 컨텍스트 8,192토큰이면 KV 캐시가 약 1GiB 더해져, 오버헤드까지 약 5GiB를 보면 됩니다. 8GB 카드로 충분하고 컨텍스트를 더 늘릴 여유도 있습니다.

24GB 카드로 32B 모델을 돌릴 수 있나요?

4비트라면 가능합니다. Qwen2.5 32B는 파라미터가 약 327억 6천만 개라 가중치가 약 15.3GiB입니다. 컨텍스트 8,192토큰에서 KV 캐시는 2GiB이고, 오버헤드 10%를 더하면 합계가 약 19GiB입니다.

실제 사용량이 추정치와 다른 이유는 무엇인가요?

프레임워크마다 오버헤드가 다릅니다. vLLM은 GPU 대부분을 KV 캐시용으로 미리 잡고 공간이 모자라면 요청을 선점하며, llama.cpp는 전체 컨텍스트 분량의 캐시를 처음에 할당합니다. GGUF K-quant는 스케일 값을 따로 저장해서 표기 비트보다 실제 비트가 높습니다. 메모리 부족이 나면 비트나 오버헤드를 올려 보세요.

MoE(전문가 혼합) 모델에도 쓸 수 있나요?

가중치는 전부 메모리에 올라가야 하니 활성 파라미터가 아니라 전체 파라미터를 넣으세요. KV 캐시는 어텐션 레이어에만 좌우되므로 config의 레이어와 KV 헤드를 씁니다. 여기 프리셋은 모두 밀집(dense) 모델입니다.

Gemma 2는 슬라이딩 윈도우를 쓰는데 추정치가 더 낮아야 하지 않나요?

Gemma 2는 4,096토큰 윈도우의 로컬 레이어와 전역 레이어를 번갈아 씁니다. 이 도구는 모든 레이어에 전체 컨텍스트를 계산하므로, 컨텍스트가 윈도우보다 길면 Gemma 2에는 상한값이 됩니다.