1. 問題の概要
LocalAIをDocker環境で実行する際、GPUが認識されず、CPUのみで動作してしまう問題が発生することがあります。これにより、推論速度が大幅に低下し、特に大規模言語モデル(LLM)や画像生成AIを実用的な速度で利用できなくなります。具体的には、以下のような状況が確認されます。
- Dockerコンテナ内で
nvidia-smiコマンドを実行してもGPU情報が表示されない - LocalAIのログにGPU関連の初期化メッセージが出力されない
- 推論処理が異常に遅く、CPU使用率のみが高くなる
- CUDA関連のエラーメッセージが表示される
この問題は、DockerのGPUサポート設定が適切に行われていない場合や、誤ったDockerイメージを使用している場合に発生します。
2. 結論
LocalAIでGPUを認識させるには、以下の3つの設定を正しく行う必要があります。
- nvidia-container-toolkitのインストールと設定
- GPU対応の正しいDockerイメージの選択(
latest-aio-gpu-nvidia-cuda-12など) - Docker Composeまたは
docker runコマンドでのGPUリソース割り当て設定
これらの設定を適切に行うことで、NVIDIA GPUをLocalAIコンテナ内で利用できるようになります。
3. 具体的な手順
ステップ1: nvidia-container-toolkitのインストール
まず、ホストマシンにNVIDIA Container Toolkitをインストールします。これにより、DockerコンテナがGPUリソースにアクセスできるようになります。
# パッケージリポジトリとGPGキーの設定
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list |
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' |
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# パッケージリストの更新とインストール
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# Dockerランタイムの設定
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
ステップ2: 正しいGPU対応Dockerイメージの選択
LocalAIには複数のDockerイメージが用意されています。GPUを使用する場合は、以下のいずれかのGPU対応イメージを選択してください。
localai/localai:latest-aio-gpu-nvidia-cuda-12localai/localai:latest-aio-gpu-nvidia-cuda-13localai/localai:v3.12.1-aio-gpu-nvidia-cuda-12(特定バージョン)localai/localai:v3.12.1-aio-gpu-nvidia-cuda-13(特定バージョン)
CPU用のイメージ(latest-aio-cpu)を使用している場合、GPUは認識されません。
ステップ3: Docker Composeでの設定方法
docker-compose.ymlファイルを以下のように設定します。
version: "3.9"
services:
api:
# GPU対応イメージを選択(CUDA 12または13)
image: localai/localai:latest-aio-gpu-nvidia-cuda-12
# deployセクションでGPUリソースを指定
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
# 環境変数とポート設定
environment:
- DEBUG=true
ports:
- "8080:8080"
volumes:
- ./models:/models
# ヘルスチェック(オプション)
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"]
interval: 1m
timeout: 20m
retries: 5
ステップ4: docker runコマンドでの実行方法
Docker Composeを使用しない場合は、以下のコマンドで直接実行できます。
docker run -p 8080:8080
--name local-ai
--gpus=all
-e DEBUG=true
-v $PWD/models:/models
localai/localai:latest-aio-gpu-nvidia-cuda-12
ステップ5: 動作確認
コンテナ起動後、以下のコマンドでGPUが認識されていることを確認します。
# コンテナ内でnvidia-smiを実行
docker exec local-ai nvidia-smi
# またはコンテナ内に入って確認
docker exec -it local-ai bash
nvidia-smi
4. よくある関連エラーと対処法
エラー1: “docker: Error response from daemon: could not select device driver”
原因: nvidia-container-toolkitが正しくインストールされていない、またはDockerサービスが再起動されていない。
解決法:
# nvidia-container-toolkitの再インストールと設定
sudo apt-get install --reinstall nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
エラー2: ポート8080が既に使用されている
原因: 他のサービスがポート8080を使用している。
解決法: docker-compose.ymlまたはdocker runコマンドでポートを変更。
# ポートを8081に変更する例
docker run -p 8081:8080 --gpus=all ...
エラー3: モデルの自動ダウンロードに失敗する
原因: ネットワーク接続の問題やモデルリポジトリの変更。
解決法: 手動でモデルをダウンロードしてmodelsディレクトリに配置。
# モデルディレクトリを作成
mkdir -p models
# 例: GGUF形式のモデルをダウンロード
wget -O models/llama2.gguf https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q4_K_M.gguf
エラー4: Windows Docker DesktopでのGPU認識問題
原因: WindowsのDocker DesktopでGPU-PV(GPU Paravirtualization)が有効になっていない。
解決法:
- Docker Desktopを開く
- 設定(Settings)→ リソース(Resources)→ GPU を選択
- 「Enable GPU support」を有効化
- 使用するGPUを選択
- Docker Desktopを再起動
5. AIを快適に動かすためのおすすめ環境
ローカルLLMや画像生成AIでエラーを減らし、高速に処理するには、VRAM容量が最も重要です。
- おすすめグラフィックボード(RTX 4070 Ti SUPER / RTX 4080)
👉 Amazonで最新のAI向けグラボ価格をチェックする - PCを買い替えずにクラウドGPUを使うなら
👉 【RunPod】1時間数十円から使える高性能クラウドGPU
6. まとめ
LocalAIでGPUを認識させるには、適切なツールのインストール、正しいDockerイメージの選択、そして適切な設定の3つが重要です。nvidia-container-toolkitのインストールを忘れずに行い、GPU対応のDockerイメージを使用し、Docker Composeのdeployセクションまたはdocker runの--gpusオプションでGPUリソースを明示的に指定してください。これらの設定を行うことで、LocalAIはGPUを認識し、高速な推論処理が可能になります。問題が発生した場合は、まずnvidia-smiコマンドでGPUの状態を確認し、段階的に設定を見直していくことが解決への近道です。