この記事では、OllamaのDockerコンテナでGPU初期化時に cuInit err: 999 エラーが発生し、GPUが正しく利用されない問題について解説します。
1. どんな問題(エラー)が発生したか?
- 発生した環境やツール: Docker + Ollama、RTX 3090、NVIDIA Driver 535.216.01、CUDA 12.2
- エラーメッセージ:
cuInit err: 999、cudart init failure: 999 - 症状:
nvidia-smiはコンテナ内でGPUを検出するが、Ollamaが実際のGPU計算に使用しない。GPU使用率が低いまま
2. 結論(解決策)
CUDAの初期化エラー999は「不明なエラー」を意味し、主にNVIDIAドライバーとCUDAライブラリのバージョン不一致、またはDocker内でのGPU権限設定の問題で発生します。ドライバーの更新とDocker設定の修正で解決します。
3. 具体的な手順
Step 1: ホスト側のNVIDIAドライバーを最新版に更新
# Ubuntu
sudo apt-get update
sudo apt-get install --only-upgrade nvidia-driver-545
sudo reboot
Step 2: NVIDIA Container Toolkitの再設定
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Step 3: Dockerコンテナの起動オプションを確認
# --privileged フラグを追加して検証
docker run --rm --gpus all --privileged nvidia/cuda:12.0-base nvidia-smi
Step 4: OLLAMAデバッグログで確認
docker run -d --gpus=all -e OLLAMA_DEBUG=1 -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# ログ確認
docker logs ollama 2>&1 | grep -E "CUDA|cuda|GPU|gpu"
4. 補足・注意点
- エラーコード999はCUDA APIの「Unknown error」で、原因が多岐にわたります
- Docker Desktop for WindowsのWSL2バックエンドを使用している場合、Windows側のNVIDIAドライバーが最新であることを確認してください
- Proxmox等の仮想環境からGPUをパススルーしている場合、IOMMU設定の確認が必要です
5.
👉 【RunPod】1時間数十円から使える高性能クラウドGPU
参考元
- 本記事は以下のディスカッションを要約・再構成したものです。
- Source: GPU Initialization Fails with Low Utilization on NVIDIA RTX 3090 in Docker · Issue #7593 · ollama/ollama
💡 この問題を根本的に解決するには
ローカル環境のGPUトラブルが頻発する場合、ハードウェアの見直しも検討してみてください:
- VRAM不足なら → RTX 4070 Ti Super(16GB VRAM)
- メモリ不足なら → DDR5 64GBメモリ
- AI開発を体系的に学ぶなら → AI・機械学習の実践書籍
💡 この問題を根本的に解決するには
ローカル環境のGPUトラブルが頻発する場合、ハードウェアの見直しも検討してみてください:
- VRAM不足なら → RTX 4070 Ti Super(16GB VRAM)
- メモリ不足なら → DDR5 64GBメモリ
- AI開発を体系的に学ぶなら → AI・機械学習の実践書籍