【LocalAI】Docker環境でGPUが認識されないエラーの解決法

1. 問題の概要

LocalAIをDocker環境で実行する際、GPUが認識されず、CPUのみで動作してしまう問題が発生することがあります。これにより、推論速度が大幅に低下し、特に大規模言語モデル(LLM)や画像生成AIを実用的な速度で利用できなくなります。具体的には、以下のような状況が確認されます。

  • Dockerコンテナ内でnvidia-smiコマンドを実行してもGPU情報が表示されない
  • LocalAIのログにGPU関連の初期化メッセージが出力されない
  • 推論処理が異常に遅く、CPU使用率のみが高くなる
  • CUDA関連のエラーメッセージが表示される

この問題は、DockerのGPUサポート設定が適切に行われていない場合や、誤ったDockerイメージを使用している場合に発生します。

2. 結論

LocalAIでGPUを認識させるには、以下の3つの設定を正しく行う必要があります。

  1. nvidia-container-toolkitのインストールと設定
  2. GPU対応の正しいDockerイメージの選択(latest-aio-gpu-nvidia-cuda-12など)
  3. 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-12
  • localai/localai:latest-aio-gpu-nvidia-cuda-13
  • localai/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)が有効になっていない。

解決法:

  1. Docker Desktopを開く
  2. 設定(Settings)→ リソース(Resources)→ GPU を選択
  3. 「Enable GPU support」を有効化
  4. 使用するGPUを選択
  5. Docker Desktopを再起動

5. AIを快適に動かすためのおすすめ環境

ローカルLLMや画像生成AIでエラーを減らし、高速に処理するには、VRAM容量が最も重要です。

6. まとめ

LocalAIでGPUを認識させるには、適切なツールのインストール、正しいDockerイメージの選択、そして適切な設定の3つが重要です。nvidia-container-toolkitのインストールを忘れずに行い、GPU対応のDockerイメージを使用し、Docker Composeのdeployセクションまたはdocker run--gpusオプションでGPUリソースを明示的に指定してください。これらの設定を行うことで、LocalAIはGPUを認識し、高速な推論処理が可能になります。問題が発生した場合は、まずnvidia-smiコマンドでGPUの状態を確認し、段階的に設定を見直していくことが解決への近道です。

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

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

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