所要時間: 約30分 | 難易度: ★★☆☆☆
この記事で作るもの
- WebブラウザからChatGPT感覚で操作でき、かつデータが外部に一切漏れないローカルLLM環境を構築します。
- 前提知識:ターミナル(コマンドプロンプト)でのコピペ操作、Dockerの基本的な概念への抵抗がないこと。
- 必要なもの:NVIDIA製GPU搭載PC(推奨)またはApple Silicon搭載Mac、インターネット環境。
先に確認するスペック・料金
ローカルLLMを「仕事で使える」レベルで動かすには、推論速度が重要です。 結論から言うと、VRAM(ビデオメモリ)が12GB以上のNVIDIA GPU、もしくはメモリ24GB以上のMacを用意してください。 RTX 3060(12GB版)なら5万円台で手に入り、Llama 3 8Bクラスをサクサク動かせます。
一方で、メモリ8GBのMacBook Airなどでも動作自体は可能ですが、1秒間に3〜5文字程度しか生成されず、実務ではストレスが溜まります。 もしハードウェアをこれから揃えるなら、私は「RTX 4060 Ti 16GB版」を強く勧めます。 約7万円という価格で、現行の主要な軽量モデルをほぼVRAM内に収めて高速に動かせるからです。 クラウドAPIを使わないため、一度機材を揃えてしまえば電気代以外のランニングコストは0円になります。
なぜこの方法を選ぶのか
ローカルLLMを動かす手段は、LM StudioやGPT4Allなど他にもあります。 しかし、実務での拡張性と運用効率を考えるなら「Ollama + Open WebUI」の組み合わせがベストです。 Ollamaはモデル管理が圧倒的に楽で、バックエンドとしてAPIを公開できるため、自作スクリプトとの連携が容易です。
Open WebUIは、見た目がChatGPTに酷似しているだけでなく、RAG(ドキュメント読み込み)機能やプロンプトの共有機能が標準装備されています。 他のツールは「動かして終わり」になりがちですが、この構成ならチーム内で共有したり、自分専用のナレッジベースを構築したりといった「実戦投入」が可能です。
Step 1: 環境を整える
まずはLLMのエンジンとなる「Ollama」をインストールします。
# macOS / Linuxの場合
curl -fsSL https://ollama.com/install.sh | sh
Windowsの場合は、公式サイト(ollama.com)からインストーラーをダウンロードして実行してください。 インストール後、ターミナルで以下のコマンドを叩き、モデルをダウンロードします。
# Llama 3 8Bモデルをダウンロードして起動
ollama run llama3
このコマンドは、モデルファイルのダウンロード(約5GB)と推論エンジンの起動を同時に行います。 無事に「»>」という入力待ち画面になれば、エンジン側の準備は完了です。
落とし穴:
Windowsユーザーで、WSL2上でDockerを動かしている場合、GPUのパススルー設定が漏れているとCPU推論になり、極端に遅くなります。
nvidia-smi コマンドでGPUが認識されているか必ず確認してください。
Step 2: 基本の設定
次に、GUI(画面)となる「Open WebUI」をDockerで立ち上げます。 なぜDockerを使うかというと、Pythonの依存関係で環境を汚さず、アップデートがコマンド一つで完結するからです。
# GPUを利用する場合(NVIDIA GPU搭載機)
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:cuda
# MacやCPUのみで動かす場合
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
ここで重要なのが --add-host=host.docker.internal:host-gateway フラグです。
これにより、Dockerコンテナ内のOpen WebUIが、ホストPC上で動いているOllamaのAPIを認識できるようになります。
これを忘れると「Ollamaに接続できません」というエラーで1時間は悩むことになります。
設定ファイルの永続化のために -v open-webui:/app/backend/data を指定し、過去のチャット履歴が消えないようにしています。
Step 3: 動かしてみる
ブラウザを開き、http://localhost:3000 にアクセスします。
最初にアカウント作成画面が出ますが、これはローカル内に保存される管理用アカウントなので、適当なメールアドレスとパスワードで登録してログインしてください。
画面上部のモデル選択メニューから「llama3:latest」を選びます。 試しに「ローカルLLMを導入するメリットを3つ教えて」と入力してみましょう。
期待される出力:
1. プライバシーとセキュリティ:データが外部サーバーに送信されない。
2. コスト削減:API利用料がかからず、無制限に試行錯誤できる。
3. オフライン動作:インターネット環境がなくても利用可能。
もし回答が返ってこない場合は、OllamaのAPI(デフォルト11434ポート)がファイアウォールでブロックされていないか、Dockerの設定でホストIPが正しく指定されているかを確認してください。
Step 4: 実用レベルにする
単にチャットするだけならChatGPTで十分です。 ローカルLLMの真価は、特定のドキュメントを読み込ませる「RAG」と、プログラムからの自動呼び出しにあります。
まず、Open WebUIの画面左下にある「Documents」から、社内マニュアルや過去のプロジェクト資料(PDFやテキスト)をアップロードしてください。
その後、チャット欄で # を入力すると、アップロードした資料を引用して回答させることが可能になります。
これにより、「自社専用のAIアシスタント」が爆速で完成します。
さらに、Pythonからこのローカル環境を叩くスクリプトを用意することで、大量のテキスト分類やデータ整形を自動化できます。
import requests
import json
# OllamaのAPIエンドポイント
URL = "http://localhost:11434/api/generate"
def ask_local_llm(prompt):
payload = {
"model": "llama3",
"prompt": prompt,
"stream": False
}
try:
response = requests.post(URL, json=payload)
response.raise_for_status()
return response.json()['response']
except Exception as e:
return f"エラーが発生しました: {e}"
# 大量のデータをバッチ処理する例
data_list = ["テキスト1", "テキスト2", "テキスト3"]
for item in data_list:
result = ask_local_llm(f"以下の内容を要約して: {item}")
print(f"結果: {result}")
このスクリプトを使えば、機密性の高い顧客アンケートの解析なども、一切の漏洩リスクなく、かつ無料で処理し続けることができます。 私はこの方法で、1日1万件以上のログ解析を回していますが、API料金を気にせず試行錯誤できるのは圧倒的な強みです。
よくあるトラブルと解決法
| エラー内容 | 原因 | 解決策 |
|---|---|---|
| Connection refused | Ollamaが起動していない | ollama serve を実行するか、アプリを再起動 |
| 動作が異常に重い | GPUではなくCPUで動いている | Docker起動時の --gpus all オプションを確認 |
| モデルが見つからない | pullされていない | ollama pull llama3 を実行 |
| WebUIにログインできない | DBの不整合 | Dockerボリュームを削除して再作成(履歴は消える) |
次のステップ
環境が整ったら、次は「モデルの使い分け」を試してください。
日本語の精度を求めるなら「Llama-3-Elyza」や「Gemma-2-9b」が非常に優秀です。
Ollamaなら ollama run gemma2 と打つだけで新しいモデルを試せます。
また、Open WebUIの「Functions」機能を使えば、AIに特定のツール(計算機やWeb検索など)を使わせる「Agent」の構築も可能です。 ローカルLLMは、もはや「お遊び」ではなく、業務システムの一部として組み込めるフェーズに来ています。 まずは、毎日書いている日報のドラフト作成や、コードのデバッグなど、小さなタスクから「自分の相棒」として教育してみてください。
よくある質問
Q1: 会社で使う場合、セキュリティ上の懸念はありますか?
全くありません。今回構築した環境は、PC内部(または社内LAN)で完結しており、外部サーバーにプロンプトが送信されることはありません。Dockerの通信さえ絞れば、完全にオフラインでの運用も可能です。
Q2: 4bit量子化などの難しい設定は不要ですか?
Ollamaがデフォルトで4bit量子化版をダウンロードしてくれるため、意識する必要はありません。VRAM消費を抑えつつ、精度を維持した状態で即座に利用できるよう最適化されています。
Q3: モデルをカスタマイズ(微調整)することはできますか?
Modelfileという設定ファイルを作成することで、システムプロンプトやパラメータ(Temperatureなど)を固定した「自分専用モデル」を定義できます。Open WebUI上でも「Model Files」から簡単に作成・保存が可能です。



