Dockerを使ってOllamaとOpen WebUIでllama3を動かす
この記事で紹介すること
- dockerを用いてOllamaとOpen WebUIをセットアップする
- OllamaとOpen WebUIでllama3を動かす
環境
OS: Ubuntu 22.04.4 LTS
docker version : version 25.0.5, build 5dc9bcc
GPU: A100 80G × 6, A100 40G × 2
Ollamaのセットアップ
- リポジトリのセットアップ
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
- NVIDIAのGPUをDockerで利用するためのToolkitのインストール
sudo apt-get install -y nvidia-container-toolkit
- DockerでNVIDIAのドライバーを利用するためのコマンド
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
- Dockerコンテナの起動
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
--gpusのパラメーターを変えることでコンテナに認識させるGPUの数を設定することができます。
詳細なパラメーターの設定方法は以下を参照してください。
Docker container内のShellでllama3 70bを動かす
# 8b model
docker exec -it ollama ollama run llama3
# 70b model
docker exec -it ollama ollama run llama3:70b
初回はモデルのダウンロードが入るため、時間がかかるかもしれません。
ollamaで実行可能なモデルはこちら
ダウンロードが終わるとモデルに対してプロンプトを送れるようになります!
Open WebUIのセットアップ
docker run -d -p 5955: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
Open WebUIに関する記事のほとんどがDockerホストマシンの3000ポートにコンテナの8080ポートをマッピングしていますが、今回は諸事情により5955ポートにマッピングしています。
皆さんの環境に合わせて適宜変更をお願いします。
Open WebUI経由でOllamaでインポートしたモデルを動かす。
ここまで来れば、すでに環境を構築したPC上のブラウザから、先ほどOpen WebUIのコンテナの8080ポートをマッピングしたホストPCのポートにアクセスすることでOpen WebUIにアクセスできるはずです。
今回は、5955ポートにマッピングしたため、ブラウザで localhost:5955
にアクセスします。
無事にアクセスできました!
初回のアクセス時はアカウントがないため、作成しておきます。
作成したアカウントでログインするとChatGPTでお馴染みのUIが登場します。
うまくOllamaが認識していれば、画面上部のモデル選択からOllamaで取り込んだモデルが選択できるはずです!(画像ではすでにllama70b以外のモデルも写っています。)
ここまでがDockerを利用したOllamaとOpen WebUIでLLMを動かす方法でした!
参考
Discussion