この記事では、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"
推論速度改善のポイント
- VRAMに収まるサイズのモデルを使用する(モデルの合計サイズ < 全GPU VRAM合計)
OLLAMA_NUM_PARALLELで同時処理数を調整する- 量子化レベルを適切に選択する(Q4_K_MがVRAMと品質のバランスが良い)
4. 補足・注意点
- Ollamaのマルチモデル対応はバージョンによって動作が異なります。v0.1.31以前はマルチGPU対応が限定的でした
GGML_CUDA_FORCE_CUBLASやGGML_CUDA_FORCE_MMQ環境変数で推論エンジンの挙動を変更できますが、効果はモデルとハードウェアの組み合わせによります- 特定のGPUにモデルを割り当てたい場合は、
device_ids: ['0', '1']のように指定します
5.
👉 【RunPod】1時間数十円から使える高性能クラウドGPU
参考元
- 本記事は以下のディスカッションを要約・再構成したものです。
- Source: High Inference Time and Limited GPU Utilization with Ollama Docker · Issue #7761 · ollama/ollama
- Source: Ollama not loading in gpu with docker on latest version · Issue #5114 · 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のローカル推論に必須)