冒頭:GPUメモリ解放されない・エラーが発生する問題
Ollamaを使用中に、AIモデルを対話的に利用していると、次第にGPUメモリが不足し、最終的に「CUDA error: out of memory」というエラーが発生この种现象。或者、モデルを終了してもGPUメモリが解放されず、別のモデルを読み込めなくなるという問題が発生しています。
具体的な症状としては、Ollama服务を再起動しない限り、GPUメモリが減り続け、新しいモデルを読み込もうとすると「Out of memory」エラーが表示されます。特に70b параметрなどの大型モデルを使用する際に発生しやすく、24GBのVRAMを持つ環境でも問題が起きることが報告されています。
結論:モデル終了後のメモリ解放と inúmer事項
この問題の的主要原因ннаяは、Ollamaがモデル使用後にGPUメモリを適切に解放していないことです。解決策として、 环境変数を活用したメモリ管理と、明示的なモデルアンのロード手順、そして服务再起動によるメモリ解放の3つのアプローチがあります。
具体的な手順:ステップバイステップでの解決法
ステップ1:Docker环境变量の設定確認
Dockerコンテナ运行Ollamaの場合、以下の环境变量を追加することでメモリ管理を改善できます:
docker run -d
--gpus=all
-v /usr/share/ollama/.ollama/:/root/.ollama/
-p 11434:11434
-e OLLAMA_KEEP_ALIVE=-1
-e OLLAMA_MAX_LOADED_MODELS=1
-e OLLAMA_NUM_PARALLEL=1
--name ollama ollama/ollama:latest
ステップ2:环境変数の言う明
- OLLAMA_KEEP_ALIVE=-1:モデルを长时间内存中保留(-1は永続、0は即座に解放)
- OLLAMA_MAX_LOADED_MODELS=1:同时加载モデル数の上限を設定
- OLLAMA_NUM_PARALLEL=1:并发请求数を制限
- OLLAMA_MAX_VRAM:各モデルに割り当てるVRAMの上限をMB単位で指定
ステップ3: модель明示的释放步骤
モデル使用後、以下のコマンドを実行して明示的にメモリを解放します:
# 実行中のモデルを确认
ollama list
# 特定のモデルをメモリからアンロード
ollama stop <モデル名>
# 例:llama3の場合
ollama stop llama3:70b-instruct-q2_K
步骤4:Ollama服务重启(完全解决方案)
メモリが仍未解放される場合、サービスを再启动することで完全にメモリを解放できます:
# Linux (systemd)
sudo systemctl restart ollama
# macOS
brew services restart ollama
# Docker容器の場合
docker restart ollama
ステップ5:VRAM消费监控
メモリ使用状況を监控するには以下のコマンドを使用します:
# NVIDIA GPUの場合
nvidia-smi
# AMD GPUの場合
amd-smi
補足・注意点
バージョン依存の問題
バージョン0.6.4ではGemma3のメモリ問題が修正されていますが、他のモデルでは依然として問題が発生的报告があります。最新バージョンへの更新を確認してください。
モデルサイズとVRAMの整合
70bパラメータの量子化モデル(例:Q2_K)で24GBのVRAMが必要です。モデルサイズとGPUメモリ容量の見直しを検討してください。量子化レベルを下げる(例:Q4_KからQ2_Kへ)ことでVRAM使用量を削減できます。
他のVRAM消費アプリの確認
他のアプリケーションがGPUメモリを使用していないか確認してください。CUDAエラーは他のプロセスが必要なメモリを確保できていない場合にも発生します。
プロキシ設定の影響
プロキシ環境下では、OLLAMA_HOSTやHTTP_PROXY/HTTPS_PROXYの设定错误がメモリ管理に影響を与える可能性があります。
参考元
- Ollama not freeing and eventually running out of memory [all models] – Issue #10114
- CUDA error: out of memory – Issue #3765
- Out of memory on AMD multi GPU instance – Issue #11073
- The model was not released from GPU memory – Reddit