【Ollama】CUDA out of memoryでGPUが使われず推論が極端に遅い問題の解決法

この記事では、Ollamaを使ってローカルでLLMを実行する際に発生する「CUDA error: out of memory」エラーと、GPU推論が極端に遅くなる問題について、海外コミュニティでの解決策を要約して解説します。

1. どんな問題(エラー)が発生したか?

  • 発生した環境やツール: Ollama、NVIDIA RTX 3060(12GB VRAM)、Linux / Windows
  • エラーメッセージ: CUDA error: out of memoryfalling back to CPU
  • 症状: llama3:70bモデルを実行するとテキスト生成が1単語に数秒〜数十秒かかる。ログを確認するとGPUメモリ不足でCPUフォールバックが発生している。

2. 結論(解決策)

実行しようとしているモデルのパラメータサイズがGPUのVRAM容量に収まるかを事前に確認し、VRAM内に収まるサイズのモデル(またはその量子化版)を使用することで、GPU上で高速に推論できるようになります。

3. 具体的な手順

  1. 現在のGPU VRAMを確認する
    nvidia-smi

    Total Memoryの欄でVRAM容量を確認します。例:RTX 3060 → 12GB

  2. モデルサイズの目安を理解する
    モデル 必要VRAM目安(Q4量子化)
    7B〜8Bパラメータ 約5〜6GB
    13Bパラメータ 約8〜10GB
    70Bパラメータ 約35〜40GB
  3. VRAMに収まるモデルに切り替える
    12GB VRAMの場合、8Bクラスのモデルが最適です。

    ollama run llama3:8b
  4. 大型モデルを試す場合は量子化版を使う
    ollama run llama3:70b-q2_K

    ただし70B Q2でも約25GB程度のメモリが必要なため、12GB VRAMでは依然としてCPUフォールバックが発生する可能性があります。

  5. GPU使用状況をリアルタイムで監視する
    watch -n 1 nvidia-smi

    モデルのロード後、GPU-Utilが0%のままであればCPUフォールバックが発生しています。

4. 補足・注意点

Ollamaは起動時にモデルの全レイヤーをGPUに載せようとし、VRAMが不足すると自動的にCPU(システムRAM)にフォールバックします。一部のレイヤーだけGPUに載せる「部分オフロード」はOLLAMA_NUM_GPU環境変数で制御できます。

OLLAMA_NUM_GPU=20 ollama run llama3:70b

この場合、最初の20レイヤーがGPUに載り、残りはCPUで処理されます。GPUとCPUの併用により、フルCPUよりは高速になりますが、フルGPUほどの速度は出ません。


5.
👉 【RunPod】1時間数十円から使える高性能クラウドGPU

参考元

本記事は以下のディスカッションを要約・再構成したものです。

Source: Ollama running extremely slow / “CUDA out of memory” error

💡 この問題を根本的に解決するには

ローカル環境のGPUトラブルが頻発する場合、ハードウェアの見直しも検討してみてください:

💡 この問題を根本的に解決するには

ローカル環境でGPUトラブルが頻発する場合、クラウドGPUサービスの利用も検討してみてください。環境構築の手間なく、すぐにAI開発を始められます。

  • RunPod — RTX 4090が$0.44/h〜、ワンクリックでJupyter環境が起動
  • Vast.ai — コミュニティGPUマーケットプレイス、最安値でGPUレンタル
この記事は役に立ちましたか?