【PR】この記事にはA8.netのアフィリエイト広告を含みます。
先に結論:Ollamaのモデルをすぐ解放したい単発処理では、APIリクエストにkeep_alive: 0を明示するのが有効でした。XServer VPSでQwen3 0.6Bを実測すると、0秒条件は応答直後にモデル0件、5分条件は約1.0GiBを保持し、300秒では常駐、302秒で解放されました。一方、常駐中の2回目は総所要時間が約5.5倍速くなります。RTX 5080のVRAMを直接検証したわけではないため、判定は一部解決です。
2026年9月1日、XServer VPS 4GBプランにOllama 0.33.2の隔離コンテナを起動し、keep_alive=0sと5mだけを変えて比較しました。/api/ps、Docker cgroupのmemory.current、ホストのMemAvailable、APIのロード時間を満了まで記録しています。
- RTX 5080でもOllamaのVRAMが空かないのはなぜ?
- ZennのRTX 5080実例では何が起きた?
- RedditではRTX 5080・16GB VRAMにどんな悩みがある?
- Ollama公式のkeep_alive仕様は?
- XServer VPSでRTX 5080のVRAM問題を再現できる?
- 実験前のXServer VPS状態
- Dockerはどのように隔離した?
- 比較条件はどうそろえた?
- keep_alive 0秒と5分の実測結果
- 5分の間、モデルは本当に残り続けた?
- モデルを残すと次の応答はどれだけ速い?
- AIエージェントではkeep_aliveをどう設計する?
- 初心者が迷いやすいポイントは?
- 実験中に起きた問題と解決方法
- XServer VPSで便利だった点・分かりにくかった点
- 既存のAI調査基盤に影響はなかった?
- よくある質問
- XServer VPSでこの悩みはどこまで解決する?
- 最新条件の確認先
RTX 5080でもOllamaのVRAMが空かないのはなぜ?
使い終わったモデルがkeep-alive期間中に常駐しているか、別のアプリや定期処理が期限前にモデルを再呼び出している可能性があります。Ollamaはモデルを既定で5分間メモリに保持するため、プロセスが正常でも次の大きなモデル用の空きが少なく見えることがあります。
ただし、VRAM不足の原因はkeep-aliveだけではありません。モデル本体、コンテキスト、KVキャッシュ、複数モデル、他のGPUアプリも確認が必要です。
ZennのRTX 5080実例では何が起きた?
Zennの「OLLAMA_KEEP_ALIVEが正しくても、VRAMは空かないことがある|Windowsでの実例」では、RTX 5080の総VRAM 16.3GBに対し、使用13.6GB、空き2.3GBだったと報告されています。ollama psでは3モデル合計9.6GBが残り、2分おきの画面監視などが5分の期限前に再呼び出ししていました。
同記事では、単発バッチにkeep_alive: 0を明示した結果、VRAM使用量が13.6GBから2.5GBへ減ったとしています。これは同記事のWindows 11・RTX 5080環境での結果であり、今回のVPS測定値とは混ぜません。
RedditではRTX 5080・16GB VRAMにどんな悩みがある?
Redditのr/ollamaには「16GB VRAM for mode agent」という相談があります。投稿者はCursorのようなローカル開発支援を期待したものの、16GB VRAMで使えるモデル選びに悩んでいます。コメントには、RTX 5080・128GB RAM・Windows 11でQwen3 14Bを使う例もあります。
別の「How to keep ollama from unloading model out of memory」では、逆にモデルを常駐させて冷間ロードを避けたい悩みが共有されています。つまりkeep-aliveは、短ければ常に正解ではありません。
Ollama公式のkeep_alive仕様は?
Ollama公式FAQによると、モデルは既定で5分間メモリに保持されます。APIのkeep_aliveには期間文字列、秒数、負数、0を指定でき、0は応答生成後に即時アンロード、負数は常駐です。
| 設定例 | 意味 | 向く処理 |
|---|---|---|
0 / 0s |
応答後に解放 | 低頻度の単発バッチ |
60s |
1分保持 | 短い連続処理 |
5m |
5分保持 | 対話・頻繁な呼び出し |
-1 |
常駐 | 専用機で常用するモデル |
APIのkeep_aliveはサーバー環境変数OLLAMA_KEEP_ALIVEより優先されます。全ジョブを一律にせず、呼び出し側が用途に合わせて指定できます。
XServer VPSでRTX 5080のVRAM問題を再現できる?
VRAM問題そのものは再現できません。今回のXServer VPSにはNVIDIA GPUがなく、DockerのGPU DeviceRequestsもnullです。測定したのはCPU推論時のRAMです。
一方、モデルの常駐・期限延長・アンロード・次回初動というOllamaのライフサイクルは同じAPIで観察できます。高価なGPU PCを買う前に、制御方法、ログ項目、ジョブ設計を小さなモデルで確認する用途には使えます。
実験前のXServer VPS状態
| 項目 | 実験前 |
|---|---|
| 契約構成 | 4 vCPU / 4GB RAM / 150GB NVMe SSD |
| RAM | 627MB used / 3.47GB available |
| swap | 131MB / 2.15GB |
| ストレージ | 15.52GB / 154.99GB(11%) |
| 公開API | database=ok、artifact_storage=ok |
Dockerはどのように隔離した?
| 設定 | 値 |
|---|---|
| コンテナ | llmo-exp-08-keepalive |
| Ollama / モデル | 0.33.2 / qwen3:0.6b Q4_K_M |
| CPU | 2 vCPU上限 |
| RAM | 2GiB上限、追加swapなし |
| pids | 256上限 |
| API | 127.0.0.1:11441のみ |
| モデル保存 | 既存Docker volumeを再利用 |
公開中のCaddy、FastAPI、PostgreSQLは停止せず、検証用コンテナだけを追加しました。Ollamaのポートは外部公開していません。
比較条件はどうそろえた?
同じ英語プロンプト、temperature 0、seed 42、最大128トークン、context 4096、2スレッド、thinking無効、非ストリーミングに固定しました。変更したのはkeep_aliveだけです。
| 測定対象 | 方法 |
|---|---|
| モデル常駐 | GET /api/psのmodels件数とexpires_at |
| コンテナRAM | cgroupのmemory.current |
| VPS空きRAM | /proc/meminfoのMemAvailable |
| 初動 | APIのload_duration |
| 総所要時間 | APIのtotal_duration |
keep_alive 0秒と5分の実測結果
| 条件 | 応答後モデル | 応答後memory.current | 解放 |
|---|---|---|---|
| 0秒 | 0件 | 32,976,896 bytes | 応答直後に確認 |
| 0秒・2秒後 | 0件 | 26,255,360 bytes(25.04MiB) | 解放済み |
| 5分・常駐直後 | 1件 | 1,079,316,480 bytes(1.005GiB) | 未解放 |
| 5分・300秒 | 1件 | 1,067,704,320 bytes | 未解放 |
| 5分・302秒 | 0件 | 15,261,696 bytes | 解放を確認 |
常駐時から302秒時点までに1,003.69MiB、98.57%減りました。ホストのMemAvailableは約1,030.89MiB増えています。監視間隔が2秒のため、解放は300秒超〜302秒以内です。
5分の間、モデルは本当に残り続けた?
30、60、90、120、150、180、210、240、270、285秒でモデル1件を確認しました。expires_atは全測定で同じ値のままで、300秒でも1件、302秒で0件になりました。
| 経過 | models | container RAMの目安 |
|---|---|---|
| 0秒 | 1 | 約1.005GiB |
| 150秒 | 1 | 約1.00GiB |
| 285秒 | 1 | 約1.00GiB |
| 300秒 | 1 | 約1.00GiB |
| 302秒 | 0 | 約14.55MiB |
この実験中は別プロセスから呼び出していないため、期限は延長されませんでした。定期エージェントが5分より短い間隔で呼ぶ運用では、期限が毎回更新されて事実上常駐し続けます。
モデルを残すと次の応答はどれだけ速い?
| 状態 | load_duration | total_duration |
|---|---|---|
| 5分・初回 | 1.314875秒 | 1.818051秒 |
| 5分・常駐中の2回目 | 0.000847秒 | 0.330410秒 |
| 満了後の再実行 | 1.565753秒 | 2.063675秒 |
2回目のロード時間は99.94%短く、約1,552倍の差でした。総所要時間も81.83%短く、約5.50倍です。keep-aliveを0にするとメモリは空きますが、次回はモデルを再ロードします。
AIエージェントではkeep_aliveをどう設計する?
| ジョブ | 推奨の考え方 | 理由 |
|---|---|---|
| 1時間おきの料金調査 | 0 | 待ち時間より解放を優先 |
| 数枚のスクリーンショット解析 | 30〜60秒 | 連続処理中だけ再利用 |
| 対話型の調査補助 | 5分前後 | 次の指示へ素早く応答 |
| 専用機の常用モデル | -1を検討 | 冷間ロードを避ける |
VPSを司令塔にする場合、ジョブ定義へmodel、keep_alive、開始・終了時刻、load_duration、処理後の/api/psを保存すると、メモリが空かない原因を後から追えます。
初心者が迷いやすいポイントは?
| 迷いやすい点 | 確認方法 |
|---|---|
| 環境変数を変えたのに挙動が違う | APIリクエストのkeep_aliveが上書きしていないか確認 |
| 5分待っても解放されない | ollama psを複数回見てUNTILが延びていないか確認 |
| モデルサイズだけならVRAMへ載るはず | コンテキスト、KVキャッシュ、他モデル、他アプリも測る |
| OSの空きメモリだけ見て判断 | /api/psとGPUならnvidia-smiも併用 |
| keep_alive=0なら最速になる | 次回ロード時間との交換条件を測る |
実験中に起きた問題と解決方法
実験前のポート確認で、Windows PowerShellからSSHへ渡したawk式の$4がローカル側で展開され、awkの構文エラーになりました。ssの結果をgrep ':11441 'で確認する方法へ切り替え、11441番が空いていることを確認してから起動しました。
測定そのものではAPIエラー、OOM、コンテナ再起動は発生していません。
XServer VPSで便利だった点・分かりにくかった点
| 観点 | 実体験 |
|---|---|
| 便利 | 既存サービスを止めず、CPU・RAM・ポートを制限したDocker実験を追加できた |
| 便利 | 5分間の無人監視をSSHで継続し、時系列ログを取れた |
| 便利 | モデル用volumeを再利用し、毎回ダウンロードせず比較できた |
| 分かりにくい | GPUがないためVRAMの結論へ読み替えてはいけない |
| 分かりにくい | LinuxコマンドをPowerShell経由で渡すと$や引用符の解釈が増える |
既存のAI調査基盤に影響はなかった?
実験中も公開ヘルスチェックはdatabase=ok、artifact_storage=okでした。Caddy、FastAPI、PostgreSQLはhealthy、検証コンテナのOOMKilledはfalseです。
終了後、検証専用コンテナとVPS上の一時スクリプトを削除しました。再現用のQwen3モデルvolumeは残しています。実験後のVPSはRAM 611MB used、3.48GB available、ストレージ使用率11%でした。
よくある質問
OLLAMA_KEEP_ALIVE=0だけで十分?
サーバー全体の既定値にはなりますが、APIリクエストのkeep_aliveが優先されます。単発ジョブ側にも明示すると意図を記録しやすくなります。
5分より短い値も使える?
60sなどの期間文字列や秒数を指定できます。複数回の連続処理では、処理間隔より少し長い値が候補です。
XServer VPSでRTX 5080の代わりになる?
GPU性能やVRAM実測の代わりにはなりません。エージェントの司令塔、API設計、モデル常駐制御、ログ収集、CPUで動く小型モデルの検証に向きます。
XServer VPSでこの悩みはどこまで解決する?
判定は一部解決です。RTX 5080のVRAMを直接空けた実験ではありませんが、同じOllama APIで0秒なら応答直後にモデル0件、5分なら302秒まで約1.0GiB常駐することを確認できました。さらに、常駐は次回初動を大幅に短縮するため、無条件に0へ変えるのではなくジョブ単位で設計すべきだと分かりました。
AIによる実機スマホ調査システムでは、定期バッチは0、連続画像解析は短時間、対話セッションは5分というように役割を分けます。VPS側で/api/psと呼び出し元を記録すれば、「誰がモデルを起こし続けたか」まで一次情報として残せます。

コメント