기기·장비·· 낭순

로컬 LLM, 내 PC 램·VRAM으로 어디까지 되나


로컬 LLM 사양을 검색하면 “7B는 8GB, 13B는 16GB” 같은 표가 먼저 나옵니다. 로컬 LLM은 ChatGPT 같은 모델을 남의 서버가 아니라 내 컴퓨터 안에서 직접 돌리는 것이라, 어디까지 쓸 수 있는지를 내 PC 사양이 그대로 정합니다. 그 표는 모델이 켜지는지까지만 답합니다. 기다릴 만한 속도가 나오는지, 회의록 서른 장을 붙여넣어도 버티는지는 다른 질문입니다.

용어 다섯 개만 깔아 둡니다. VRAM은 그래픽카드에 붙은 전용 메모리로 시스템 램과 별개입니다. 양자화는 가중치를 낮은 정밀도로 눌러 파일을 줄이는 것으로, Q4 계열이면 원본의 약 4분의 1입니다. KV 캐시는 오간 대화와 붙여넣은 문서를 다시 읽지 않도록 저장해 두는 메모리입니다. 토큰은 모델이 글을 세는 단위, t/s는 초당 오가는 토큰 수입니다. 7B·20B의 B는 파라미터(학습으로 얻은 숫자 뭉치)가 몇십억 개인지를 뜻합니다 — 7B면 70억 개. 클수록 무겁다고들 하지만 늘 그렇지는 않다는 것이 이 글의 축입니다.

용량 표에 빠진 것을 구글이 자기 표 밑에 적어 뒀습니다

구글은 Gemma 3를 int4로 압축하면 27B의 VRAM이 54 GB에서 14.1 GB로 준다는 표를 내면서 각주를 달았습니다. “This figure only represents the VRAM required to load the model weights”(Google Developers Blog). 가중치를 올리는 양일 뿐, KV 캐시는 컨텍스트 길이만큼 따로 든다는 뜻입니다.

얼마나 더 드는지는 계산할 수 있습니다. 토큰 1개당 KV 캐시는 2 × 레이어 수 × KV 헤드 수 × head_dim × 정밀도 바이트이고, 식에 넣을 값은 모델 설정 파일에 공개돼 있습니다.

컨텍스트 Llama 3.1 8B gpt-oss-20b
4K (기본 대화) 0.5 GiB 0.09 GiB
32K (문서 몇 장) 4.0 GiB 0.75 GiB
128K (한도까지) 16.0 GiB 3.0 GiB

gpt-oss-20b config.jsonLlama 3.1 8B 설정값으로 직접 계산. 배치 1·FP16 기준이고, GiB는 GB와 거의 같은 단위입니다(1 GiB ≈ 1.07 GB). gpt-oss-20b는 슬라이딩 윈도 어텐션이 한 층씩 교차 적용돼 전체 컨텍스트를 들고 있는 층이 24개 중 12개뿐이라 절반만 셈했습니다 — 24층을 그대로 넣으면 두 배가 나옵니다.

8B가 컨텍스트를 끝까지 쓰면 KV 캐시만 16 GiB입니다. 같은 조건에서 gpt-oss-20b는 가중치·KV·오버헤드를 전부 합쳐 17.9입니다(llama.cpp 실행 가이드 표기. 가이드는 GB, 위 표는 GiB). 8B의 캐시 하나가 20B의 총량에 육박하고, 거기에 8B 가중치가 더 붙습니다. 파라미터 수로 무게를 재는 습관이 여기서 깨집니다.

같은 가이드에 더 중요한 숫자가 있습니다. gpt-oss-20b는 모델 데이터가 12.0 GB인데 8,192 토큰이면 총 14.9 GB입니다. 짧은 컨텍스트인데도 약 3 GB가 그냥 붙습니다. 모델 카드의 “16GB로 돌아간다”(openai/gpt-oss-20b)는 짧은 컨텍스트에서만 성립하는 문장입니다.

위 KV 캐시 표는 FP16 기준입니다. KV 캐시 자체도 양자화할 수 있습니다. OLLAMA_FLASH_ATTENTION=1로 플래시 어텐션을 켠 뒤 OLLAMA_KV_CACHE_TYPE=q8_0을 주면 f16의 “approximately 1/2”, q4_0이면 “approximately 1/4” 메모리를 쓴다고 Ollama 문서에 적혀 있습니다. 128K에서 16 GiB이던 8B의 캐시가 q8_0이면 8 GiB 안팎입니다. 공짜는 아닙니다 — 같은 문서가 q8_0은 “very small loss in precision”, q4_0은 “small-medium loss”라고 적었습니다. 순서는 컨텍스트를 32K로 줄이는 쪽이 먼저고, 그래도 모자랄 때 q8_0입니다. 용량 표의 숫자는 짧은 대화 기준의 하한선이라 KV 캐시와 고정 오버헤드를 더해야 하지만, 그중 KV 캐시는 이 옵션 하나로 절반이 될 수 있습니다.

켜지는 것과 기다릴 만한 것은 다른 문제입니다

토큰을 하나씩 뱉는 단계의 성능을 정하는 것은 연산 능력이 아니라 메모리에서 데이터를 실어 나르는 속도입니다. NVIDIA 기술 블로그도 지연을 지배하는 것은 연산이 아니라 이 전송 속도라고 씁니다(NVIDIA Technical Blog). llama.cpp CUDA 벤치 스레드에서 네 줄만 발췌합니다.

GPU VRAM 버스폭 / 대역폭 토큰 생성(t/s) 문서 읽기(t/s)
RTX 5080 16GB 256-bit / 960 GB/s 184.68 9,487.70
RTX 5070 Ti 16GB 256-bit / 896 GB/s 182.43 8,419.56
RTX 5060 Ti 16GB 128-bit / 448 GB/s 93.46 4,195.53
RTX 3060 12GB 192-bit / 360 GB/s 76.92 2,407.67

생성은 tg128, 읽기는 pp512입니다. 측정 조건은 Llama 2 7B Q4_0(3.56 GiB = 약 3.83 GB), 배치 1, Flash Attention, llama.cpp CUDA 빌드이고 커뮤니티 기여자 제출값입니다 — Discussion #15013에서 필요한 행만 발췌. 버스폭은 NVIDIA 공식 스펙, 대역폭은 버스폭 ÷ 8 × 메모리 속도 계산값입니다(5080의 30Gbps는 NVIDIA 페이지에 없어 논지는 버스폭에 걸었습니다).

5080과 5070 Ti의 생성 속도 차이는 1.23%입니다. 계산상 대역폭은 7% 차이인데 실측은 그보다 더 붙어 있습니다. 버스폭이 둘 다 256-bit이고, 토큰 생성은 그 통로로 가중치를 실어 오는 시간이 지배하는 단계이기 때문입니다. 반면 같은 두 카드의 문서 읽기 속도는 12.68% 벌어집니다. 이쪽은 연산량이 지배합니다.

로컬 LLM의 토큰 생성만 놓고 보면 5080에 돈을 더 얹어 얻는 것이 크지 않습니다. 붙여넣는 문서가 매번 길다면 계산이 달라집니다.

네 행 모두 대역폭 ÷ 3.83 GB로 구한 이론 상한의 74~82%에 들어옵니다(5060 Ti는 448 ÷ 3.83 = 약 117 t/s에 실측 93.46으로 80%, 5080 74%, 5070 Ti 78%, 3060 82%). 이론 상한 × 0.75를 어림값으로 쓰되, 모델·양자화·도구가 바뀌면 달라집니다.

통합 메모리 기기도 같은 자로 잽니다. 애플 M5 Max의 공식 스펙은 최대 614 GB/s이고(Apple Newsroom), llama.cpp 애플 실리콘 표에서도 대역폭이 오르면 생성 속도가 거의 비례해 오릅니다. 함정은 프롬프트를 읽는 단계입니다. 같은 통합 메모리 기기인 Ryzen AI Max+ 395 실측에서 7B의 pp512가 884인데(llm-tracker.info, Vulkan 백엔드·Q4 계열), 위 표의 RTX 5070 Ti는 8,419입니다. 조건이 달라 배수로 못 박을 수는 없지만 자릿수가 다릅니다.

VRAM이 모자라면 크래시가 아니라 속도가 무너집니다

VRAM을 넘겨도 대개 그냥 돌아갑니다. 다만 어떻게 돌아가는지가 두 갈래이고, 이 둘을 섞으면 진단이 어긋납니다.

하나는 드라이버가 넘기는 경우. NVIDIA 그래픽카드를 쓰는 윈도우에서는 드라이버가 부족분을 시스템 램으로 넘겨 그대로 실행합니다(536.40 드라이버부터 기본). 크래시가 없어 문제없어 보입니다. 몇 배 느려지는지 명시한 공식 수치는 못 찾아 배수는 적지 않겠습니다. 546.01 이후 드라이버면 NVIDIA 제어판에서 “CUDA - Sysmem Fallback Policy”를 끄면 조용히 느려지는 대신 명시적으로 실패하게 만들 수 있습니다.

다른 하나는 실행 도구가 애초에 나눠 싣는 경우. Ollama나 llama.cpp는 GPU에 들어가지 않는 레이어를 CPU 쪽에 남깁니다. 그 레이어는 DDR5-5600 듀얼채널 기준 약 89.6 GB/s(5,600 × 8바이트 × 2채널)로 읽힙니다. 위 표의 카드들이 360 GB/s 이상으로 읽던 것과 자릿수가 다릅니다.

그래서 확인이 먼저입니다. 모델을 띄운 뒤 ollama ps를 치면 Processor 열에 “100% GPU”인지 “48%/52% CPU/GPU”인지 나옵니다(Ollama 문서). CPU 비율이 잡혀 있으면 이미 새고 있는 겁니다.

한 가지 더. Ollama 기본 컨텍스트 길이를 공식 문서 세 곳이 다르게 적고 있습니다. FAQ는 4096, 컨텍스트 길이 문서는 VRAM 24 GiB 미만이면 4k·24~48 GiB면 32k, Modelfilenum_ctx는 2048입니다. 셋 중 하나를 외우는 건 의미가 없습니다. “돌려 보니 잘 되던데요” 후기가 짧은 컨텍스트 기준인 것도 기본값이 그렇게 잡히기 때문입니다.

30B가 7B보다 빠르게 도는 구간이 있습니다

MoE는 전문가 모듈을 여러 개 두고 토큰마다 일부만 켜서 계산하는 구조입니다. 여기서 VRAM 표가 한 번 더 어긋납니다.

Ollama 배포 크기는 qwen3:30b-a3b 19 GB, qwen3:32b 20 GB로 거의 같습니다(qwen3 태그). 그런데 토큰마다 켜지는 파라미터는 3.3B와 32.8B로 열 배 차이입니다. 자리를 차지하는 건 총 파라미터, 속도를 정하는 건 활성 파라미터입니다.

둘을 하나로 묶으면 양쪽으로 다 틀립니다. gpt-oss-20b의 활성 파라미터가 3.6B라고 그만큼만 올리면 되는 게 아닙니다. “The MoE weights are responsible for 90+% of the total parameter count”(Ollama gpt-oss) — 자리는 총량만큼 필요합니다.

반대로 “20B면 내 PC엔 무리지”도 틀립니다. 위 llm-tracker 실측에서 같은 기기·같은 Vulkan 백엔드로 19 GB짜리 Qwen3-30B-A3B가 74.76 t/s, 3.9 GB짜리 Llama 2 7B가 52.73 t/s였습니다. 다섯 배 무거운 모델이 더 빠릅니다. 다만 읽는 단계는 반대여서 pp512는 MoE 30B가 119, 7B가 884입니다. 생성이 빠르다고 긴 문서를 밀어 넣는 시간까지 빠르지는 않습니다.

NPU의 TOPS로는 생성 속도를 예측할 수 없습니다

NPU는 노트북에 새로 들어간 AI 전용 계산 칩이고, TOPS는 그 칩의 초당 연산 횟수입니다. 광고에 크게 박혀 있지만 Ollama와 LM Studio의 요구사항 문서에는 NPU 지원 언급이 없고, llama.cpp의 소비자용 NPU 백엔드는 README에 In Progress로 표기돼 있습니다. AMD 문서조차 하이브리드 구성에서 프롬프트 처리는 NPU가, 토큰 생성은 GPU가 맡는다고 씁니다(Lemonade Server FAQ). 아무도 안 쓴다는 뜻은 아니지만, 사양을 고르는 축은 여전히 VRAM 용량과 대역폭입니다. TOPS 읽는 법은 따로 정리한 글에 있습니다.

지금 PC·16GB 그래픽카드·월 구독, 셋 중 하나

2026년 8월 21일 다나와 기준 가격대와 그것이 월 20달러대 AI 구독 몇 개월치인지를 나란히 놓습니다. Claude Pro는 월 결제 $20에 세금 별도라(요금 페이지) 세금까지 월 3만원 안팎으로 잡았습니다.

지출 2026-08-21 다나와 기준 구독 환산
DDR5-5600 16GB 1모듈 31만원대 약 10개월치
RTX 5060 Ti 16GB 90만원대 약 2년 반치
RTX 5070 12GB 130만원대 약 3년 반치
RTX 5080 16GB 230만원대 6년치 이상

그래픽카드는 다나와 목록, 램은 검색 결과 표기 기준이며 실시간으로 바뀝니다. 램값이 통념보다 높은 것은 1분기 일반 DRAM 계약가가 90~95% 올랐다는 집계가 소매가에 반영된 탓입니다. 전기요금과 파워·케이스 교체비는 빠져 있습니다 — 카드마다 요구 전력과 길이가 다르니 파워 용량부터 확인하세요.

역전이 하나 보입니다. RTX 5060 Ti 16GB가 RTX 5070 12GB보다 약 40만원 싼데 VRAM은 4GB 더 큽니다. 5070은 버스폭이 192-bit로 더 넓어 생성 속도가 앞설 것으로 보이지만, 위 표에 5070 행이 없어 수치로 말하지는 않겠습니다. 다만 128K에서 8B의 KV 캐시만 16 GiB, q8_0으로 눌러도 8 GiB라는 계산을 떠올리면 로컬 LLM 용도로 12GB짜리에 40만원을 더 얹는 쪽은 설득하기 어렵습니다.

VRAM이 8GB 미만이면 1번은 건너뜁니다 — 2번이나 3번입니다.

1. 지금 PC로 돌린다 — VRAM 8GB 이상이 있고 용도가 짧은 대화나 문단 다듬기라면 추가 지출 없이 시작할 수 있습니다. gemma3:4b가 3.3 GB, qwen3:8b가 5.2 GB, gemma3:1b은 815 MB입니다(gemma3 태그). 띄운 뒤 ollama ps가 “100% GPU”로 나오는지만 확인하세요.

2. 램·그래픽카드에 돈을 더 쓴다 — 긴 문서를 매일 넣거나 그 문서를 외부로 보낼 수 없다면 여기입니다. 우선순위는 속도보다 용량이라, 위 표에서 남는 것은 RTX 5060 Ti 16GB 90만원대 한 장입니다(5080은 같은 16GB이지만 230만원대고, 5070은 130만원대인데 12GB입니다). 램 증설은 GPU 밖으로 밀려난 부분을 받아 주는 보험이지 속도 해법이 아닙니다. 슬롯이 남아 있으면 16GB 1모듈 31만원대를 더해 32GB로, 슬롯이 찼으면 램은 건드리지 않는 편이 낫습니다.

3. 월 구독을 계속 쓴다 — 긴 문서를 한 달에 몇 번 넣는 정도면 이쪽입니다. 로컬로 옮기면 월 구독료는 나가지 않는 대신 하드웨어 값과 전기요금이 듭니다. 그래픽카드 한 장이 구독 2년 반에서 6년치에 해당하는 지출이고, 그동안 클라우드 모델은 계속 갱신됩니다.

로컬을 고르는 이유가 데이터라면, 확실한 것은 모델이 도는 동안 데이터가 외부 서버로 전송되지 않는다는 기술적 사실까지입니다. 사내 규정상 허용되는지는 별개이고, 그 절차는 회사 자료를 AI에 넣어도 되나에 있습니다. 라이선스도 모델마다 다릅니다 — gpt-oss와 Qwen3는 Apache 2.0이지만 Gemma는 구글 이용약관, Llama는 메타 커뮤니티 라이선스를 따르니 업무에 쓸 생각이면 배포 페이지에서 직접 확인하세요.


이 글은 특정 제품의 구매를 권유하지 않습니다. 가격·성능 수치는 표기된 확인일 기준이며, 필자는 언급된 제조사·유통사와 어떠한 경제적 이해관계도 없습니다.

이 글은 AI 도구의 도움을 받아 초안을 작성하고 사람이 검토·수정해 발행했습니다. 사실관계에 오류가 있다면 문의 페이지로 알려주세요. 본문에는 광고가 포함될 수 있습니다.