Dify 三昧:【特別編】ローカル環境でAIを安全に活用!Dify + gpt-oss 構築ガイド

はじめに

こんにちは、ディーネットのよろず請負人、深見です。

9月に入りましたが、まだまだ暑い日が続きますね。皆さまいかがお過ごしでしょうか。

今回は特別編として、ローカル環境でのLLM利用について詳しくご紹介します。

Difyから外部のLLMサービスを利用する方法は既に広く知られていますが、多くの方が気になるのは「データが外部に漏れるのでは?」という懸念でしょう。

この心配事を完全に解消するとは言えませんが、大幅に軽減する方法として、LLMを限定された環境内で運用することが挙げられます。

少し前にGPTのOSS版(正確にはオープンウェイト言語モデル)である「gpt-oss」が提供されました。目ざとい方々は既にこれを自分の環境で動作させているかもしれませんね。

このgpt-ossは、実はDifyでも利用可能です。

今回は、Ollamaを使用してローカルLLM環境を構築し、gpt-ossが正常に動作するかを検証してみました。

💡 注目ポイント
gpt-oss-20bは一般的なベンチマークでOpenAI o3-miniと同様の性能を発揮し、わずか16GBのメモリで動作するとのこと!

検証環境の概要

アーキテクチャ

  • Ollama (Linux サーバ)
  • Dify からプラグイン経由でOllama上のモデル(gpt-oss:20B)を利用

1. Ollama実行環境の構築

(1) サーバ環境の準備

まず、Ollama用のサーバを構築します。

サーバ仕様:

  • Private IP:10.0.1.56
  • OS:AlmaLinux 9.6 (Sage Margay)
  • EC2インスタンスタイプ:t3.medium(メモリ不足) → t3.xlarge(CPUクレジット問題) → m6a.xlarge(まあ何とかかな?)
  • EBS (gp3):50GB

基本設定:

# システムアップデート
sudo dnf check-update
sudo dnf clean all
sudo dnf upgrade

# タイムゾーン設定
sudo timedatectl set-timezone Asia/Tokyo
sudo timedatectl

# ホスト名設定
sudo hostnamectl hostname ollama-server08
sudo reboot

# 必要なパッケージのインストール
sudo dnf install git wget net-tools

(2) Ollama環境の構築

作業ディレクトリを作成してOllamaをインストールします。

mkdir ollama
cd ollama

# Ollamaインストーラーの取得
curl -fsSL https://ollama.com/install.sh -O
# または
wget https://ollama.com/install.sh

# Ollamaのインストール
/bin/bash ./install.sh

インストール完了時の出力例:

>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.

⚠️ 重要な注意点

インストーラーは以下を自動的に実行します:

  • システムアーキテクチャの検出
  • 適切なOllamaバイナリのダウンロード
  • 専用システムユーザーとグループの作成
  • systemdサービスファイルの設定
  • サービスの有効化と起動

GPU環境について

今回はCPU環境での検証ですが、最適なパフォーマンスを得るためにはGPUドライバーのインストールを強く推奨します:

  • NVIDIA: 公式プロプライエタリNVIDIAドライバーをインストール(nvidia-smiで確認)
  • AMD (ROCm): ROCmツールキットをインストール(rocminfoで確認)

動作確認

# 起動確認
ps axwwwu | grep ollama

# バージョン確認
ollama --version
# 出力例: ollama version is 0.11.6

# サービス状態確認
systemctl status ollama.service

gpt-oss モデルのダウンロード

# gpt-ossのインストール(約14GB)
ollama pull gpt-oss:20b

# ダウンロード済みモデルの確認
ollama list

# モデル情報の詳細確認
ollama show gpt-oss:20b

モデル情報例:

Model
  architecture        gptoss
  parameters          20.9B
  context length      131072
  embedding length    2880
  quantization        MXFP4

Capabilities
  completion
  tools
  thinking

リモートアクセスの設定

Difyからアクセスできるよう、Ollamaの設定を変更します。

sudo systemctl edit ollama.service

以下の設定を追加:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=10.0.*"

設定後、サービスを再起動:

sudo systemctl restart ollama.service
sudo systemctl status ollama.service

# リッスン状態を確認
netstat -apnt | grep LISTEN

⚠️ セキュリティ設定

Dify側からリモートアクセスするため、セキュリティグループで11434ポートへのアクセスを許可する必要があります。

動作テスト

ollama run gpt-oss:20b

テスト例:

>>> おはようございます
Thinking...
User says: "おはようございます" (Good morning). They greet...
...done thinking.

おはようございます!今日はどんな予定がありますか? ☀️

>>> 1+2+3+4+5+6+7+8+9=
Thinking...
We need to answer the sum: 1+2+...+9...
...done thinking.

合計は **45** です。

2. Dify側の設定

パターン1: OpenAI-API-compatible プラグインを使用

事前調査で、DifyのOllamaプラグインではgpt-ossが利用できない可能性があることが判明したため、まずはOpenAI-API-compatibleプラグインを試します。

プラグイン設定:

  1. [使用] → [モデルプロバイダー] で「OpenAI-API-compatible」を追加
  2. モデル設定:
    • Model Type: LLM
    • Model Name: gpt-oss:20b
    • API endpoint URL: http://10.0.1.56:11434/v1/
    • Completion mode: chat
    • Model context size: 4096
    • API Keyは不要

チャットフロー作成:

  • LLMとしてgpt-oss:20bを選択
  • Temperature: 0.7
  • その他はデフォルト値を使用

dify-013-001
 ※ LLM のパラメータ設定

パターン2: Ollama プラグインを使用

プラグイン設定(Ollama v0.0.7):

  1. [使用] → [モデルプロバイダー] で「Ollama」を追加
  2. モデル設定:
    • Model Type: LLM
    • Model Name: gpt-oss:20b
    • Base URL: http://10.0.1.56:11434
    • Completion mode: Chat
    • Model context size: 8000
    • Vision support: Yes
    • Function call support: No

パフォーマンス調整

GPU非搭載環境での処理負荷軽減のため、以下のパラメータ調整を実施:

  • Temperature: 0.1(応答の確定性を向上)
  • Top P: 0.5(応答候補の絞り込み)
  • Size of context window: 4096(コンテキストサイズの制限)

dify-013-002


検証結果

動作確認

両方のパターンでgpt-ossは正常に動作することを確認しました。

テスト質問例:

  • "Chat-GPTについて概要を教えてください。"
  • "gpt-ossについて教えてください。"
  • "あなたの得意なことを教えてください。"

dify-013-003

パフォーマンスについて

課題点:

  • GPU非搭載環境では応答時間が長い
  • 複雑な質問ではタイムアウトが発生する可能性
  • "コーヒーブレイク+α"の時間は覚悟が必要

改善案:

  • GPUを搭載した環境での運用を推奨
  • メモリ32GB以上のWindows/Mac環境での運用を検討
  • LLMパラメータのさらなる最適化

まとめ

検証成果

今回の検証により、Dify + gpt-ossは問題なく動作することが確認できました。ローカル環境や閉鎖的なネットワーク環境下での生成AI利用には十分実用的です。

今後の課題

  1. ハードウェア要件の検討

    • gpt-oss:20Bの適切な稼働環境(スペック)
    • 上位モデル(gpt-oss:120B)使用時の要件検討
  2. パフォーマンス最適化

    • LLMパラメータ設定の詳細検討
    • GPU活用による高速化
  3. セキュリティ強化

    • ネットワーク分離の検討
    • アクセス制御の実装

推奨構成

最小構成(検証用):

  • CPU: 4コア以上
  • メモリ: 16GB以上
  • ストレージ: 50GB以上

推奨構成(本格運用):

  • GPU: NVIDIA RTX 4070以上
        またはAMD ROCm対応GPU に相当のこと
  • CPU: 8コア以上
  • メモリ: 32GB以上
  • ストレージ: 100GB以上(SSD推奨)

データプライバシーを重視する組織にとって、このようなローカルLLM環境は非常に有効な選択肢となるでしょう。

今後、より高性能な環境でのパフォーマンス検証や、セキュリティ設定の詳細についてお伝えしていければと思います。
※ GPU 装備の環境での検証も考えています。


この記事がお役に立てば幸いです。ご質問やご意見がございましたら、お気軽にコメントをお寄せください!

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA