~/ / AI 기사 / VPS에서 로컬 LLM / VPS에서 로컬 LLM을 돌리려면 메모리가 얼마나 필요할까? 모델 파일과 KV 캐시
VPS에서 로컬 LLM을 돌리려면 메모리가 얼마나 필요할까? 모델 파일과 KV 캐시
로컬 모델을 돌리려고 서버를 빌리기 전에, 메모리가 얼마나 드는지 알아야 합니다. 답은 두 부분으로 이루어집니다. 모델 자체, 그리고 대화가 길어질수록 또 동시에 처리하는 요청이 많을수록 커지는 캐시입니다. 이 글은 Ollama 라이브러리, Ollama FAQ, 공식 모델 설정 파일이 말하는 내용을 모아 인기 모델 여섯 가지의 캐시를 계산하고, 직접 숫자를 넣어 볼 수 있게 합니다.
게시: · 읽는 데 약 5분 · 모델 데이터는 2026-10-26에 공식 출처와 대조했습니다. 크기와 기본값은 바뀔 수 있으니 플랜을 고르기 전에 다시 확인하세요.
메모리를 채우는 두 가지
첫째는 모델 가중치로, 다운로드 파일과 거의 같은 크기의 메모리를 차지합니다. 둘째는 KV 캐시로, 컨텍스트에 있는 텍스트에 대해 모델이 이미 계산한 키와 값을 담아 둡니다. Ollama FAQ는 필요한 RAM이 OLLAMA_NUM_PARALLEL에 OLLAMA_CONTEXT_LENGTH를 곱한 값에 비례한다고 설명합니다.
캐시의 크기는 모델의 설정 값에서 계산할 수 있습니다. 2 × 레이어 수 × KV 헤드 수 × 헤드 차원 × 값당 바이트 수가 토큰 하나에 필요한 바이트 수이고, 여기에 컨텍스트 길이와 병렬 요청 수를 곱합니다. f16에서는 값 하나가 2바이트입니다. 레이어가 36개, KV 헤드가 8개, 헤드 차원이 128인 Qwen3 8B는 토큰 하나에 2 × 36 × 8 × 128 × 2 = 147,456바이트가 듭니다. 4,096 토큰이면 576 MiB, 32,768 토큰이면 4,608 MiB입니다. 이 공식은 설정 값으로 계산한 우리의 계산이며, Ollama가 공개한 수치가 아닙니다.
모델별로 공식 출처가 말하는 내용
다운로드 크기와 양자화는 Ollama 라이브러리가 각 태그에 표시하는 값이며, 아래 여섯 가지 태그는 모두 Q4_K_M 양자화로 표시되어 있습니다. 레이어 수, KV 헤드 수, 헤드 차원은 Hugging Face에 있는 각 모델의 config.json에서 가져왔습니다.
| 모델 | 다운로드 크기 (GB) | 레이어 수 | KV 헤드 수 | 헤드 차원 |
|---|---|---|---|---|
| Qwen3 0.6B | 0.523 | 28 | 8 | 128 |
| Qwen3 1.7B | 1.4 | 28 | 8 | 128 |
| Qwen3 4B | 2.5 | 36 | 8 | 128 |
| Qwen3 8B | 5.2 | 36 | 8 | 128 |
| Qwen3 14B | 9.3 | 40 | 8 | 128 |
| Mistral 7B (v0.3) | 4.4 | 32 | 8 | 128 |
Mistral 7B의 설정에는 헤드 차원이 명시되어 있지 않아, 은닉 크기를 어텐션 헤드 수로 나눈 값 4096 ÷ 32 = 128을 사용했습니다. Ollama 라이브러리의 Qwen3 4B 태그에는 256K 컨텍스트 윈도우가 표시되어 있습니다. Hugging Face의 Qwen3 4B 2507 릴리스도 레이어 수, KV 헤드 수, 헤드 차원이 원래 모델과 같습니다.
메모리에는 어떤 의미인가
위의 공식을 사용해, 이 표에 모델별로 두 가지 컨텍스트 길이에서의 캐시와 4,096 토큰에서의 예상 합계를 정리했습니다. 합계는 가중치, 한 번에 요청 하나를 처리할 때의 f16 캐시, 그리고 운영체제와 다른 서비스를 위한 여유분 1 GiB를 더한 값입니다. 마지막 열은 이를 담을 수 있는 가장 작은 일반적인 메모리 크기입니다.
| 모델 | 4,096 토큰에서의 KV 캐시 (MiB) | 32,768 토큰에서의 KV 캐시 (MiB) | 4,096 토큰에서의 예상 합계 (GiB) | 가장 작은 일반적인 메모리 크기 (GiB) |
|---|---|---|---|---|
| Qwen3 0.6B | 448 | 3584 | 1.92 | 2 |
| Qwen3 1.7B | 448 | 3584 | 2.74 | 4 |
| Qwen3 4B | 576 | 4608 | 3.89 | 4 |
| Qwen3 8B | 576 | 4608 | 6.41 | 8 |
| Qwen3 14B | 640 | 5120 | 10.29 | 12 |
| Mistral 7B (v0.3) | 512 | 4096 | 5.60 | 8 |
이 값은 측정값이 아니라 추정치입니다. 4,096 토큰에서 간신히 들어가는 모델은 컨텍스트 길이를 늘리면 들어가지 않습니다. 32,768 토큰에서는 Qwen3 8B의 캐시만 해도 4,608 MiB입니다.
더 긴 컨텍스트, 더 많은 병렬 요청
- Ollama FAQ는 필요한 RAM이 OLLAMA_NUM_PARALLEL에 OLLAMA_CONTEXT_LENGTH를 곱한 값에 비례한다고 설명하며, 예를 들어 2K 컨텍스트에 병렬 요청 4개이면 8K 컨텍스트가 되어 추가 메모리가 필요하다고 합니다.
- OLLAMA_NUM_PARALLEL의 기본값은 1로 문서화되어 있으므로, 사용자 한 명이 쓰는 서버는 한 번에 요청 하나로 시작합니다.
- FAQ에는 키-값 캐시를 q8_0으로 양자화하면 f16의 대략 절반, q4_0이면 대략 4분의 1의 메모리를 쓴다고도 나와 있습니다. FAQ의 비율을 적용하면, Qwen3 8B의 4,096 토큰 캐시는 q8_0에서 약 288 MiB로 줄어듭니다.
- Ollama 문서의 컨텍스트 길이 페이지는 컨텍스트 길이가 커지면 모델에 필요한 메모리가 늘어난다고 설명하며, ollama ps의 PROCESSOR 열에서 모델이 CPU로 오프로드되었는지 확인할 수 있다고 안내합니다.
직접 숫자를 넣어 보기
아래 계산기는 같은 공식과 같은 데이터를 사용합니다. 모델을 고르거나 직접 입력하고, 컨텍스트 길이, 병렬 요청 수, 캐시 유형, 여유분을 설정한 뒤, 보고 있는 플랜의 메모리를 입력하면 추정치가 들어가는지 확인할 수 있습니다.
직접 해 보기: Local LLM Memory Estimator
추정값
- 모델 가중치
- 4.84 GiB
- KV 캐시
- 0.56 GiB
- 예비분
- 1.00 GiB
- 합계
- 6.41 GiB (6.88 GB)
- 담을 수 있는 가장 작은 일반 메모리 크기
- 8 GiB
이 값은 추정입니다. 런타임의 연산 버퍼는 포함하지 않으며, 모든 레이어의 KV 구조가 같다고 가정합니다. 플랜을 정하기 전에 실제로 실행해 측정하세요.
모델 데이터 확인일: 2026-10-26.
출처: Ollama library · 모델 구성 파일 (config.json) · Ollama FAQ
모든 처리는 브라우저 안에서 이루어지며 아무것도 업로드되지 않습니다.
플랜을 고르기 전에
- 이 추정치에는 런타임이 계산용 버퍼로 쓰는 자체 작업 메모리가 들어 있지 않습니다. 우리의 제안: 테스트 서버에서 모델을 돌려 사용할 컨텍스트 길이로 메모리 사용량을 관찰하고, 여유를 두세요.
- 1 GB는 1,000,000,000바이트이고 1 GiB는 1,073,741,824바이트입니다. 제공업체가 말하는 "GB"는 둘 중 어느 쪽일 수도 있으니, 비교하기 전에 제공업체가 어떻게 세는지 확인하세요.
- 한계는 메모리만이 아닙니다. 표의 모델 파일에는 디스크 공간도 필요하며, 우리가 확인한 문서에는 CPU만으로 돌릴 때의 속도 수치가 나와 있지 않습니다.
- 모델이 간신히 들어간다면, 시작될 때까지 컨텍스트 길이를 줄이기보다 한 단계 큰 크기나 더 작은 모델을 고르세요.
출처
- Ollama library: qwen3
- Ollama library: mistral
- Ollama documentation: FAQ
- Ollama documentation: Context length
- Qwen3-0.6B config.json (Hugging Face)
- Qwen3-1.7B config.json (Hugging Face)
- Qwen3-4B config.json (Hugging Face)
- Qwen3-8B config.json (Hugging Face)
- Qwen3-14B config.json (Hugging Face)
- Mistral-7B-Instruct-v0.3 config.json (Hugging Face)
다음에 읽기
- 내 코드에서 로컬 모델 호출하기: Ollama의 구조화된 출력과 OpenAI 호환 APIJSON Schema로 로컬 모델의 출력을 제한하고 OpenAI 방식 클라이언트에서 Ollama를 호출하기: 공식 문서의 내용과 지원되지 않는 항목.
- 로컬 모델은 무엇을 할 수 있을까? Ollama의 tools, thinking, vision, embedding과 VPS에서 돌릴 수 있는 범위tools, thinking, vision, embedding: Ollama 라이브러리의 라벨이 뜻하는 것, 해당 라벨을 가진 모델, 다운로드 크기.
- VPS에 Ollama를 설치하고 계속 실행하기: 설치, systemd 서비스, 설정, 업데이트Linux VPS에 Ollama를 설치하고 계속 실행하기: 설치 명령, systemd 서비스, 환경 변수, 모델 저장 위치, 업데이트를 공식 문서 기준으로 정리했습니다.
- VPS에서 직접 AI 돌리기: 메모리는 얼마나 잡아야 하고, 무엇을 공개하면 안 되는가VPS에서 Ollama나 Dify를 돌릴 계획이신가요? 메모리, CPU만으로 추론하는 경우, 닫아 두어야 할 포트에 대해 공식 문서가 말하는 내용을 정리했습니다.