블로그로 돌아가기

아무도 RAM을 이야기하지 않는다. 로컬 LLM 후회는 전부 RAM 문제다

2026년 9월 19일

로컬 LLM 스레드에 들어가면 싸움은 늘 GPU 것이다. VRAM 벤치마크, 24GB 카드, CUDA 대 ROCm, 3060이 아직도 ‘국민 카드’인지 아닌지. 그 사이에 모델이 도는지 아닌지를 실제로 결정하는 숫자는 다른 슬롯에 앉아 있다. 벤치마크도 마케팅도 없이 — 그 기계에 RAM이 얼마나 꽂혀 있는가.

VRAM은 꿈을 판다. RAM은 모델이 애초에 실행되는지를 결정하고, 실행됐다면 컨텍스트가 얼마나 살아남는지를 결정한다.

이 글을 쓰면서 바로 앞의 기계에서 검증했다. Ryzen 데스크톱, RAM 32GB, GeForce RTX 3060(12GB). llama3.1:8b를 받았다. 다운로드 페이지는 4.9GB라고 적혀 있었다. 실제로 예약된 양을 보라.

테스트 기계의 터미널 기록: ollama ps는 llama3.1:8b가 32,000 토큰 컨텍스트로 100% GPU에서 7.0GB를 예약했음을 보여주고, nvidia-smi는 12,288MiB 중 7,963MiB 사용, free -h는 RAM 31GiB를 표시한다

논점 전부가 이 한 화면에 있다. “4.9GB 모델”이 첫 프롬프트 하나에 답하기도 전에 7.0GB를 예약했다. 43%의 컨텍스트 세금이다. VRAM 12,288MiB 중 7,963MiB를 차지한 채로. 가중치는 끝까지 예산이 아니었다. 예산은 컨텍스트였다.

늘어난 기가바이트는 어디서 오는가

llama.cpp 메모리 문서는 다운로드 페이지가 생략하는 계산을 보여준다. 전체 메모리 = 모델 가중치 + KV 캐시 + 연산 버퍼. 상수인 항은 첫 번째뿐이다. KV 캐시는 컨텍스트 길이에 선형으로 늘고, 연산 버퍼는 배치에 따라 늘어난다. Ollama는 llama.cpp를 감싸므로 같은 법칙이 적용된다. 그래서 ollama ps는 32,000 토큰 창에서 4.9GB 태그에 7.0GB를 보고했고, 전부 GPU에 상주했다.

양자화된 모델은 타협이 아니다. 메모리가 언제나 진짜 예산이었다는 고백이다.

GGUF 양자화 사다리가 존재하는 이유도 여기 있다. Q4는 종교가 아니라, 메모리 계산을 사람들이 실제로 가진 하드웨어 안에 착지시키는 장치다. 그래서 “동일한” 두 8B 구성이 전혀 닮지 않은 것이다. 모델은 같고, 컨텍스트 길이가 다르고, 기계가 다르다.

아무도 사기 전에 채우지 않는 표

모델 3등급, 메모리 2종류, 12GB 카드와 32GB RAM — 수천 명의 개발자가 실제로 가진 구성이다.

모델 등급(Q4)다운로드로드 후 + 32k ctx12GB VRAM32GB RAM
7–8B(llama3.1:8b)4.9GB7.0GB(실측)100% GPU, 약 8GiB 사용거히 체감 없음
13–14B(qwen2.5:14b)9.0GB~12GB오프로드 시작여유
27–32B(gemma3:27b)17GB~20GB 이상CPU가 가중치를 당긴다돌아가는 유일한 이유

마지막 두 줄을 다시 읽어라. VRAM만으로는 현실적인 컨텍스트의 14B가 이미 분할 오프로드 job이고, 27B는 불가능하다. 32GB RAM에서는 둘 다 그저 느릴 뿐이다. 이 차이 — 불가능과 느림 사이의 차이 — 가 RAM과 VRAM의 실용적 차이의 전부다. VRAM에 들면 빠르다. RAM에 들면 돈다. 어디에도 안 들면 NVMe로 스왑 중이고, 시간은 의미를 잃는다.

오프로드는 PCIe를 지난다. Ollama FAQ는 비용에 솔직하다. GPU에 못 들어간 레이어는 CPU에서 돌고, GPU 몫이 줄수록 처리량이 무너진다. 아무도 이 트레이드오프를 의식적으로 고르지 않는다. 레이어 하나씩, 조용히 진행되고 증상은 그저 “로컬 LLM은 과대평가” 한 줄이다.

정직한 장부

이 글을 쓰는 동안 망가졌거나 놀랐던 것들, 순서대로.

  1. 43%라는 숫자 자체. 8B 모델이 “대략 파일 크기만큼” 자리할 거라 기대했다. 다운로드 4.9GB에 7.0GB를 예약했다. 내가 놀랐다면, ps 대신 스펙시트를 읽는 모두가 놀랄 것이다.
  2. 스크린샷 세션. 첫 캡처는 잘못된 창을 잡았다. 두 번째가 성공했고, 그것이 위의 이미지다. 증거는 분위기가 아니라 작업 흐름이며, pull → 캡처 → ollama rm 사이클이 디스크를 정직하게 지킨다.
  3. 망가지지 않은 것. GPU는 한 번도 넘치지 않았다. 12GB에서 32k 컨텍스트의 8B는 실제로 쾌적하다. 카드는 멀쩡하다. 삐걱거리는 건 카드를 둘러싼 담론이다.

이것이 GPU가 무의미하다는 뜻이 아니다. 캡처 속 100% GPU 행이야말로 생성이 즉각적으로 느껴진 이유다. 요점은 GPU가 두 번째 질문이라는 것. Ollama 대 llama.cpp 선택은 무엇이 들어가는지를 안 후에 와야 한다.

기억할 만한 법칙

필요한 RAM = 모델 파일 + 실제 컨텍스트를 위한 KV 캐시 + 컴퓨터로 남기 위한 4GB. Q4의 7–8B엔 16GB로 충분하다. 14–32B에선 32GB가 사치가 아니라 본론이 된다. VRAM은 쓰는 컨텍스트에서 원하는 속도로 사고, RAM은 앞으로 로드할 모든 것으로 사라.

ollama ps를 한 번만 보라. 스펙시트 종교는 조용히 끝난다.

그래서 두 가지 질문. 다음 기계를 조립할 때 VRAM은 올릴 벤치마크를 위해 사는가, RAM은 실제로 돌릴 모델을 위해 사는가? 그리고 솔직히 — 새벽 두 시에 받은 모델 중 몇 개를 아침 밥 전에 지웠는가? 나는 오늘, 글 쓰는 도중에 지웠다. 댓글로 나만이 아님을 알려 달라. 그리고 당신의 기계가 RAM/VRAM 경계선의 어느 쪽에 서 있는지도.

FAQ

로컬 LLM을 돌리려면 RAM이 얼마나 필요한가?

모델 파일 크기 + 컨텍스트 + 데스크톱 본연의 사용량입니다. Q4 기준 7–8B 모델은 16GB로 충분하고, 14–32B를 데모가 아닌 일상 도구로 만드는 건 32GB입니다.

로컬 LLM에는 VRAM과 RAM 중 무엇이 더 중요한가?

전부 들어간다면 속도는 VRAM이 결정합니다. 모델이 애초에 실행되는지, 컨텍스트가 얼마나 남는지는 RAM이 결정합니다. 그 사이의 PCIe 오프로드는 아무도 좋아하지 않는 느린 중간지대입니다.

로드된 모델이 다운로드 크기보다 많은 메모리를 쓰는 이유는?

KV 캐시와 연산 버퍼는 컨텍스트 길이에 따라 커집니다. llama.cpp 메모리 문서가 계산식을 보여줍니다: 가중치 + KV 캐시 + 연산 버퍼. 다운로드 페이지에는 첫 번째 숫자만 있을 뿐입니다.

— mrsaynothing

— mrsaynothing

Opinions load-tested before shipping. Mostly.

dev.to에서 이 글에 대해 토론하기 dev.to ↗

Get the next argument by email

One email per post. Agree or tear it apart.

self-hosted · 제3자 없음 · 원클릭 구독 해지

이게 뭔가요?

SSH Permission denied (publickey) 진짜 해결법

글이 마음에 드셨나요? 제 본업이 바로 이런 일입니다. 저를 고용하세요