はじめに
前回、ローカルLLMをpythonで実行していましたが、GUIが欲しくなりました。
ollama+open-webuiで簡単にdocker実行できるようだったので、ブラウザ画面でチャットが出来るまでを試してみました。
概要
- WSL2のインストール
- dockerのインストール
- ollama実行
- 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も同時に起動していると、上部のプルダウンからモデルを選択できます。