生成AIを業務適用に向けて様々な検証を行っていた最中、過去に他部門で利用していたお下がりPCが手に入り、RTX8000(メモリ48GB)2枚を搭載したすごいマシンを業務で利用可能になりました。
Windows 11 + Quadro RTX 8000 × 2 のマシンで、Chrome拡張「Page Assist」から社内ネットワーク越しにOllamaを使えるようにした実録です。「動いているのに使えない」を一つずつ潰していった記録を、同じ壁にぶつかった方の時短につながるよう整理して共有します。
環境
- OS: Windows 11
- GPU: Quadro RTX 8000 × 2
- CUDA: 12.4
- 目的: 別PCのChrome拡張(Page Assist)からOllamaサーバーに接続して使う
最初に押さえる全体像
- 最近、OllamaにもチャットUIが搭載されるもインストールしたPCでのみ利用可能。
- 別PCから利用する場合、Ollamaは「APIサーバー」。ブラウザで直接アクセスしてもチャットUIは出ません。
- チャットUIは別途フロントエンドが必要(例: Page Assist、Offline AI Chat、Ollama Client など)。
- 社内別PCから使うには「Ollamaを外部接続可にする」「Windowsファイアウォールを開ける」「フロントエンドのCORS設定を合わせる」の3点が要所。
推奨フロントエンド
- Page Assist(機能豊富・RAG対応)
- Offline AI Chat (Ollama)(シンプル)
- Ollama Client(プライバシー重視)
ステップバイステップ手順
1) Ollamaを外部接続可にする
サーバー用ターミナルでのみ環境変数をセットして起動(クライアント側に影響させないのがコツ)。
set OLLAMA_HOST=0.0.0.0
set OLLAMA_ORIGINS=*
ollama serve
Windows Defender ファイアウォール:
- 「セキュリティが強化されたWindows Defenderファイアウォール」を開く
- 受信の規則 → 新しい規則 → ポート → TCP 11434 → 接続を許可
- プロファイルは「ドメイン」「プライベート」を選択(社内LAN向け)
動作確認(別PCから):
curl http://サーバーIP:11434/ # “Ollama is running” が返ればOK(UIは出ないのが正常)
curl http://サーバーIP:11434/api/tags # モデル一覧が返ればAPI疎通OK
ポイント:
OLLAMA_HOST
はサーバーの待受アドレス。0.0.0.0
で全NIC待受け。- これをグローバル環境に入れると、クライアントの
ollama
コマンドも0.0.0.0
に繋ごうとして失敗します。サーバー起動用のターミナルにだけ設定するのが安全。
2) Page Assistをつなぐ(CORS対策)
Page Assistの設定:
- 自動Ollama CORSフィックス: 無効
- カスタムOriginのURL:
http://サーバーIP:11434
- カスタムOriginのURLを有効化: 有効
サーバー側は OLLAMA_ORIGINS=*
で広めに許可(運用では必要に応じて絞るのを推奨)。
よくある誤解:
http://サーバーIP:11434
にブラウザでアクセスしてもチャットは表示されません。Page AssistなどのUIから接続します。
3) GPUで動いているか確認(LM Studio干渉の罠)
現象:
nvidia-smi
でOllamaプロセスが見えるのにGPU使用率が0%のまま。
原因:
- LM StudioがGPUメモリを占有(
available="0 B"
に近い、offloaded 0/xx layers to GPU
でCPU実行)。
解決:
taskkill /f /im "LM Studio.exe"
ollama serve
成功の目安(ログ抜粋):
available="46.5 GiB" free="46.5 GiB"
offloaded 25/25 layers to GPU
4) デュアルGPUの活用
まず両GPUを可視化:
set CUDA_VISIBLE_DEVICES=0,1
並列度など(用途に応じて):
set OLLAMA_NUM_PARALLEL=2
set OLLAMA_MAX_LOADED_MODELS=1
重要な補足(単一リクエストで2枚活用したい場合):
- 1つのモデルを複数GPUに分割して載せるには、Modelfile(またはリクエスト)で
gpu_split
を指定。
例(2枚均等分割のイメージ):
gpu_split 50 50
CUDA_VISIBLE_DEVICES
で2枚を見せただけではGPU0のみ使う挙動になることがあります。nvidia-smi
で両方に負荷が載るか要確認。- バージョンにより挙動やパラメータ名は変わり得るため、該当バージョンのOllama/llama.cppドキュメントを参照してください。
5) パフォーマンス系の任意設定(必要に応じて)
環境やバージョン差異があるため、「使える場合に」試すものとして記載します。
set OLLAMA_KEEP_ALIVE=30m
set OLLAMA_MAX_LOADED_MODELS=1
set OLLAMA_NUM_PARALLEL=2
set OLLAMA_ORIGINS=*
set CUDA_VISIBLE_DEVICES=0,1
補足:
- コンテキスト長はモデル側の設定(
num_ctx
)で指定するのが確実。環境変数OLLAMA_NUM_CTX
をサポートする版もあり。 num_gpu
系はリクエストやModelfile側のパラメータとして指定する実装が主流で、環境変数でない版が多いです。OLLAMA_FLASH_ATTENTION
等の実験的オプションはバージョン依存のため、実装状況を確認のうえ使用してください。
発生した具体的な問題と解決
問題1: ブラウザに「Ollama is running」と出るだけ
- 原因: OllamaはAPIサーバー。UIは別途必要。
- 対策: Page Assistなどのフロントエンドを利用。
問題2: Page Assistで「Unable to connect to Ollama」
対策:
- サーバー側で
OLLAMA_HOST=0.0.0.0
、OLLAMA_ORIGINS=*
を設定し、ollama serve
を起動。 - Windows Defender ファイアウォールで TCP 11434 を「ドメイン」「プライベート」に許可。
検証コマンド:
echo %OLLAMA_HOST%
echo %OLLAMA_ORIGINS%
netstat -an | findstr 11434
問題3: 接続後に403「Ollama call failed with status code 403」
- 原因: Page Assist側のCORS設定が競合。
- 対策(Page Assist設定):
- 自動Ollama CORSフィックス: 無効
- カスタムOriginのURL:
http://192.168.x.x:11434
- カスタムOriginのURLを有効化: 有効
問題4: GPUを使わずCPUで動作
- 原因: LM StudioがGPUを専有。
- 対策:
taskkill /f /im "LM Studio.exe"
ollama serve
- 確認:
nvidia-smi
でGPU使用率、ログのoffloaded xx/xx layers to GPU
をチェック。
問題5: デュアルGPU活用
設定例:
set CUDA_VISIBLE_DEVICES=0,1
set OLLAMA_NUM_PARALLEL=2
set OLLAMA_MAX_LOADED_MODELS=1
単一推論を2枚で分割するなら Modelfile で gpu_split
を指定(両GPUに負荷が乗るか nvidia-smi
で確認)。
重要な発見(正体判明): 環境変数設定時に ollama
コマンドがエラー
現象:
set OLLAMA_HOST=0.0.0.0
ollama list
# Error: something went wrong, please see the ollama server logs for details
原因の本質:
OLLAMA_HOST
はクライアントの接続先指定にも使われます。0.0.0.0
は「サーバーの待受アドレス」であって「クライアントの接続先」にはなりません。- そのため、クライアント側で
OLLAMA_HOST=0.0.0.0
が見えていると接続に失敗します。
正しい回避/運用:
- サーバー起動用ターミナルでのみ環境変数をセットして起動
set OLLAMA_HOST=0.0.0.0 && set OLLAMA_ORIGINS=* && ollama serve
- 別ターミナル(環境変数を未設定のまま)でクライアントコマンドを実行
ollama list
- もし既に環境に入れてしまった場合は、一時的にクリアしてから実行
set OLLAMA_HOST=
set OLLAMA_ORIGINS=
ollama list
トラブルシューティングのコツ(チェックリスト)
プロセス・ポート・GPUの競合確認
nvidia-smi # GPU使用プロセス確認
tasklist | findstr ollama # Ollamaプロセス確認
netstat -an | findstr 11434 # ポート使用状況
競合しやすいアプリ例: LM Studio、他の推論サーバー、監視/セキュリティ製品のプロキシ機能
段階的アプローチ
- 外部接続だけ → フロントエンド接続 → GPU単体 → デュアルGPU → 最適化 の順で一つずつ確認。
- どこで壊れたかを切り分けやすくする。
ログを活用
詳細ログを有効化して起動:
set OLLAMA_DEBUG=1
ollama serve
ネットワークとセキュリティの注意
OLLAMA_ORIGINS=*
は検証向け。本番は必要最小限に絞る(拡張のオリジンや社内FQDNなど)。- ファイアウォールは「ドメイン」「プライベート」のみに限定。パブリックでは開けない。
- サブネット/VLAN越えの場合はL3ルーティングとACLも確認。
まとめ(得られた教訓)
- OllamaはAPIサーバー。UIは別に用意する。
- 社内別PCから使うには、ホストバインド・ファイアウォール・CORSの3点が要。
- GPUが使われないときは、まず
nvidia-smi
で他プロセスの専有を疑う(LM Studioが典型例)。 OLLAMA_HOST
はサーバー用にだけスコープ。クライアント側に漏れるとコマンド失敗。- デュアルGPUは「並列実行」と「モデル分割」で使い方が異なる。後者は
gpu_split
の指定を忘れない。
この手順で、Quadro RTX 8000 × 2 の環境で、社内の複数PCからPage Assist経由で高速なローカルLLMを安定運用できました。誰かの「動くはずなのに動かない」を1つでも減らせたら幸いです。
参考リンク
- Page Assist(Chrome拡張)
https://chromewebstore.google.com/detail/page-assist-a-web-ui-for/jfgfiigpkhlkbnfnbobbkinehhfdhndo - Ollamaサイトリンク
https://ollama.com/
コメント