Ollama VRAM 부족 에러 해결법 총정리 – GPU 메모리 관리 꿀팁
저도 처음 Ollama를 설치하고 신나는 마음으로 Llama 3 70B 모델을 돌려봤는데, 터미널에 빨간 글씨로 "out of memory"가 딱 뜨더라고요. 뭐가 문제인지도 모른 채 한참을 헤맸던 기억이 나요. 😅
사실 이 에러는 GPU의 VRAM이 모델을 올리기에 부족할 때 발생하는 건데요, 원인을 알고 나면 생각보다 간단하게 해결할 수 있어요. 오늘은 제가 직접 겪으면서 알게 된 VRAM 관리 노하우를 공유해볼게요!
GPU VRAM, 정확히 뭔가요? 🤔
VRAM은 Video RAM의 줄임말로, 그래픽카드에 탑재된 전용 메모리예요. 일반 시스템 RAM과는 다르게 GPU가 직접 접근해서 사용하는 메모리인데요, LLM을 로컬에서 돌릴 때는 모델의 가중치(weight)가 통째로 이 VRAM 위에 올라가야 해요.
쉽게 말하면, VRAM 크기 = 내 GPU가 한 번에 올릴 수 있는 모델의 한계라고 보시면 돼요. RTX 3060이면 12GB, RTX 4090이면 24GB 정도가 기본이죠.
시스템 RAM이 32GB여도 GPU VRAM이 8GB라면, LLM 구동 시 기준이 되는 건 8GB예요. 두 메모리는 완전히 별개의 공간이에요.
OOM 에러, 왜 발생하나요? 📊
Out of Memory 에러가 발생하는 주된 원인은 크게 세 가지예요.
- 모델 크기 초과 — 7B, 13B, 70B 등 파라미터 수가 클수록 VRAM을 많이 먹어요. 양자화(quantization) 없이 70B 모델을 올리려면 140GB 이상이 필요하죠.
- 컨텍스트 길이 설정 — num_ctx 값이 클수록 대화 기록을 위한 VRAM 사용량이 급증해요. 기본값 2048에서 8192로 올리면 추가로 수 GB가 더 필요할 수 있어요.
- 다른 프로세스와의 충돌 — 브라우저, 게임, 영상 편집 등 GPU를 쓰는 다른 프로그램이 VRAM을 이미 점유하고 있는 경우예요.
Ollama는 기본적으로 모델 전체를 GPU에 올리려고 시도해요. VRAM이 부족하면 자동으로 CPU 오프로딩을 하지만, 이 경우 추론 속도가 크게 느려질 수 있어요.
내 VRAM 사용량 확인하기 🔍
문제를 해결하려면 먼저 현재 상태를 파악하는 게 우선이에요. NVIDIA GPU를 쓴다면 터미널에 이 명령어 하나면 충분해요.
📝 VRAM 확인 명령어
nvidia-smi
이 명령어를 실행하면 GPU별 전체 VRAM, 현재 사용량, 남은 용량을 한눈에 볼 수 있어요. 실시간 모니터링이 필요하면 watch -n 1 nvidia-smi를 사용해보세요.
VRAM 부족 해결법 총정리 🛠️
자, 이제 본격적으로 해결 방법을 알아볼게요. 제가 직접 써보면서 효과를 확인한 방법들이에요.
1. 양자화(Quantization) 모델 사용하기
가장 확실한 방법이에요. Ollama에서 모델을 받을 때 양자화 버전을 선택하면 VRAM 사용량을 크게 줄일 수 있어요.
| 모델 (7B 기준) | 양자화 | VRAM 필요량 | 품질 영향 |
|---|---|---|---|
| FP16 (원본) | 없음 | ~14GB | 최고 품질 |
| Q8_0 | 8bit | ~7.5GB | 거의 무손실 |
| Q4_K_M | 4bit | ~4.5GB | 소폭 저하 |
| Q2_K | 2bit | ~3GB | 눈에 띄는 저하 |
제 경험상 Q4_K_M이 용량 대비 품질의 균형이 제일 좋았어요. 8GB VRAM으로도 7B 모델을 충분히 돌릴 수 있어요.
2. 컨텍스트 길이(num_ctx) 줄이기
Ollama에서 Modelfile을 수정하거나 실행 시 옵션을 조절해서 컨텍스트 길이를 줄이면 VRAM을 상당히 절약할 수 있어요.
📝 컨텍스트 조절 예시
ollama run llama3 --num-ctx 2048
기본값보다 낮추면 VRAM 절약 효과가 즉시 나타나요. 단, 긴 대화나 문서 처리에는 불리할 수 있어요.
3. GPU 레이어 수 수동 조절
환경변수 OLLAMA_NUM_GPU를 설정하면 모델의 일부 레이어만 GPU에 올리고 나머지는 CPU가 처리하도록 분배할 수 있어요. 속도는 조금 느려지지만 OOM을 피할 수 있는 실용적인 방법이에요.
4. 불필요한 GPU 점유 프로세스 정리
의외로 많이 놓치는 부분인데요, 크롬 브라우저 하나만 닫아도 수백 MB의 VRAM이 확보되기도 해요. nvidia-smi로 어떤 프로세스가 VRAM을 쓰고 있는지 확인한 뒤 불필요한 것들을 종료해주세요.
모니터를 GPU에 연결한 상태라면 디스플레이 출력에만 수백 MB의 VRAM이 할당돼요. 여유가 된다면 내장 그래픽으로 디스플레이를 연결하고, 외장 GPU는 LLM 전용으로 쓰는 것도 방법이에요.
GPU별 추천 모델 가이드 💻
내 GPU VRAM에 맞는 모델을 선택하는 것도 중요해요. 대략적인 가이드라인을 표로 정리해봤어요.
| VRAM | 대표 GPU | 추천 모델 (Q4 기준) |
|---|---|---|
| 6GB | RTX 2060, RTX 4060 | 3B~7B (Q4_K_M) |
| 8~12GB | RTX 3060 12GB, RTX 4070 | 7B~13B (Q4_K_M) |
| 16~24GB | RTX 4080, RTX 4090 | 13B~30B (Q4_K_M) |
| 48GB+ | A6000, 듀얼 GPU | 70B (Q4_K_M) |
마무리: 핵심 내용 요약 📝
정리하자면, VRAM 부족 문제는 대부분 모델 크기와 설정값의 불일치에서 비롯돼요.
- 양자화 모델 사용: Q4_K_M 양자화로 VRAM 사용량을 절반 이하로 줄일 수 있어요.
- 컨텍스트 길이 조절: num_ctx를 필요에 맞게 낮추면 즉각적인 효과를 볼 수 있어요.
- GPU 레이어 분배: 일부 레이어를 CPU로 넘기면 큰 모델도 구동 가능해요.
- 환경 정리: nvidia-smi로 현황 파악 후 불필요한 GPU 프로세스를 정리하세요.
로컬 LLM의 세계는 처음엔 좀 헤맬 수 있지만, 한번 세팅을 잡아놓으면 정말 편리하더라고요. 궁금한 점이나 본인 GPU 환경에서의 경험이 있다면 댓글로 공유해주세요~ 😊