kotememo

【Windows】WSL2上dockerでollama+open-webuiを使ったローカルLLM実行

はじめに

前回、ローカルLLMをpythonで実行していましたが、GUIが欲しくなりました。

ollama+open-webuiで簡単にdocker実行できるようだったので、ブラウザ画面でチャットが出来るまでを試してみました。

概要

  1. WSL2のインストール
  2. dockerのインストール
  3. ollama実行
  4. open-webui実行

環境

  • Windows 11

1. WSL2のインストール

まず、WSLがWindowsにインストールされているか確認します。

wsl --version

バージョン情報ではなくオプションの説明が表示される場合はまだインストールされていないため、インストールします。

参考:WSL を使用して Windows に Linux をインストールする方法

wsl --install

Windowsを再起動するとubuntuのダウンロードが開始されます。

インストール後、WindowsのスタートメニューからUbuntuを起動して初期ユーザを作成します。

2. dockerのインストール

Docker Docsにあるインストール手順Install using the apt repository章を参考に、dockerをインストールします。

以下のコマンドでインストールしましたが、最新情報を確認してください。

# 1.Set up Docker's apt repository.
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# 2.Install the Docker packages.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

インストール完了後、hello-worldイメージを起動できることを確認します。

sudo docker run hello-world

次に、Docker Docsにある手順Manage Docker as a non-root user章を参考に、root以外のユーザでdockerを起動できるようにします。

# 1.Create the docker group.
# dockerグループが作成されているか確認します。
grep docker /etc/group
# 無ければ作成します。
sudo groupadd docker

# 2.Add your user to the docker group.
sudo usermod -aG docker $USER

# 3.Log out and log back in so that your group membership is re-evaluated.
newgrp docker

sudo無しで起動できるか確認します。

# 4.Verify that you can run docker commands without sudo.
docker run hello-world

最後に、ubuntuの更新とdockerの再起動をしておきます。

sudo apt-get update
sudo apt-get upgrade
service docker restart

3. ollama実行

ollamaを起動します。

GPUを使用する場合は--gpus=allオプションを指定するようです。

今回WindowsのWSL2で起動しているため、-vで指定するボリュームマウントは/mnt/を先頭に付与したWindows側のパスで起動します。

使い方に合わせて選んでください。

# CPU only
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

# Windowsの[D:\docker-volumes\ollama]にマウント
docker run -d --gpus=all -v /mnt/d/docker-volumes/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

ダウンロード可能なモデルはライブラリから検索します。

今回はgemma2をダウンロードします。

# モデルのダウンロード
docker exec ollama ollama pull gemma2:2b

# ダウンロード済みのモデル一覧
docker exec ollama ollama ls

# モデルを削除したい場合
docker exec ollama ollama rm gemma2:2b

4. open-webui実行

open-webuiを起動します。

open-webuiのGPU使用のオプションは--gpus allのようです。

こちらもマウントの場所はwindowsのパスにする場合は変更します。

また、ログインを必要としない場合は--env WEBUI_AUTH=Falseオプションを付与します。

外部システムへのログインではないのでダミー登録してもよいですが、毎回ログインするのも面倒なので個人で使用する分には認証不要にします。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

# Windowsの[D:\docker-volumes\open-webui]にマウント
docker run -d -p 3000:8080 --env WEBUI_AUTH=False --gpus all --add-host=host.docker.internal:host-gateway -v /mnt/d/docker-volumes/open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda

うまく起動できればhttp://localhost:3000/をブラウザで開くとOpen WebUIのチャット画面が表示されます。

ollamaも同時に起動していると、上部のプルダウンからモデルを選択できます。

open-webui画面