自家用AIマシン構築記 #4|自家用AIマシンでローカルLLMを動かしてみよう!
前回までのあらすじ
予算の限られた中で「自家用AIマシン」を自作。
OS(Ubuntu)のセットアップとNVIDIAのドライバをインストールするところまで完了しました。
👉 まだの方は、こちらからどうぞ
今回はいよいよ、ローカル環境でLLMを動かすところまでやってみます❗
1. GPU対応Docker環境のセットアップ
ローカルLLMを動かすために Ollama を使い、さらにChatGPTライクなWebUIの Open WebUI を組み合わせます。
両方ともDockerコンテナが提供されているため、まずは Docker + NVIDIA Container Toolkit を導入します。
1-1. nvidia-container-toolkitのインストール
公式サイトの説明に従い、GPUコンテナのランタイムを設定します。
# NVIDIA GPGキーとリポジトリ追加:
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
sudo apt-get install -y nvidia-container-toolkit
# GPUランタイム設定:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
1-2. Dockerのインストール
公式ドキュメントに従って、最新版のDockerのインストールを行います。
# Dockerの公式GPGキーを追加:
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
# リポジトリを追加:
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
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
ついでに、マシン起動時にDockerサービスが自動で立ち上がるように設定しておきます。
sudo systemctl start docker
sudo systemctl enable docker
非rootユーザからもDockerコマンドが実行できるように以下を実行して、再ログインします。
sudo usermod -aG docker $USER
2. Ollamaの起動
それでは、早速、OllamaをGPUモードで動かしてみましょう。
GPU を使うために --gpus=all
オプションを付けてコンテナを起動します。
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --restart always --name ollama ollama/ollama
初回はDockerイメージがダウンロードされるため時間がかかります。
ネットワーク環境やストレージの空き容量に注意してください。
3. モデルの実行
Ollamaコンテナに入って、最近、OpenAI社がリリースして話題のオープンソース版LLM gpt-ossの20B を試してみたいと思います!
docker exec -it ollama ollama run gpt-oss:20b
モデルのダウンロードが終わるとプロンプトが現れるので、何か入力してみましょう。
出力例:
>>> 日本の首都は
・・・
日本の首都は**東京**です。
おぉ、思ってたよりレスポンス早い✨
/exit で終了します。
4. Open WebUIの起動
こちらも、dockerイメージをダウンロードしてコンテナを立ち上げます。
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
動作確認です。
docker ps
出力例:
29e284e77e8f ghcr.io/open-webui/open-webui:main "bash start.sh" 34 seconds ago Up 33 seconds (healthy) 0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp open-webui
89c3e7f04102 ollama/ollama "/bin/ollama serve" 6 minutes ago Up 6 minutes 0.0.0.0:11434->11434/tcp, [::]:11434->11434/tcp ollama
5. ブラウザからアクセス
OllamaとOpen WebUIの起動が確認できましたので、ブラウザから3000番ポートhttp://localhost:3000を開きます。
(ネットワーク越しに別のマシンからアクセスする場合は、localhostをサーバのIPアドレスへ置き換えてください)
初回起動では管理者アカウントの作成画面が表示されます。
「はじめる」をクリックし、必要事項を入力して管理者アカウントを作成しましょう。
アカウント作成後、ChatGPTライクなプロンプト入力画面が無事に表示されました❗
gpt-oss:20b がすでに使える状態であることが確認できます。
Dockerについて補足
Dockerの基本について、gpt-oss:4bに解説を書いてもらいました(手抜き❓)
## Docker の基本
Docker は「**コンテナ**」という軽量な仮想化技術です。
- **コンテナ**:1 つの OS カーネルを共有しつつ、アプリやその依存関係を完全に隔離して実行できます。
- **イメージ**:コンテナの設計図。`docker run` で起動するとイメージからコンテナが作られます。
> 例: `docker run hello-world`
> これは「Hello World」という最小のイメージをダウンロードし、コンテナを起動して「Hello from Docker!」と表示させます。
> 成功すれば Docker Engine が正しく動作していることが確認できます。
Docker を使う主なメリットは「**環境を統一**」できることです。
- 開発・本番で同じイメージを使えるので、動作確認やデプロイが一貫します。
- VM よりも起動が速く、リソースも節約できます。
この記事では、Ollama と Open WebUI を Docker コンテナとして動かすことで、環境構築のハードルを下げています。
Discussion