🐳

Dockerを使ってOllamaとOpen WebUIでllama3を動かす

2024/04/27に公開

この記事で紹介すること

  • 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のセットアップ

参考:DockerHub上のOllamaリポジトリのページ

  1. リポジトリのセットアップ
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
    
  1. NVIDIAのGPUをDockerで利用するためのToolkitのインストール
sudo apt-get install -y nvidia-container-toolkit
  1. DockerでNVIDIAのドライバーを利用するためのコマンド
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
  1. Dockerコンテナの起動
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

--gpusのパラメーターを変えることでコンテナに認識させるGPUの数を設定することができます。
詳細なパラメーターの設定方法は以下を参照してください。

https://docs.docker.jp/engine/reference/commandline/run.html?highlight=it#nvidia-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を動かす方法でした!

参考

https://hub.docker.com/r/ollama/ollama
https://shion.blog/gemma-chat/
https://zenn.dev/seya/articles/03399b9e3d465e

Discussion