【Ollama Docker Compose】マルチGPU環境でのセットアップと推論速度改善ガイド

この記事では、Ollama Docker環境で複数のGPUを使用しているにもかかわらず、推論速度が遅い・GPUが1台しか認識されない問題について、GitHub Issueでの議論を元に解説します。

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

  • 発生した環境やツール: Docker + Ollama v0.4.2、NVIDIA RTX 6000 Ada x3(各47.5GB VRAM)、NVIDIA Driver 12.4
  • エラーメッセージ: ログに found 1 CUDA devices と表示され、3枚あるGPUのうち1枚しか認識されない
  • 症状: 50秒以上の推論時間がかかり、GPU使用率も低い

2. 結論(解決策)

Docker Composeの設定で count: all を指定し、NVIDIA_VISIBLE_DEVICES=all 環境変数を設定する必要があります。また、Ollamaは自動でモデルを複数GPUに分割ロードする機能がありますが、モデルサイズとVRAMの関係に注意が必要です。

3. 具体的な手順

正しいDocker Compose設定

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - OLLAMA_DEBUG=1
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

GPU認識の確認

# コンテナ内でGPU確認
docker exec ollama nvidia-smi

# Ollamaのログでデバイス検出を確認
docker logs ollama 2>&1 | grep "Inference compute"

推論速度改善のポイント

  1. VRAMに収まるサイズのモデルを使用する(モデルの合計サイズ < 全GPU VRAM合計)
  2. OLLAMA_NUM_PARALLELで同時処理数を調整する
  3. 量子化レベルを適切に選択する(Q4_K_MがVRAMと品質のバランスが良い)

4. 補足・注意点

  • Ollamaのマルチモデル対応はバージョンによって動作が異なります。v0.1.31以前はマルチGPU対応が限定的でした
  • GGML_CUDA_FORCE_CUBLASGGML_CUDA_FORCE_MMQ 環境変数で推論エンジンの挙動を変更できますが、効果はモデルとハードウェアの組み合わせによります
  • 特定のGPUにモデルを割り当てたい場合は、device_ids: ['0', '1'] のように指定します

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

参考元

🔧 おすすめの開発環境

本記事の手順を快適に進めるための推奨スペック:

🔧 快適な開発環境のために

本記事の手順をスムーズに進めるために、以下のスペックを推奨します。

この記事は役に立ちましたか?