🤖

自家用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 がすでに使える状態であることが確認できます。

Open WebUI


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