Ollama에서 모델을 한 번이라도 실행하면, 해당 모델은 일정 시간 동안 GPU 메모리(VRAM)에 로드된 상태로 유지됩니다. 영상 편집이나 게임 등 다른 용도로 GPU를 사용하고 싶을 때 '언제 해제되는지', '어떻게 바로 해제할 수 있는지'가 궁금하여 keep_alive의 동작을 실측으로 확인해 보았습니다.
- Windows 11 (빌드 10.0.26200)
- Ollama 0.40.4 (공식 앱, 기본 주소:
http://127.0.0.1:11434)
- 모델:
qwen2.5:0.5b
(검증용. 로드 후 메모리 크기는 ollama ps 상 936MB)
작은 요청을 한 번 보내고, 로드 상태를 확인합니다.
$body = @{ model = "qwen2.5:0.5b"; prompt = "ok"; stream = $false; options = @{ num_predict = 3 } } |
ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri http://127.0.0.1:11434/api/generate -Method Post `
...
실행 결과:
NAME ID SIZE PROCESSOR CONTEXT RUNNER UNTIL
qwen2.5:0.5b a8b0c5157701 936 MB 100% GPU 32768 llamacpp 4 minutes from now
UNTIL이 '4 minutes from now'입니다. 즉, 기본 설정으로는 마지막 요청 시점으로부터 5분 동안 VRAM에 남아있습니다(표시는 남은 시간이라 4분대로 보일 수 있습니다. 서버 시작 설정 로그에도 OLLAMA_KEEP_ALIVE:5m0s로 출력됩니다).
요청 JSON에 keep_alive를 추가하면 유지 시간을 지정할 수 있습니다.
$body = @{ model = "qwen2.5:0.5b"; prompt = "ok"; stream = $false; keep_alive = "30m"; options = @{ num_predict = 3 } } |
ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri http://127.0.0.1:11434/api/generate -Method Post `
...
실행 결과:
NAME ID SIZE PROCESSOR CONTEXT RUNNER UNTIL
qwen2.5:0.5b a8b0c5157701 936 MB 100% GPU 32768 llamacpp 29 minutes from now
UNTIL이 30분으로 변경되었습니다. 반복적으로 호출하는 워크로드에서 매번 로드하는 것을 방지하고 싶을 때 유용합니다.
반대로 '이 요청 후에는 바로 해제해줬으면 좋겠다' 할 때는 `
(확인 가능). -
keep_alive = "30m"
과 같이 지정하면 유지 시간을 늘릴 수 있습니다. -
keep_alive = "0"
을 포함한 요청을 보내면, 배치 처리 마지막에 VRAM을 명시적으로 해제할 수 있습니다. - GPU를 다른 작업에 넘겨주고 싶을 때는 '사용이 끝난 후 keep_alive: "0"을 한 번 보내는' 것을 습관화하는 것이 좋습니다.
VRAM 관리를 포함한 자동 운영 전체를 한 권에 정리했습니다. 제1장과 제2장은 무료로 읽을 수 있습니다.