SSD Nodes Learn Hosting plans →
가이드 Matt Connor작성자 Matt Connor · 업데이트됨 2026-10-06

VPS에서 Ollama로 실행할 GLM 모델과 RAM 요구량

GLM 5.2는 Ollama에서 cloud 전용입니다. VPS에는 실제 가중치를 내려받는 glm-4.7-flash가 맞으며, quantisation별 RAM 요구량과 태그 고정 방법을 확인합니다.

VPS에서 GLM 5.2를 실행할 수 있습니까?

아니요. 무엇인가를 임대하기 전에 그 이유를 알아야 합니다. 2026년 8월 18일 기준으로 Ollama 라이브러리의 GLM 5.2에는 glm-5.2:cloud 태그가 정확히 1개 있습니다. :cloud 태그는 Ollama 서버에서 실행됩니다. 사용자의 서버는 프롬프트를 보내고 토큰을 받으므로 가중치가 디스크에 저장되지 않습니다. 이 모델은 756 billion parameters입니다. 756 billion parameters를 parameter당 4 bits로 저장하면 가중치만 대략 378 GB입니다. 이는 context, activations 또는 운영 체제에 필요한 메모리를 계산하기 전의 단순한 산술 결과입니다. 일반적인 VPS 요금제에서는 이 정도 메모리를 제공하지 않습니다.

임대한 서버에 맞는 GLM 모델은 glm-4.7-flash입니다. 이 모델은 다운로드 가능한 가중치와 함께 4개 태그로 배포됩니다. mixture-of-experts 모델이므로 각 토큰을 처리할 때 네트워크의 일부만 실행됩니다. Z.ai는 이 모델을 30B-A3B로 설명합니다. 전체 parameter 수는 30 billion이고, 토큰당 약 3 billion이 활성화됩니다. 따라서 이 가이드는 실제로 수행할 수 있는 질문에 답합니다. 태그를 고정하고, 서버 사양을 정하고, 직접 속도를 측정하고, endpoint를 비공개로 유지하십시오.

여기에 있는 명령을 포함해 명령을 복사하기 전에 태그를 확인하십시오. Ollama의 라이브러리는 예고 없이 변경됩니다. glm-4.7-flash 태그 목록을 열고 해당 태그가 여전히 존재하는지 확인하십시오. 로컬 가중치가 포함된 최신 GLM release가 있다면 이를 우선 사용하고, 실제로 테스트한 태그를 기록하십시오.

그래도 GLM 5.2 자체를 사용하려면 ollama run glm-5.2:cloud가 ollama signin 이후에 작동하며, 클라이언트 측에서는 다른 Ollama 모델과 동일하게 동작합니다. 이에 동의하는 내용을 이해해야 합니다. 프롬프트가 사용자의 서버를 떠납니다. 데이터를 자신의 시스템에 보관해야 해서 self-hosting을 선택한 것이라면 :cloud 태그는 그 요구를 충족하지 않습니다.

어떤 GLM 태그가 있으며, 어떤 태그를 고정해야 하는가

여기서 중요한 공식 GLM 항목은 3개입니다. glm-5.2과 glm-5.1은 클라우드 전용입니다. glm-4.7-flash은 로컬 항목이며, 다음은 게시된 태그와 Ollama가 각 태그에 대해 표시하는 다운로드 크기입니다.

Chartglm-4.7-flash tags in Ollama's library, checked 2026-08-18
The data behind this chart
[
  {
    "label": "q4_K_M",
    "download_gb": 19
  },
  {
    "label": "latest",
    "download_gb": 19
  },
  {
    "label": "q8_0",
    "download_gb": 32
  },
  {
    "label": "bf16",
    "download_gb": 60
  }
]

위 수치는 라이브러리 페이지에 게시된 값이며, 직접 측정한 값이 아닙니다. latest과 q4_K_M은 모두 19 GB로 표시되므로, 현재 latest는 Q4 빌드로 해석됩니다. 다시 게시될 때 이 값은 변경될 수 있습니다. 따라서 스크립트나 Dockerfile에 단독으로 ollama pull glm-4.7-flash을 작성해서는 안 됩니다. 양자화 수준을 지정해야 합니다. 가장 큰 태그인 bf16은 양자화하지 않은 bfloat16 가중치를 포함하며, 다운로드 크기는 60 GB입니다.

라이브러리에서 검색하면 someuser/glm-5.2처럼 이름에 슬래시가 포함된 네임스페이스 업로드도 표시됩니다. 슬래시는 해당 항목을 사용자 계정이 게시했다는 뜻입니다. 따라서 공식 항목이 아니라 커뮤니티에서 다시 업로드한 항목입니다. 내부에 어떤 가중치가 포함되어 있는지는 보장되지 않습니다. 온라인에서 찾은 서명되지 않은 바이너리와 같은 방식으로 취급해야 합니다.

Ollama 설치 및 정확한 tag 가져오기

Ollama의 Linux 설치 프로그램은 명령 하나로 실행할 수 있다.

curl -fsSL https://ollama.com/install.sh | sh
ollama --version

설치 프로그램은 ollama 사용자로 실행되는 systemd 서비스를 생성한다. 모델을 가져오기 전에 서비스가 시작되었는지 확인한다.

systemctl status ollama --no-pager

Active: active (running)은 API가 포트 11434에서 수신 대기 중이라는 뜻이다. unit이 없으면 설치 프로그램이 일반 바이너리 설치로 대체된 것이다. 이 경우 Ollama Linux 문서에 수동으로 생성할 서비스 파일이 나와 있다.

glm-4.7-flash 페이지에는 필요한 Ollama 최소 버전이 나와 있다. 오래된 바이너리는 모델을 느리게 실행하지 않는다. 모델 실행을 거부한다. 이 경우 모델에 더 최신 버전의 Ollama가 필요하다는 메시지와 함께 pull이 실패한다. 업그레이드하려면 설치 스크립트를 다시 실행한다. 18 August 2026 기준 현재 release는 0.32.14이며, 이 최소 버전보다 충분히 높다.

이제 이름으로 tag 하나를 가져온다.

ollama pull glm-4.7-flash:q4_K_M
ollama ls

ollama ls에는 게시된 19 GB에 가까운 크기의 glm-4.7-flash:q4_K_M이 표시되어야 한다. pull이 중간에 중단되면 실행할 수 있는 결과가 남지 않으므로 같은 명령을 다시 실행한다. 소형 플랜에서 pull이 실패하는 가장 흔한 원인은 네트워크 문제가 아니라 디스크가 가득 찬 경우다. 모델이 root 파일 시스템의 /usr/share/ollama/.ollama/models에 저장되기 때문이다. 시작하기 전에 df -h /usr/share/ollama으로 확인한다.

각 양자화에는 RAM이 얼마나 필요합니까?

다운로드 크기를 최솟값으로 보고 여기에 필요한 메모리를 더해야 합니다. 가중치는 메모리에 상주해야 합니다. 그 위에 KV cache(key/value cache)가 추가됩니다. KV cache는 런타임이 대화에서 이미 처리한 토큰을 기억하는 데 사용하는 메모리입니다. 여기에 연산 버퍼와 운영 체제가 사용하는 메모리도 필요합니다. RAM이 정확히 19 GB인 서버에서는 19 GB 태그를 실행할 수 없습니다.

모든 환경에 맞는 단일 배수는 없습니다. 허용하는 컨텍스트 길이에 따라 KV cache가 커지고, 나머지 메모리 사용량도 런타임 버전에 따라 달라지기 때문입니다. 따라서 추측하지 말고 측정해야 합니다. 간단한 프롬프트로 모델을 로드한 다음 서버가 예약한 메모리를 확인합니다.

ollama run glm-4.7-flash:q4_K_M "Reply with the single word: ready"
ollama ps

ollama ps는 로드된 모델을 SIZE 열과 PROCESSOR 열을 포함해 출력합니다. SIZE는 런타임이 실제로 예약한 메모리이므로 계획한 메모리와 비교해야 하는 값입니다. PROCESSOR은 작업이 수행되는 위치를 보여 줍니다. 따라서 100% CPU이면 GPU를 전혀 사용하지 않았다는 뜻입니다.

모델이 메모리에 맞지 않을 때 실패는 조용히 발생하며 두 가지 형태로 나타납니다. swap이 활성화되어 있으면 로드가 성공한 것처럼 보인 뒤 생성 속도가 급격히 느려집니다. 토큰을 생성할 때마다 페이지가 디스크와 RAM 사이에서 이동하기 때문입니다. swap이 없으면 프로세스가 즉시 종료되고, journalctl -k | grep -i "out of memory"에 커널의 Out of memory: Killed process 행과 ollama의 이름이 표시됩니다. 두 항목을 모두 확인해야 합니다. 입력하던 터미널에는 어느 쪽도 유용한 메시지를 출력하지 않기 때문입니다.

19 GB Q4 태그에서 32 GB Q8 태그로 바꾸는 것이 해당 메모리 사용량을 조절하는 가장 큰 수단입니다. Q4는 출력 품질을 일부 낮춥니다. 감소 폭은 작업에 따라 다르며, 구조화된 출력과 긴 추론 과정이 일반적인 대화보다 더 큰 영향을 받습니다. Q4, Q8, FP16의 실제 차이를 읽은 뒤 결정하는 것이 좋습니다. CPU만 사용하는 VPS에서는 양자화 선택에 따라 모델이 실행되는지 여부가 결정되는 경우가 많기 때문입니다.

CPU 전용 VPS에서 발생하는 일

대부분의 VPS 요금제에는 GPU가 없으며, Ollama는 별도 경고 없이 CPU에서 모델을 실행한다. 결과를 실제로 사용할 수 있는지는 작업 부하와 사용자의 인내심에 따라 달라진다.

mixture-of-experts 구조는 속도 향상에 도움이 된다. 각 토큰을 처리할 때 300억 개 파라미터 중 약 30억 개만 사용하므로, 토큰당 연산량이 dense 30B 모델에 필요한 양보다 훨씬 적다. 줄어들지 않는 것은 메모리다. 다음 토큰에 어떤 expert를 선택할지 router가 결정할 수 있으므로 모든 expert가 메모리에 상주해야 한다. 따라서 CPU 전용 시스템도 Q4 tag에 필요한 전체 19 GB 이상을 확보해야 하며, 처리량은 clock speed보다 대부분 memory bandwidth의 영향을 받는다.

이로 인해 실무에서는 같은 core 수와 같은 RAM을 제공하는 두 요금제라도 memory subsystem의 차이 때문에 생성 속도가 눈에 띄게 다를 수 있다. shared plan에서는 변수가 하나 더 생긴다. 시끄러운 이웃 사용자의 CPU steal time이 시간에 따라 달라지는 tokens-per-second 수치로 나타나기 때문이다. 따라서 다른 사람이 공개한 수치로 사용자의 결과를 예측할 수 없으며, 다음 섹션이 결과표가 아니라 측정 절차를 설명하는 이유도 여기에 있다.

직접 초당 토큰 수 측정하기

Ollama의 generate endpoint는 최종 JSON 객체에 시간 측정 필드를 반환한다. 생성된 토큰 수를 생성 시간으로 나누면 현재 요금제와 프롬프트에서의 초당 토큰 수를 확인할 수 있다.

sudo apt install -y jq
curl -s http://localhost:11434/api/generate -d '{
  "model": "glm-4.7-flash:q4_K_M",
  "prompt": "Write a 200 word explanation of how TCP congestion control works.",
  "stream": false,
  "options": {"num_ctx": 8192}
}' | jq '{
  tokens: .eval_count,
  tokens_per_second: (.eval_count / .eval_duration * 1e9),
  prompt_seconds: (.prompt_eval_duration / 1e9),
  load_seconds: (.load_duration / 1e9)
}'

eval_count은 생성된 토큰 수이고 eval_duration는 토큰을 생성하는 데 걸린 나노초이므로, eval_count / eval_duration * 1e9은 초당 토큰 수다. prompt_eval_duration는 프롬프트를 읽는 데 걸린 시간이다. 사용자가 처음 토큰이 나타날 때까지 기다리는 시간은 이 값에 해당한다. load_duration는 디스크에서 모델을 로드하는 데 걸린 시간이다. 따라서 재시작 후 첫 번째 호출에서는 값이 크고, 다음 호출에서는 거의 0에 가깝다.

3번 실행하고 두 번째와 세 번째 결과를 사용한다. 첫 번째 실행에는 모델 로드 시간이 포함되기 때문이다. 그런 다음 훨씬 긴 프롬프트로 다시 실행한다. 프롬프트 처리 시간은 입력 길이에 따라 증가하지만 생성 속도는 그렇지 않기 때문이다. 요금제 이름과 양자화 방식 옆에 수치를 기록한다. 이 기록은 사용 중인 하드웨어에서 직접 측정한 결과이므로, 다른 곳에서 확인한 어떤 벤치마크보다 유용하다.

컨텍스트 길이가 메모리 사용량을 배수로 늘리는 방식

Ollama의 기본 컨텍스트 길이는 4096 토큰이다. 모델이 지원한다고 표시하는 길이는 이보다 훨씬 긴 glm-4.7-flash 토큰이지만, 기본값으로 이 길이를 사용할 수 있는 것은 아니며 활성화하는 데에도 메모리 비용이 든다.

KV cache에는 모든 레이어에서 각 토큰마다 key 벡터 하나와 value 벡터 하나가 저장된다. 따라서 허용하는 토큰 수가 늘어나면 KV cache 크기도 선형으로 증가한다. 4096 토큰에서 32768 토큰으로 늘리면 컨텍스트가 8배가 되므로 KV cache도 대략 8배가 된다. 가중치만 간신히 저장할 수 있도록 구성한 서버에서는 이 추가 할당 때문에 swap이 발생한다. 따라서 짧은 프롬프트에는 정상적으로 응답하던 시스템이 긴 문서를 붙여 넣는 순간 갑자기 매우 느려질 수 있다.

위의 curl 명령과 같이 options 객체에서 num_ctx을 지정하면 요청별로 설정할 수 있다. 또는 서버 기본값을 변경할 수 있다.

sudo install -d -m 755 /etc/systemd/system/ollama.service.d
printf '[Service]\nEnvironment="OLLAMA_CONTEXT_LENGTH=16384"\n' \
  | sudo tee /etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart ollama
systemctl show ollama --property=Environment

마지막 명령은 OLLAMA_CONTEXT_LENGTH 값을 출력해야 한다. 빈 Environment=가 출력되면 override 파일이 잘못된 디렉터리에 있거나 reload를 수행하지 않은 것이다. 다음 모델 로드가 끝나면 ollama ps에 4096으로 설정했을 때보다 눈에 띄게 큰 SIZE이 표시되어야 한다. 값을 단계적으로 올리면서 매번 해당 수치를 확인한다. num_ctx로 Ollama의 컨텍스트 길이 설정하기에서는 이 설정이 keep-alive 및 병렬 요청과 어떻게 함께 작동하는지 설명한다. 두 기능 모두 동일한 비용을 배수로 늘린다. 둘 이상의 클라이언트가 서버를 사용할 예정이라면 컨텍스트와 동시에 동시성 제한도 정해야 한다. 각 병렬 슬롯이 자체 KV cache를 유지하기 때문이다. queue 설정에 따라 두 번째 요청이 대기할지 아니면 즉시 거부될지가 결정된다.

API가 서버보다 저렴한 경우

셀프 호스팅이 항상 더 저렴한 것은 아니다. 이 모델 계열에서는 공개된 정가가 이를 특히 분명하게 보여 준다.

ChartZ.ai published list prices per million tokens, checked 2026-08-18
The data behind this chart
[
  {
    "label": "GLM-5.2 input",
    "usd_per_million_tokens": 1.4
  },
  {
    "label": "GLM-5.2 output",
    "usd_per_million_tokens": 4.4
  },
  {
    "label": "GLM-4.7-Flash input",
    "usd_per_million_tokens": 0
  },
  {
    "label": "GLM-4.7-Flash output",
    "usd_per_million_tokens": 0
  }
]

2026년 8월 18일 기준으로 Z.ai는 GLM-5.2의 입력 토큰 1백만 개당 가격을 $1.4, 출력 토큰 1백만 개당 가격을 $4.4로 제시한다. 이 가이드에서 로컬로 실행하는 모델인 GLM-4.7-Flash는 입력과 출력 모두 1백만 토큰당 $0로 제시한다. 이 가격은 공개된 정가이며 변경될 수 있다. 따라서 어느 쪽을 기준으로 예산을 계획하기 전에 현재 가격 페이지를 확인해야 한다.

따라서 현재 셀프 호스팅 glm-4.7-flash의 비용 절감 근거는 약하다. 충분한 RAM을 갖춘 VPS에는 매월 실제 비용이 발생하지만, 제공업체는 동일한 모델을 무료로 제공한다. 직접 실행해서 얻는 이점은 다르다. 프롬프트가 사용자가 제어하는 시스템에 남고, 사용자가 변경하지 않는 한 모델 버전이 바뀌지 않는다. 이는 셀프 호스팅을 선택할 충분한 이유다. 하지만 이 모델을 현재 가격으로 사용하는 경우 비용은 그 이유가 아니다.

원하는 모델이 무료가 아니거나, 법적으로 데이터를 자체 네트워크 밖으로 보낼 수 없는 경우에는 계산 결과가 달라진다. GPU VPS와 API 토큰의 손익분기점에서는 각 변수를 명시해 이 계산 과정을 설명한다. 아직 시스템을 선택하는 중이라면 VPS의 실제 월 비용에서 이 합계의 나머지 부분을 확인할 수 있다.

localhost에서 엔드포인트 유지

이 단계는 많은 사람이 건너뛰지만 가장 중요합니다.

Ollama는 기본적으로 포트 11434에서 127.0.0.1에 바인딩되므로 서버 자체에서만 접근할 수 있습니다. 이를 추측하지 말고 서버에서 직접 확인합니다.

ss -ltnp | grep 11434

127.0.0.1:11434이 표시되어야 합니다. 0.0.0.0:11434 또는 *:11434가 표시되면 공용 인터페이스를 포함한 모든 인터페이스에서 API가 수신 대기 중이라는 뜻입니다.

이는 Ollama의 API에 인증 기능이 없기 때문에 중요합니다. 비밀번호도, 토큰도, 허용 목록도 없습니다. 포트 11434에 접근할 수 있는 사람은 모델 목록을 확인하고, 사용자가 비용을 지불하는 하드웨어에서 생성을 실행하며, 디스크가 가득 찰 때까지 새 모델을 내려받고, 기존 모델을 삭제할 수 있습니다. 포트 11434는 고정되어 있고 널리 알려져 있으므로 스캐너가 열린 포트를 빠르게 찾습니다.

OLLAMA_HOST=0.0.0.0을 설정하지 마십시오. 노트북의 클라이언트가 연결되지 않을 때 이를 해결 방법으로 제안하는 튜토리얼이 많지만, 올바른 해결 방법이 아닙니다. 대신 포트 포워딩을 사용합니다.

ssh -N -L 11434:127.0.0.1:11434 you@your-server

이 설정은 SSH를 통해 노트북의 포트 11434를 서버의 루프백 주소에 매핑합니다. 따라서 http://localhost:11434로 구성된 클라이언트가 변경 없이 작동하고 새로 노출되는 항목도 없습니다. 여러 사람이나 여러 장치가 사용하는 경우에는 서버를 사설 터널 네트워크에 연결하고 Ollama를 터널 주소에 바인딩합니다. 0.0.0.0에는 절대 바인딩하지 마십시오.

서버가 아닌 다른 위치에서 확인합니다. SSH 터널을 닫은 상태로 노트북에서 다음을 실행합니다.

curl -m 5 http://your-server-ip:11434/api/tags

curl: (28) Connection timed out 또는 curl: (7) Failed to connect이 올바른 결과입니다. 모델 목록이 JSON으로 반환되면 해당 포트가 인터넷에 공개된 상태이므로 지금 바로 수정해야 합니다. 제공업체의 네트워크 방화벽은 서버에서 실행되는 방화벽과 별도의 제어 수단이므로 양쪽을 모두 확인합니다. VPS 호스팅의 안전성에 관한 더 넓은 질문에서는 계속 실행해 두는 시스템에 필요한 나머지 기본 보안 설정을 설명합니다.

glm-4.7-flash도 여전히 너무 큰 경우

Q4 태그가 계획한 리소스에 맞지 않는다면 컨텍스트를 줄이지 말고 더 작은 모델을 선택해야 한다. 모델을 적재하기 위해 컨텍스트를 줄이면 로드되기만 하고 긴 프롬프트가 처음 입력되는 순간 실패한다. VPS에서 8B 및 27B 크기로 실행하는 Qwen 3에서는 사양이 낮은 서버에 적합한 크기로 동일한 설치 과정을 설명한다. VPS에서 Ollama로 LLM을 자체 호스팅하는 일반 가이드에서는 어떤 모델을 선택하든 동일하게 적용되는 부분을 다룬다. 어떤 모델을 선택하든 태그를 고정하고 자체 요금제에서 성능을 측정하며 endpoint는 loopback에 유지해야 한다.

FAQ

GLM 5.2를 VPS에서 로컬로 실행할 수 있습니까?

아니요. 2026년 8월 18일 기준으로 GLM 5.2는 Ollama 라이브러리에 glm-5.2:cloud로만 존재합니다. 이 태그는 Ollama 자체 인프라에서 실행되며, 작동하려면 먼저 ollama signin가 필요합니다. 이 모델은 756 billion parameters이므로 parameter당 4 bits로 계산해도 weight만 수백 GB에 이릅니다. 이는 일반적인 VPS 요금제가 제공하는 용량을 훨씬 초과합니다. 다운로드 가능한 weight를 제공하면서 임대한 서버에서 실행할 수 있는 GLM 모델은 glm-4.7-flash입니다.

glm-4.7-flash에는 RAM이 얼마나 필요합니까?

태그의 다운로드 크기를 최소 기준으로 보고, 여기에 KV cache와 운영 체제에 필요한 공간을 추가해야 합니다. Ollama는 Q4 태그를 19 GB, Q8 태그를 32 GB, bfloat16 태그를 60 GB로 표시합니다. KV cache는 설정한 context length에 따라 증가하므로 모든 환경에 적용되는 고정 배수는 없습니다. 모델을 로드하고 ollama ps를 실행한 다음, 사용 중인 서버에서 실제 수치를 확인하려면 SIZE 열을 읽습니다.

사용 중인 VPS에서 초당 token 수를 어떻게 측정합니까?

"stream": false을 사용해 http://localhost:11434/api/generate에 요청을 하나 보낸 다음, 응답에서 eval_count과 eval_duration를 읽습니다. 초당 token 수는 eval_count / eval_duration * 1e9입니다. eval_duration은 nanosecond 단위로 보고되기 때문입니다. 첫 번째 실행은 버립니다. 첫 실행의 load_duration에는 disk에서 weight를 읽는 시간이 포함되기 때문입니다. 입력 길이에 따라 prompt_eval_duration은 증가하지만 generation speed는 증가하지 않으므로, 긴 prompt로도 반복해서 측정합니다.

OLLAMA_HOST를 0.0.0.0으로 설정하면 안 되는 이유는 무엇입니까?

Ollama API에는 authentication이 없기 때문입니다. 따라서 0.0.0.0에 bind하면 authentication이 없는 endpoint가 public internet에 노출됩니다. port 11434에 접근할 수 있는 누구나 해당 하드웨어에서 generation을 수행하고 설치된 model을 변경할 수 있습니다. 기본 127.0.0.1 bind를 유지하고 ss -ltnp | grep 11434로 확인합니다. 노트북에서는 ssh -N -L 11434:127.0.0.1:11434 you@your-server과 같은 SSH tunnel을 통해 API에 접근합니다.