ローカルLLM環境の構築 ~ WSL2×Docker Desktop×NVIDIA Container Toolkit で ollama, open-webui, gemma3 を導入する方法

ローカルLLM

近年、LLM(大規模言語モデル)の需要が急速に高まり、クラウド上だけでなくローカル環境での運用にも注目が集まっています。本記事では、Windows環境でWSL2を活用し、docker Desktop (docker-compose)と NVIDIA Container Toolkit を利用して、ollama、open-webui、gemma3 をローカルに構築する手順を解説します。
ローカル環境での構築は、データのプライバシー確保や低遅延な推論処理が可能になるなどのメリットがあります。

環境の準備

必要なハードウェア・ソフトウェア

  • OS: Windows 10/11
  • WSL2: Ubuntu 22.04 以降(例:Ubuntu 24.04)
  • Docker Desktop: 最新版(WSL2統合有効)
  • NVIDIA GPU: GPU搭載PCの場合は、GPUを利用するために NVIDIA Container Toolkit をインストール
  • その他: インターネット接続、十分なRAM(LLMのモデルサイズに応じた容量)

事前準備

  1. WSL2のインストール
    PowerShell(管理者権限)で以下のコマンドを実行してWSL2とUbuntuディストリビューションをインストールします。

    wsl --install -d Ubuntu-24.04
  2. Docker Desktopのインストール
    Windowsに公式サイトから Docker Desktop をダウンロード・インストールし、WSL2統合を有効にしてください。
    WSL2環境でdocker-compose psを実行した際に以下のエラーが出る場合は、Docker Desktopを再起動してみてください。なぜか治ります。
    The command 'docker-compose' could not be found in this WSL 2 distro. We recommend to activate the WSL integration in Docker Desktop settings. For details about using Docker Desktop with WSL 2, visit: https://docs.docker.com/go/wsl2/
    参考:Docker DesktopでWSLの統合を有効にしているのに「`The command 'docker-compose’~」への対応法

  3. NVIDIA Container Toolkit のインストール(GPU利用時)
    WSL2上のUbuntuに以下の手順でインストールを行います。

    # 必要なパッケージのインストール
    sudo apt-get update && sudo apt-get install -y curl gnupg ca-certificates
    
    # NVIDIAの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がNVIDIAランタイムを使用できるように設定
    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart docker
    

各ツールのインストールと設定(確認用)

ここでは、各種ツールの動作確認を行います。不要な方は、docker-composeによる起動まで飛ばしてください。

ollama の導入

ollama はローカルでLLMの推論を行うためのツールです。
以下は、GPUなしのollamaコンテナを起動する例です。

docker run -d \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama:0.6.2

以下は、GPU対応のollamaコンテナを起動する例です。

docker run -d --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama:0.6.2

ポイント:

  • -v オプションでボリュームをマウントし、モデルデータなどの永続化を実現
  • --gpus=all でGPUを利用する設定
  • 初回のモデルダウンロードや初期ロードに時間がかかる場合もあるので、時間に余裕を持って実施してください。
  • ここでは、ollamaのバージョン:0.6.2を使用しています。

gemma3 の利用

gemma3 は、ollama に対応したLLMモデルのひとつです。
ollamaコンテナ内で以下のコマンドを実行することで、gemma3 の推論を開始できます。
gemma3には、1B / 4B / 12B / 27B のパラメータ数のモデルが提供されています。
動作確認としては1Bで十分なのでgemma3:1bを使用します。PCのリソースが潤沢な方は、gemma3:4b, gemma3:12b, gemma3:27bを試してください。

docker exec -it ollama ollama run gemma3:1b

ポイント:

  • モデルのダウンロードには数GBのデータが必要となる場合があるため、安定したネットワーク環境下で実施してください。
  • 初回起動時は「初回ロードが遅い」という報告もありますので、キャッシュや常駐設定(例:OLLAMA_KEEP_ALIVE の調整)を検討するのも良いでしょう。
  • NVIDIA GeForce RTX 3060(GPUメモリ12GB), メモリ32GBの環境では、gemma3:12bが限界でした。12bを利用し続けているとオーバーヒートでブルースクリーンとなってしまったので、このスペックでは4bが無難そうです。

docker-compose による起動管理

複数のコンテナ(ollama, open-webui など)を同時に起動・管理するために docker-compose を利用する方法を紹介します。
以下は、サンプルの docker-compose.yml ファイルの例です。

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ./ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    volumes:
      - ./open-webui_data:/app/backend/data
    extra_hosts:
      - "host.docker.internal:host-gateway"
    depends_on:
      - ollama

ポイント:

使い方

ブラウザにlocalhost:3000と入力し、アカウント登録をするとチャット画面が表示されます。
ローカルLLM嘘つかれてますね。。。
ローカルLLM GPU使用

GPUも使われているようです。

参考

まとめ

本記事では、WSL2 環境下で docker Desktop (docker-compose)と NVIDIA Container Toolkit を利用し、ollama、open-webui、gemma3 をローカル環境に構築する方法を解説しました。
各ツールのインストールから、docker-compose を使った複数コンテナの管理まで、具体的なコマンド例や設定例を示しています。
これにより、ローカルでのLLM運用が容易になり、迅速な開発や安全なデータ管理が可能となります。

ぜひ、ご自身の環境に合わせてカスタマイズし、効率的なLLM環境を構築してください。

2025-04-04サーバ&テクノロジ

Posted by 納戸 工房