この記事では、OllamaのDockerコンテナを長時間放置すると、GPU推論からCPU推論に切り替わってしまい、応答速度が極端に遅くなる問題について解説します。
1. どんな問題(エラー)が発生したか?
- 発生した環境やツール: Docker + Ollama、RTX 3090、NVIDIA Driver最新版
- エラーメッセージ: 明示的なエラーメッセージはなし(サイレントにCPUフォールバック)
- 症状: 12時間〜1日以上アイドル状態が続くと、次のリクエストでGPUが使用されずCPUのみで推論が行われる。コンテナの再起動で復旧する
2. 結論(解決策)
OLLAMA_KEEP_ALIVE環境変数を設定してモデルをメモリに保持するか、定期的にヘルスチェックリクエストを送ることで防止できます。
3. 具体的な手順
方法1: OLLAMA_KEEP_ALIVEの設定(推奨)
Docker Composeの環境変数に以下を追加します:
services:
ollama:
image: ollama/ollama:latest
environment:
- OLLAMA_KEEP_ALIVE=24h
- CUDA_VISIBLE_DEVICES=0
- OLLAMA_DEBUG=1
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
count: all
方法2: cronによる定期ヘルスチェック
# crontabに追加(30分ごとにリクエスト送信)
*/30 * * * * curl -s http://localhost:11434/api/generate -d '{"model":"llama3:8b","prompt":"hi","stream":false}' > /dev/null 2>&1
方法3: Docker再起動ポリシーの設定
docker update --restart=always ollama
4. 補足・注意点
- この問題はOllama v0.1.x系で頻繁に報告されていましたが、最新版でも環境によっては発生する可能性があります
OLLAMA_DEBUG=1を設定しておくと、GPU割り当ての状態がログで確認できます- 複数GPUを使用している場合、
CUDA_VISIBLE_DEVICESで明示的にデバイスを指定すると安定することがあります
5.
👉 【RunPod】1時間数十円から使える高性能クラウドGPU
参考元
- 本記事は以下のディスカッションを要約・再構成したものです。
- Source: GPU allocation lost after container idle period · Issue #3930 · ollama/ollama
- Source: Ollama stops accessing GPU after running for extended periods · Issue #8594 · ollama/ollama
- Source: Initially using GPU, but not using it after a period of time · Issue #9490 · ollama/ollama
🔧 おすすめの開発環境
本記事の手順を快適に進めるための推奨スペック:
- GPU: NVIDIA RTX 4070 Ti Super(コスパ最強)
- メモリ: DDR5 64GB(LLM推論に必須)
- SSD: NVMe SSD 2TB(モデル保存用)
🔧 快適な開発環境のために
本記事の手順をスムーズに進めるために、以下のスペックを推奨します。
- GPU: NVIDIA RTX 4070 Ti Super(AI開発のコスパ最強GPU)
- メモリ: DDR5 64GB(LLMのローカル推論に必須)
🔧 おすすめの開発環境
本記事の手順を快適に進めるための推奨スペック:
- GPU: NVIDIA RTX 4070 Ti Super(コスパ最強)
- メモリ: DDR5 64GB(LLM推論に必須)
- SSD: NVMe SSD 2TB(モデル保存用)
🔧 快適な開発環境のために
本記事の手順をスムーズに進めるために、以下のスペックを推奨します。
- GPU: NVIDIA RTX 4070 Ti Super(AI開発のコスパ最強GPU)
- メモリ: DDR5 64GB(LLMのローカル推論に必須)