トピック
脱・クラウドAIで情報漏洩を防ぐ。AMD Ryzen/Radeonで構築する「月額0円」のAIサーバー
- 提供:
- 日本AMD
2026年6月1日 06:30
生成AIは、文章作成や要約、翻訳、資料作成、プログラミング支援など、さまざまな業務で活用が進んでいる。すでにChatGPTやGemini、ClaudeといったクラウドのLLM(大規模言語モデル)サービスを日常的に使っている人も多いだろう。ブラウザからすぐに利用でき、モデルの更新もサービス側で行なわれるため、手軽に導入できるのが大きな強みだ。
その一方で、企業利用、特に中小企業が業務にAIを組み込もうとした場合、オンラインサービスならではの悩みが出てくる。たとえば、社外秘の資料、顧客情報、契約書、設計図、社内マニュアル、議事録といった情報を外部サービスに入力してよいのかという問題だ。サービスごとにデータの取り扱い方針は異なるが、機密性の高い情報をクラウドに送ること自体に抵抗がある企業は少なくない。
そこで候補として挙がるのが、社内にAIサーバーを用意し、自社のネットワーク内で運用する「ローカルAI」だ。本稿ではローカルLLMサーバーを利用することのメリットや、低コストに実現可能な中小企業向けローカルLLMサーバーの構築方法について解説する。
社内で解決!ローカルAI活用でコスト削減
ローカルAIは、一般的なオンラインのモデルと違い、文書検索や質問への回答生成を自社のPCやサーバー上で完結させられる。インターネット越しに外部サービスへデータを送る必要がないため、情報漏洩のリスクを抑えやすい。 もちろん、社内ネットワークや端末の管理は必要だが、「AIを使いたいが、重要な情報を外に出したくない」という企業にとっては有力な解決策だ。
コスト面でもメリットはある。クラウド型LLMサービスは、個人利用なら月額数千円程度で済むことも多いが、業務で複数人が使うとなると話は変わる。人数分のライセンス費用やAPI利用料が積み上がり、毎月の固定費が増えていく。さらに、利用量が増えてくればトータルでかかるコストが読みにくくなる場合も……。
ローカルAIの場合、初期投資としてPCやGPUなどのハードウェアを用意する必要はある。しかし、一度環境を構築してしまえば、モデルの利用そのものに月額課金は発生しない。もちろん電気代や保守の手間はかかるが、利用人数や利用頻度が増えても、クラウドサービスのように使った分だけ料金が増え続けるわけではない。社内で継続的にAIを使う前提なら、長期的にはコストを抑えやすい。
では、ローカルAIは実際にどのような業務で役立つのか。分かりやすい例が、社内文書の検索と要約だ。多くの企業では、業務マニュアル、製品仕様書、過去の報告書、議事録、規定などが社内に蓄積されている。しかし、必要な情報がどのファイルにあるのか分からない、検索しても該当箇所を見つけるまで時間がかかる、といった問題はよくある。
そこで、 ローカルAIに社内文書を参照させれば、「この製品の保守手順を教えて」「過去の類似トラブルの対応例をまとめて」といった自然文の質問に対して、関連文書を探しながら回答する仕組みを作れる。
製造業や建設業では、技術伝承にも使いやすい。ベテラン担当者のノウハウがマニュアルや報告書、過去の作業記録に分散している場合、それらをAIで検索・要約できるようにしておけば、若手担当者が必要な情報にたどり着きやすくなる。現場で起きた不具合について、過去の事例や点検手順を確認するといった使い方も考えられる。
業種を問わず使える用途も多い。たとえば、社内Wikiのように社内規定やFAQを検索できるチャットボットを作る。開発部門やIT部門では、社内ルールや過去のコード、手順書を参照しながらコーディングやトラブルシュートを支援する。営業部門では、既存資料をもとに提案書やプレスリリースの下書きを作る。総務や人事では、社内規定に基づく問い合わせ対応や文書作成を効率化するといったものだ。
重要なのは、ローカルAIを「社内の情報を探し、整理し、下書きを作るための業務支援ツール」として位置付けること。最終判断は人間が行ないつつ、調査や整理、文章化にかかる時間を短縮する。そのための環境を自社内に持てることが、ローカルAIの大きな価値だ。
ローカルLLMの仕組み
ローカルAIの中心になるのが、「ローカルLLM」だ。LLMとは大規模言語モデル(Large Language Model)のことで、文章を理解し、質問に答えたり、要約したり、文章を生成したりするAIモデル。ChatGPTなどのクラウド型LLMサービスも、基本的にはこのLLMをクラウド上で動かし、ユーザーがブラウザやアプリから利用している。
ローカルLLMは、そのLLMを自社のPCやサーバー上で動かす仕組みだ。オンラインサービスとの一番大きな違いは、処理がどこで行なわれるかにある。オンラインサービスでは、ユーザーが入力した文章がインターネット経由でサーバーへ送られ、そこで処理された結果が返ってくる。これに対してローカルLLMでは、モデルの実行環境をPCに置き、入力した内容も同じPC上で処理をする。
そのため、ローカルLLMでは導入や運用に一定の知識が必要だ。モデルを選び、GPUなどのハードウェアを用意し、実行環境を構築し、社内の利用者が使いやすいUIを整える必要がある。ただし、最近はオープンなLLMや周辺ツールが急速に整備されており、以前に比べると導入のハードルはかなり下がっている。GPUを搭載したPCやワークステーションを用意すれば、中小企業でも現実的なコストで社内AI環境を構築できるようになってきた。
今回のような社内用ローカルLLMを構成する場合の要素は、大きく分けて4つある。LLMのベースモデル、そのモデルを動かす実行環境、社内データを活用するためのRAG(検索拡張生成)、そして利用者がアクセスするためのUIまたはサービスだ。
ベースモデル
1つ目は「ベースモデル」。これはAIの頭脳にあたる部分だ。現在は、Gemma、Qwen、Llamaなど、さまざまなオープンモデルが公開されている。モデルによって得意分野、対応言語、必要なメモリ容量、処理速度が異なる。パラメータ数が大きいモデルほど高性能になりやすい一方で、動作に必要なGPUのメモリ(VRAM)も増える。ローカルLLM環境では、使いたいモデルの規模と、用意できるGPUのVRAM容量のバランスが重要だ。
たとえば、比較的小さなモデルであればスペックがそれほど高くないPCでも軽快に動かしやすいが、回答の精度や複雑な推論では大規模モデルに劣る場合も。一方、大きなモデルはより自然で高品質な回答を期待できるが、VRAMの少ないGPUでは動かせなかったり、動作が遅かったりする。ローカルLLMを動かす上で、GPUのVRAM容量が重視されるのはこのためだ。
実行環境
2つ目は「実行環境」だ。LLMをGPU上で効率よく動かすには、専用のソフトウェア基盤が必要になる。AMD環境では、GPUコンピューティング向けでオープンソースのROCm(Radeon Open Compute)を利用し、そのうえでvLLMやllama.cpp、PyTorchなどの実行環境を組み合わせる形が代表的だ。特にvLLMは、LLMをサーバーとして動かし、複数のユーザーやアプリから利用する用途で注目されている。
以前は、AI用途ではNVIDIAのGPUが強いという印象が強かった。しかし近年は、AMDのROCm環境も整備が進み、対応するフレームワークや実行環境が増えている。ローカルLLMでは、単にモデルを1回動かせればよいわけではなく、複数ユーザーが安定して使えることが重要だ。
RAG(検索拡張生成)
3つ目は「RAG」だ。RAGはRetrieval-Augmented Generationの略で、日本語では検索拡張生成と呼ばれる。LLMはそれ自体が大量の知識を持っているが、社内の最新資料や独自文書の内容を最初から知っているわけではない。そこで、社内文書をデータベース化しておき、質問に関連する文書を検索し、その内容をLLMに渡して回答を生成させる。これがRAGの基本的な考え方だ。
RAGを使うことで、社内マニュアル、規定、議事録、製品資料などを参照した回答が可能になる。たとえば「有給休暇の申請ルールを教えて」と質問したときに、社内規定を検索し、その該当部分をもとに回答する。「この装置でエラーコードA01が出た場合の対応は?」と聞けば、保守マニュアルや過去の対応記録を参照して説明する。LLM単体に知識を丸暗記させるのではなく、必要な文書を都度検索して回答に使うため、社内情報を活用する仕組みとして導入しやすい。
UI(ユーザーインターフェイス)
4つ目は「UI」(ユーザーインターフェイス)。実行環境を構築しただけでは、一般の社員が使うにはハードルが高い。そこで、Webブラウザからチャット形式で利用できるUIを用意する。代表的な選択肢の1つがOpen WebUIで、社内LAN上のPCからWebブラウザでアクセスし、ChatGPTのような感覚でローカルLLMを利用できる。
Open WebUIでは、ユーザーごとの設定と、管理者による全体設定を分けて管理が可能だ。一般ユーザーはチャット履歴や利用するAIモデル、表示設定などを個別に扱える。一方、管理者は接続先のLLMサーバーや利用可能な機能、アクセス権限などを一括設定できる。このように利用者向け設定と管理者向け設定を分離することで、AIに詳しくない社員でも、普段の業務アプリに近い感覚でローカルLLMを利用しやすくなる。
ローカルLLMの仕組みを整理すると、まずGemmaやQwenなどのベースモデルを選び、それをROCmやvLLMといった実行環境でGPU上に展開する。さらに、社内文書をRAGで参照できるようにし、Open WebUIのようなWebブラウザUIを通じて利用者に提供する、という流れになる。
この中でハードウェア、特にGPUのVRAM容量は重要なポイントだ。モデルを動かすための領域だけでなく、入力文や生成中のデータ、複数ユーザーの同時利用に必要な領域もVRAMを消費する。VRAMが少ないと、選べるモデルの規模が小さくなったり、同時利用時の余裕が少なくなったりする。
次のセクションでは、こうしたローカルLLMのサーバーを構築するにはどうしたらいいのか、具体的に説明していこう。
低予算でローカルLLMを作れるAMDプラットフォーム
ローカルLLM環境を構築する際、重要になるのが大容量VRAMを搭載したグラフィックスカードだ。
VRAM(Video RAM)とは、グラフィックスカードに搭載された専用メモリのこと。LLMの動作にはモデルの重み(パラメータ)をVRAMに展開する必要があり、容量が不足するとモデルを動かせない。一般的なゲーミング向けグラフィックスカードに搭載される8GBや12GBのVRAMでは、実用的な30B(約300億パラメータ)クラスのモデルは動かせず、法人運用するなら24GB以上のVRAMが最低ラインとなる。
VRAM 32GBが魅力の「Radeon AI PRO R9700」
今回は中小企業が、社内にローカルLLMサーバーを導入するというシチュエーションでグラフィックスカードを選びたい。そこでおすすめしたいのが、AMDのGPU「AMD Radeon™ AI PRO R9700」を搭載したグラフィックスカードだ。
Radeon AI PRO R9700は、RDNA 4世代のアーキテクチャを採用し、ローカルでのAI推論・開発といったワークロードに最適化されたGPUだ。 Radeon AI PRO R9700の魅力の1つはVRAMを32GBも搭載していること。 前述した30Bクラスのモデルを扱えるのは大きく、しかもRadeon AI PRO R9700搭載グラフィックスカードの実売価格は25万円前後と、AI向けとしては破格の安さなのである。
なお、Radeon AI PRO R9700と演算ユニット数などが同じものとして、コンシューマ向けの「Radeon RX 9070 XT」もあるが、こちらはVRAMが16GBと少なくなるため、30Bクラスのモデルを動かすのが難しい。
| Radeon AI PRO R9700 (業務用) | Radeon RX 9070 XT (個人用) | |
|---|---|---|
| アーキテクチャ | RDNA 4 | RDNA 4 |
| 製造プロセス | TSMC 4nm | TSMC 4nm |
| 演算ユニット | 64CU | 64CU |
| ストリーミングプロセッサ | 4,096 | 4,096 |
| AIアクセラレータ | 128基 | 128基 |
| AI演算性能(INT8) | 766TOPS | 779TOPS |
| AI演算性能(INT4) | 1,531TOPS | 1,557TOPS |
| メモリ帯域 | 640GB/s | 640GB/s |
| メモリバス幅 | 256bit | 256bit |
| VRAM | 32GB GDDR6 | 16GB GDDR6 |
| TBP(Total Board Power) | 300W | 304W |
| PCI Express | 5.0 x16 | 5.0 x16 |
| 実売価格 (2026年5月時点) | 25万円前後 | 11万円前後 |
| 30BクラスのLLM | 実用的 | VRAM不足 |
実際、Radeon RX 9070 XT(VRAM 16GB)のマシンで、26BのパラメータのLLMを起動しようとすると、VRAMの容量不足で起動できないというメッセージが返ってくる。パラメータ数の少ないモデルであれば16GBでも動作するが、その場合は性能面で妥協が生じ、実用的なローカルLLMサーバーが作れない。
Radeon AI PRO R9700の価格は、同じVRAM容量の競合製品と比較した場合でも、半分以下に抑えられており、予算が確保できた段階でもう1枚追加して性能を拡張できるのも大きなメリットだ。最大4枚構成まで対応しているが、4枚実装にはPCI Expressスロットの物理的な配置や電力供給の観点からマザーボードをかなり選ぶ。まずは1枚で運用し、2枚までの増設を目安にするのが現実的だろう。
CPUはL3キャッシュの多い「Ryzen X3Dプロセッサ」が良い
GPUほど重視はされないが、ローカルLLMサーバーではCPUも重要だ。ここでは8コア16スレッドで動作する「AMD Ryzen™ 7 9850X3D」を選択している。それはなぜか?
Ryzen 7 9850X3Dはゲーム向けのCPUとされているが、ローカルLLMで着目すべきはそのL3キャッシュの多さ。96MBものL3キャッシュを搭載しており、テキストや画像を数値変換するベクトル検索におけるスループット向上や、RAG(検索拡張生成)におけるレイテンシ抑制に寄与するのである。
ローカルLLMではCPUに対して、コア数よりもランダムアクセス性能が要求されることから、Ryzen 7 9850X3DのようにL3キャッシュが大容量のCPUを選ぶことが大切なのだ。
ローカルLLMにはAMD以外の選択肢もあるが……
ローカルLLMを動かす上でのプラットフォームの選択肢は、当然AMD以外もある。ただ、今回のような中小企業向けローカルLLMサーバーを構築するというシチュエーションでは、AMDのRadeon AI PRO R9700を使った方がコスト面での優秀さが光る。
たとえば、Radeon AI PRO R9700に対して、VRAM 32GB以上という条件においてNVIDIAとAppleで比較すると以下のようになる。
| AMD Radeon AI PRO R9700 | NVIDIA GeForce RTX 5090 | Apple M4 Max (メモリ128GB搭載機) | |
|---|---|---|---|
| 実売価格 (2026年5月時点) | 約25万円 | 60万円以上 | 約90万円 |
| VRAM/メモリ | 32GB GDDR6 | 32GB GDDR7 | 128GB(統合メモリ) |
| メモリ帯域 | 640GB/s | 1,792GB/s | 546GB/s |
| Prefill実測 | 6,252tok/s | 13,470tok/s | 934tok/s |
| 並列サーバー用途 | vLLM | vLLM | MLX中心 vLLMは不向き |
| 消費電力 | 300W | 575W | 70W |
ローカルLLMサーバーにおけるGPU選定においては、VRAM容量以外にも重要な性能指標が2つある。それは「Decode」と「Prefill」だ。上の表でいうと「メモリ帯域」と「Prefill実測」が関係している。
- Decode
よく「tok/s」(トークン毎秒)として説明され、1秒間に何単語相当を出力できるかを示す指標。この数値が大きいほど回答の表示が速く、ユーザーの待ち時間が短くなる。DecodeはVRAMのメモリ帯域が性能要因となる。 - Prefill
入力プロンプト全体を一括処理し、最初のトークン(文字)を生成するまでのフェーズ。演算量は入力トークン数に比例し、PrefillはGPUの純粋な演算性能(AI性能)が関わる要素である。
具体例を挙げると、何千行もあるコードを読み込んでAIが「考え始める」までの時間がPrefillに相当する。Prefillが遅い場合、いくらDecodeによる回答速度が速いとしても、その前段階である入力してから回答が始まるまでの「待ち時間」が長くなる。
なお、AIの演算性能を示す単位として、TOPS(Tera Operations Per Second)もあるが、各メーカーで算出基準が統一されていないため、カタログスペックの単純比較が難しい。
以上を踏まえると、約25万円でDecode(回答速度)とPrefill(思考速度)の両方が速く、vLLM対応、かつ比較的省電力というバランスの良さがRadeon AI PRO R9700の強みといえる。ローカルLLMとして導入しやすいという理由を分かっていただけただろうか。
社内向けローカルLLMサーバー構築、意外と難しくない
個人利用や家庭内LANでLLMを動かす場合、llama.cppやLM Studio(llama.cppをGUIで操作できるツール)が一般的な選択肢だ。社内向けサーバーにもこれらを使うことはできるが、複数人が同時にアクセスする並列処理を考慮すると、現時点では「vLLM」が適している。
vLLMとは、カリフォルニア大学バークレー校のSky Computingラボが開発したオープンソースのLLM推論エンジンで、本番環境向けの高スループット推論に特化している。
vLLMの最大の特徴は、KVキャッシュをOSのページングメモリになぞらえて動的管理する独自技術「PagedAttention」を搭載していること。KVキャッシュとはLLMが過去のトークン(入力・出力履歴)を処理する際に生成する中間データを保存しておく領域のことだ。会話の文脈を保持するために必要で、コンテキスト長(会話の長さ)に比例してVRAMを消費する。vLLMの動的KVキャッシュは、従来の静的KVキャッシュと比べてVRAM利用効率が大幅に向上し、長いコンテキストや大きなバッチの並列処理で真価を発揮するのである。
vLLMとllama.cppを用途別に整理すると以下の通り。
| vLLM | llama.cpp | |
|---|---|---|
| 主な用途 | サーバー/API/複数同時リクエスト | ローカル/シングルユーザー |
| 対応ハード | ROCm/CUDA | CPU/GPU/Apple Silicon等 |
| 並列処理 | 本格的なバッチ処理 | 限定的 |
| 対応フォーマット | safetensors/AWQ/FP8等 | 主にGGUF |
| OpenAI互換API | 標準搭載 | llama-server |
| メモリ効率 | やや重い | 軽い |
| 速度(シングル) | 普通 | 速い場合もある |
| 速度(並列) | 強い | 弱い |
| セットアップ | やや複雑 | 非常に簡単 |
llama.cppはローカル/シングルユーザー用途では非常に優秀だが、オフィスのオンプレミス環境や複数人が同時利用する用途、Claude Codeなどのツールとの連携を想定するならvLLMが適している。そのため、ここではvLLMを使ってローカルLLMサーバーを構築する。
【ステップ1】AMDドライバ+ROCmのインストール
それでは、Radeon AI PRO R9700とRyzen 7 9850X3Dを搭載するPCが用意されていることを前提に話を進めていこう。
まずローカルLLMサーバーを作るにあたり、AMDドライバとROCmのインストールを行なう。なお、今回はOSに「Ubuntu 24.04.4 LTS」を使用した。サーバーOSとして広く普及しており、安定した動作が期待できる。
ドライバはAMD公式サイトのセットアップ手順に従ってインストールする。ここで使用したドライバは「Radeon Software for Linux version 25.35.1 for Ubuntu 24.04.4 HWE with ROCm 7.2.1」だ。
sudo apt update
wget https://repo.radeon.com/amdgpu-install/7.2.1/ubuntu/noble/amdgpu-install_7.2.1.70201-1_all.deb
sudo apt install ./amdgpu-install_7.2.1.70201-1_all.deb
sudo amdgpu-install -y --usecase=graphics,rocm
sudo usermod -a -G render,video $LOGNAME
sudo reboot
再起動後、ROCkカーネルモジュールが正しくロードされているかを確認する。
rocminfo | grep "ROCk module"
以下のように表示されれば正常にインストールされている。
ROCk module version 6.16.13 is loaded
【ステップ2】uvとHugging Faceのセットアップ
Pythonのパッケージ管理ツール「uv」と、機械学習モデルの共有プラットフォーム「Hugging Face」をセットアップする。uvなら「pip」と同様に使えて高速で、仮想環境の作成も行なえる。Hugging Faceからは今回使用するモデルもダウンロードする。「hf auth login」でアカウント認証を行なうことで、ライセンス同意済みのモデルを入手できる。
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
mkdir -p ~/Documents/works && cd ~/Documents/works
uv venv --python 3.12
source .venv/bin/activate
uv pip install huggingface_hub
hf auth login --token hf_xxxxxxxxxxxxxxxx
# ダウンロードするモデルによっては認証が必要になる
【ステップ3】Dockerのインストール
Dockerをインストールしよう。Dockerはアプリケーションとその実行環境をひとまとめにした「コンテナ」と呼ばれる単位で管理するプラットフォームだ。vLLMはDockerコンテナとして提供されており、依存関係の複雑なインストール作業を省略できる。
sudo apt update
sudo apt install -y 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 "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker
動作確認を行なう。
docker run hello-world
これで環境の準備は完了。次はLLMのダウンロードと起動となる。
【ステップ4】LLMモデルのダウンロード
LLMのモデルによってはGoogleのライセンス同意が必要なことがある。その場合は、事前にHugging Faceのモデルページで承認しておく。今回はGoogleの推論特化・4bit量子化モデルである「Gemma 4 26B-A4B-it AWQ INT4」を使用する。
hf download cyankiwi/gemma-4-26B-A4B-it-AWQ-4bit \
--local-dir ./gemma-4-26B-A4B-it-AWQ-4bit
【ステップ5】vLLMコンテナの起動
以下の設定でvLLMコンテナを起動する。
| モデル・推論設定 | |
|---|---|
| 項目 | 値 |
| モデル | Gemma 4 26B-A4B-it AWQ INT4 |
| アーキテクチャ | MoE(4B活性) |
| 量子化 | compressed-tensors (AWQ INT4) |
| dtype | float16 |
| max_model_len | 131,072(128K) |
| gpu_memory_utilization | 0.9 |
| KVキャッシュ | 8.78GiB/372,445トークン |
| Vision | (image=1) |
| VRAM使用量 | 約28.2GB/32GB |
docker run \
--name vllm-gemma4 \
--network=host \
--group-add=video \
--group-add=render \
--ipc=host \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device=/dev/kfd \
--device=/dev/dri \
--shm-size=16g \
-v ./gemma-4-26B-A4B-it-AWQ-4bit:/model \
-e VLLM_ROCM_USE_AITER=0 \
vllm/vllm-openai-rocm:v0.20.1 \
/model \
--served-model-name gemma-4-26B-A4B-it-AWQ-INT4 \
--dtype float16 \
--gpu-memory-utilization 0.90 \
--max-model-len 131072 \
--limit-mm-per-prompt '{"image":1,"audio":0}' \
--host 0.0.0.0 \
--port 8888
起動には数分かかる。ログに以下の一文が表示されれば正常起動だ。なお、上記で「-d」オプションを付けずに起動しているのはログを確認するため。実運用では「docker run -d」で起動する。
INFO: Uvicorn running on http://0.0.0.0:8888
【ステップ6】モデル確認
curl http://localhost:8888/v1/models
【ステップ7】テキスト推論
curl http://localhost:8888/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma-4-26B-A4B-it-AWQ-INT4",
"messages": [{"role": "user", "content": "日本語で自己紹介してください"}],
"max_tokens": 200
}'
【ステップ8】KVキャッシュ・コンテキスト長の確認
docker logs vllm-gemma4 2>&1 | grep -E "KV cache|kv_cache|cache blocks|model len|max_model"
今回の構成では以下のようなスペックとなっている。
Available KV cache memory: 8.78 GiB
GPU KV cache size: 372,445 tokens
Maximum concurrency for 131,072 tokens per request: 2.84x
Open WebUIでLAN上のPCからアクセス可能にする
ここまでの手順だけでもローカルLLMは動作するが、このままでは社内の各PCからChatGPTのようにアクセスする手段がない。そこで使うのが「Open WebUI」だ。
Open WebUIは、自己ホスト型(self-hosted)のオープンソースAIプラットフォームで、ChatGPTに近いUIを提供しつつ、OllamaやOpenAI互換APIなど各社LLMプロバイダに対応している。
| 機能 | 説明 |
|---|---|
| マルチモデル対応 | Ollama/OpenAI/Anthropicなどの複数モデルを1つのUIで使用可能 |
| オフライン動作 | 完全ローカルでの運用が可能(DockerまたはPipでインストール) |
| チャット機能 | ファイル添付、検索、コード実行、音声入出力、マルチモデル比較 |
| Knowledge(RAG) | ドキュメントをAIが検索して回答。9種類以上のベクトルDB対応 |
| エージェント | カスタム設定でモデル+ツール+ナレッジを組み合わせ |
| 拡張性 | PythonツールやMCP、OpenAPIなどによるプラグイン拡張 |
| チーム向け | RBAC、SSO/OIDC/LDAP、チャンネル、リアルタイム協働 |
RAGを設定して検索精度を上げる
社内LAN上のPCからOpen WebUIでチャットできるようになったが、業務に活用するにはもう一工夫したい。そこで登場するのが「RAG」(検索拡張生成)だ。
RAGはLLMの生成能力に、外部知識ベースからの検索を組み合わせたアーキテクチャのこと。LLMはカットオフ(学習データの締め切り日)があり、それ以降の情報は持っていない。また、社内の契約書・規定・製品情報といった企業固有の知識は最初から学習されていない。これらの情報をRAGに登録しておくことで、「○○の契約書の内容は?」といった質問に正確に答えられるようになる。
RAGの処理の流れは次のようになる。
- ユーザーが質問(クエリ)を入力する
- システムが事前に登録したドキュメントから関連情報を検索・抽出する
- 抽出した情報をコンテキストとしてLLMに供給し、回答を生成する
これらの処理により、LLMの事前学習だけではカバーできない最新情報や企業固有の知識に基づいた正確な回答が得られる。また、検索元のドキュメントが明示されるため回答の根拠が追跡可能となり、ハルシネーション(AIが事実と異なる情報を生成する現象)の抑制にも寄与する。
GoogleのNotebookLMは、このRAGの手法で広く知られているが、外部に機密性の高いデータをアップロードできない企業も多いだろう。ローカルLLMサーバー、Open WebUI、RAGを組み合わせれば、社内で完結できるというわけだ。
【ステップ1】ナレッジベースの作成
Open WebUIでRAGを設定する手順は比較的シンプルだ。
Open WebUIで、左サイドバーのワークスペースを開き、ナレッジベースの項目から+新しいナレッジベースをクリックする。
項目欄を以下のように設定し、「ナレッジベース生成」を押す。
| 項目 | 設定 |
|---|---|
| 何に取り組んでいますか? | Q&A |
| 何を達成したいですか? | Assistance |
| 公開レベル | 公開 |
| アクセス権 | アクセス可能なユーザーを指定(オプション) |
【ステップ2】ドキュメントの登録
ナレッジベース作成後、右上の+ボタンを押してコレクションを追加する。今回は「ファイルをアップロード」でCSVファイルを登録する。
なお、このCSVファイルはRAG用のデータとして以下のような内容で構成されている。
| 項目 | 内容 |
|---|---|
| 総行数 | 1,011行 ※1,000行(Q&Aペア)+10行(カテゴリサマリ)+1行(ヘッダー) |
| エンコーディング | UTF-8(BOMあり) |
| 区切り文字 | カンマ(,) |
次の画像にあるように、各カテゴリに10種ずつの質問と回答を定義した構成だ。あくまで架空のデータではあるが、同一カテゴリ内に類似質問が含まれるため、RAGの検索精度や再現性(同じ質問で同じ回答が返るか、類似質問で正しいカテゴリが返るか)を評価するのに適した設計となっている。
自社のルールに適合したRAG用CSVファイルを用意して、アップロードしよう。
【ステップ3】モデルの設定
次にモデルの項目で「+新しいモデル」を押し、以下の項目を設定する。
| 項目 | 設定 |
|---|---|
| モデル名 | Q&A |
| モデルID | qa |
| 基本モデルの選択 | gemma-4-26B-A4B-it-AWQ-INT4 |
| 説明 | ダミーQ&A |
| ナレッジベースの選択 | Q&A |
保存して作成でモデルが完成し、準備は完了だ。
作成したローカルLLMサーバーのパフォーマンス
Radeon AI PRO R9700とRyzen 7 9850X3Dを組み合わせ、モデルに26Bの「Gemma 4 26B-A4B-it AWQ INT4」を用いたローカルLLMサーバーの性能を、自作のベンチマークテストで測った結果、次のようになった。
| 並列数 | 個人 | 実効 | 並列効率 |
|---|---|---|---|
| 1 | 50.17tok/s | 50.2tok/s | 100% |
| 2 | 42.86tok/s | 85.7tok/s | 85.40% |
| 3 | 38.08tok/s | 114.2tok/s | 75.90% |
| 4 | 39.02tok/s | 155.8tok/s | 77.60% |
4並列の同時リクエストであっても、1人あたり約39tok/sを維持し、実効スループットは155.8tok/sを達成した。 人間の読書速度に換算すると、日本語では1トークン≒1〜2文字程度なので、30tok/s以上であれば、多くのユーザーが「十分速い」と感じる水準となる。実際のオフィス利用では、社内の全員が同時に使うわけではない。そして、一般的なチャット・文書要約中心であれば、10人規模でも現実的に共用できる性能といえる。
Radeon AI PRO R9700で低コストなローカルLLMを作ろう
RadeonとRyzenによるAMDプラットフォームでローカルLLMサーバーを構築することで、課金せずに動くLLMサーバーを実現できる。特にRadeon AI PRO R9700はVRAM 32GBを搭載しながら価格が抑えられており、コストパフォーマンスの面で際立っている。
ローカル動作のAIサーバーには情報漏洩リスクが少ないのに加え、サービス安定性という大きなメリットがある。昨今、オンラインAIの性能が日によってばらついたり、大手AIプロバイダ各社が赤字を続けながら投資している状況を踏まえると、フロンティアモデルが月数千円で使えるバーゲン価格がいつまでも続くとは限らない。仮に来月から下位プランが廃止、価格が大幅改定となっても、ローカルLLMサーバーがあれば日々の業務への影響はない。
また、オープンソースのLLMモデルの性能向上はすさまじく、今後もさらなる飛躍が見込まれる。新しい高性能モデルが登場するたびに入れ替えることで、継続的な業務効率の改善も可能だ。そう考えれば、Radeon AI PRO R9700を含めたパーツ一式の投資も、十分結果に見合うものになるはずだ。








































