OllamaとOpen WebUIをDockerで環境構築

スポンサーリンク

Ollama と Open WebUI で Docker を利用して、ChatGPT のようなシステムをローカル上で環境構築したメモになります。

Ollamaとは

Ollama (オラマ)は、大規模言語モデル (LLM) をローカル環境で実行できる無料のオープンソースツールです。クラウドに依存せず、自分のコンピュータのローカル環境で LLM を利用できます。11434番ポートを開いて、サーバーが動作します。Ollama だけでもコマンドライン上の操作で LLM は利用できます。

Open WebUIとは

Open WebUI は、ローカル環境で動作する AI ツールで、さまざまな大規模言語モデル (LLM) を操作できるウェブベースのインターフェースになります。ChatGPT によく似た画面になります。

ライセンス

名前ライセンスリンク
OllamaMIT Licensehttps://github.com/ollama/ollama
Open WebUIBSD-3-Clause licensehttps://github.com/open-webui/open-webui
LLMの名前ライセンス
Llama3Meta Llama 3 Community License
Llama-3-ELYZA-JP-8BMeta Llama 3 Community License

環境情報

項目情報
OSWindows 11 Pro
CPUIntel Core Ultra 7 265
RAM64GB
GPUNVIDIA GeForce RTX 4060 Ti(8GB)
WSL環境Ubuntu 24.04

Docker のインストール

Docker Desktop はライセンスがややこしいので、WSL(Windows Subsystem for Linux) を利用して、Docker をインストールします。
Docker のインストールは Ubuntu での Docker Engine のインストールに従います。

Ubuntu | Docker Docs

WSL で利用しやすいように WSL のホームディレクトリに Windows 側での Docker 用のフォルダにアクセスしやすいようにシンボリックリンクを置くと楽かもしれません。

上のコマンドはWindows側ではDドライブにあるDockerのフォルダでアクセスして、WSL 側ではホームディレクトリからDockerのディレクトリにアクセスできるようにしています。

Nvidia Container Toolkit のインストール

GPU の設定を行わない場合はここはスキップできます。Docker で GPU を利用するには Nvidia Container Toolkit が必要になります。Nvidia のサイトでのインストール方法に従います。

Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit

インストールの次に行うこととして Running a Sample Workload のページがあります。次のコマンドでDocker 内で GPU が認識されているかを確認できます。

docker-compose.ymlの作成と実行

ローカルLLMの使用 - OllamaとOpen WebUIの連携について解説 - Qiitaをもとに docker-compose.yml を作成します。一部書き換えています。

書き換えている要点は
1. open-webui を23000番ポートに変更
2. Llama-3-ELYZA-JP-8B をインストールするためにホストのディレクトリをコンテナがマウント
になります。

docker-compose.yml

docker-compose.yml が作成出来たら、

で起動します。

Docker Engine のインストールのTipsにありますが、

で $USER を書き換えて指定することで Docker の実行から sudo を不必要にできます。

Ollama で Llama3 モデルをインストールと実行

Ollama は Docker 経由で実行することになります。

で Ollama が AI と対話するプロンプトができます。初回実行の場合は Llama3 モデルのダウンロードが始まります(約5GB)。会話はヘルプを見てもいいですが、

で終了できます。

Open WebUIにアクセス

初回アクセスはユーザー登録が必要です。ローカル環境での実行なので、適当なものでも大丈夫です。

ログインができたら、Ollama でインストールした Llama3 モデルを利用して会話ができます。ここまででも十分に楽しめる環境になります。

日本語特化の言語モデルを利用

ここでは、ollama create を使ったインストール方法の紹介を長く書きましたが、その途中でもっと簡単なインストール方法に気づきました。

でインストールできるので、Docker の Ollama だと

でインストールできます。この方法だと docker-compose.yml でのマウントの記述は必要なくなるかもしれません。

Llama3 だと日本語に対して英語で返したりします。そのため、日本語特化の言語モデルを利用したくなります。Llama-3-ELYZA-JP-8B という言語モデルがありますが、Ollama を利用して、そのままインストールできません。そのため、一度モデルデータをダウンロードし、ollama create でモデルを作成する必要があります。Docker を利用しているとボリュームのマウントでコンテナ側のディレクトリ構造を意識する必要があります。

Llama-3-ELYZA-JP-8B は elyza/Llama-3-ELYZA-JP-8B-GGUF · Hugging Face になります。モデルのダウンロードは

でダウンロードできます。ダウンロードしたら、「よーしパパ、Ollama で Llama-3-ELYZA-JP-8B 動かしちゃうぞー」- Qiita を参考に Modelfile を作成し、最初の From の行はコンテナ側から見たパスで、Llama-3-ELYZA-JP-8B-q4_k_m.gguf を指定します。ここでの例は階層をだいぶ深く作っていますが、もっと単純な階層でもいいと思います。

Modelfile

モデルの作成のコマンドもコンテナ側から見たパスで Modelfile を指定して実行します。

インストールが完了したら、 Open WebUI にアクセスして、利用できるモデルが増えていることが確認できます。

参考

ローカルLLMの使用 - OllamaとOpen WebUIの連携について解説 - Qiita

「よーしパパ、Ollama で Llama-3-ELYZA-JP-8B 動かしちゃうぞー」- Qiita