Ollamaのモデルがすぐアンロードされる原因とkeep_alive設定手順

※本記事にはプロモーション(広告・アフィリエイトリンク)を含みます。
ローカルで Ollama を使っていると、少し席を外しただけでモデルがメモリから降り、次のリクエストでまた数十秒の読み込みが走る——そんな「すぐアンロードされる」問題を keep_alive の指定で止めるための手順です。
まず原因を切り分け、そのうえで API・環境変数・systemd それぞれでの設定方法を、公式仕様の値とコマンドでまとめます。対象は Linux/macOS でローカルの Ollama サーバーを動かしている人です。
まず現状を確認する(デフォルトは何分か)
Ollama の公式ドキュメントによると、モデルがメモリに留まる時間(keep_alive)のデフォルトは「5分」です(執筆時点)。素の状態なら、最後のリクエストから5分間は常駐するはずです。
もし30秒ほどで降りているなら、どこかで keep_alive が短い値に上書きされているか、VRAM 側の都合で押し出されている可能性が高いと考えられます。まずは現状を見ます。
ollama ps
UNTIL 列に「あと何分で降りるか」が表示されます。ここが極端に短い、あるいは PROCESSOR が GPU ではなく CPU になっているなら、設定や VRAM を疑います。
30秒で降りるときに疑う3つの原因
| 原因 | 確認する場所 |
|---|---|
| keep_alive に短い値が設定されている | OLLAMA_KEEP_ALIVE 環境変数 |
| 呼び出し側アプリが keep_alive を送っている | Open WebUI・LangChain などのリクエスト設定 |
| VRAM 不足で別モデルに押し出される | ollama ps の PROCESSOR・nvidia-smi |
とくに2番目は見落としやすい点です。公式ドキュメントによると、API の keep_alive パラメータは OLLAMA_KEEP_ALIVE 環境変数より優先されます。環境変数を長く設定しても、アプリ側が短い値を送っていればそちらが勝ちます。
3番目は環境によって異なります。GPU を1枚で複数モデルや他アプリと共有している場合、別のモデルがロードされた時点で先のモデルが降りることがある、と考えられます。
設定方法1:リクエストごとに指定する
/api/generate や /api/chat に keep_alive を渡します。1回のリクエストだけ挙動を変えたいときに使います。
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "テスト",
"keep_alive": "30m"
}'
指定できる値は公式仕様で次のとおりです。
| keep_alive の値 | 意味 |
|---|---|
"5m" |
5分間保持(デフォルト、執筆時点) |
"30m" / "24h" |
分・時間で指定 |
3600 |
秒数で指定(この例は1時間) |
0 |
応答後すぐにアンロード |
-1 |
無期限で常駐 |
プロンプトを空にして送ると、生成せずにモデルの読み込みだけを先に済ませられます(プリロード)。常駐させたいモデルを起動直後に温めておく用途に使えます。
curl http://localhost:11434/api/generate -d '{"model":"llama3","keep_alive":-1}'
設定方法2:サーバー全体のデフォルトを変える
サーバー全体の既定値は OLLAMA_KEEP_ALIVE 環境変数で決めます。ollama serve のプロセスに渡す必要がある点に注意してください。
手動で起動している場合:
export OLLAMA_KEEP_ALIVE=24h
ollama serve
systemd で常駐させている場合(Linux)は、サービスの上書き設定に書きます。
sudo systemctl edit ollama.service
開いたファイルに次を追記します。
[Service]
Environment="OLLAMA_KEEP_ALIVE=24h"
保存したら反映します。
sudo systemctl daemon-reload
sudo systemctl restart ollama
再起動後にもう一度 ollama ps を叩き、UNTIL が意図どおり伸びているか確認します。ここが変わらないときは、前述のとおりアプリ側が keep_alive を送っていないか(API パラメータが優先される)を疑ってください。
まとめ:次にやる1アクション
まず ollama ps で UNTIL を確認してください。そのうえで常駐させたいなら、OLLAMA_KEEP_ALIVE を -1(無期限)か 24h に設定して Ollama を再起動する——これが最初の一手です。それでも降りる場合は、呼び出し側アプリが送る keep_alive と、nvidia-smi で VRAM の空きを順に確認していくと原因にたどり着きやすくなります。
よくある質問
OllamaのモデルがアンロードされるまでのデフォルトのTTLは?
公式ドキュメントによると、最後のリクエストから5分間メモリに保持されるのがデフォルトです(執筆時点)。30秒ほどで降りる場合は、どこかで短い値に上書きされている可能性が高いです。
環境変数を設定したのに反映されないのはなぜ?
APIの keep_alive パラメータは OLLAMA_KEEP_ALIVE 環境変数より優先されます。Open WebUIなど呼び出し側アプリが短い値を送っていると、環境変数を長くしてもそちらが勝ちます。
モデルをずっとメモリに常駐させたいときは?
keep_alive に -1 を指定すると無期限で常駐します。サーバー全体なら OLLAMA_KEEP_ALIVE=-1、リクエスト単位なら JSON に "keep_alive": -1 を渡します。ただしVRAMの空き次第で押し出されることがあります。