Secure Minions プロトコルにより、暗号化された Ollama とフロンティアモデルの連携が可能に

TL;DR

Secure Minions は、Minions フレームワークにエンドツーエンド暗号化を追加し、ローカルの Ollama モデル(例:Gemma 3 4B)が、送信中やリモート推論中に平文を一切公開することなく、フロンティア・クラウドモデル(例:GPT-4o)と連携できるようにします。

Secure Minions が追加するもの

Secure Minions は、ローカルとリモートの通信チャネル全体を暗号化することで、元の Minions プロトコルを拡張し、クラウドプロバイダーからも保護します。主な革新は、NVIDIA Hopper H100 GPU の confidential computing mode を使用して、ハードウェアで保護されたメモリ内で復号、推論、および再暗号化を行うセキュア・エンクレーブを作成することです。

コアとなるセキュリティ・メカニズム

  • Key Exchange – ローカルデバイスと H100 GPU は、相互の鍵交換を行います。
  • Remote Attestation – GPU は、自身が本物であり、confidential mode で動作していることを証明し、なりすましハードウェアを防ぎます。
  • Secure Enclave – GPU 内のすべてのメモリと計算は暗号化されており、ホストの root ユーザーであっても平文を読むことはできません。
  • End-to-End Encryption – ローカル LLM のメッセージは送信前に暗号化され、エンクレーブ内でのみ復号され、クラウド LLM によって処理され、再暗号化されて送り返されます。

"No plaintext is exposed – during transmission or remote LLM inference." – Hazy Research announcement

パフォーマンスへの影響

最大 ~8k トークンのプロンプトと Qwen-32B のような大規模モデルを用いたテストでは、追加のレイテンシは 1% 未満であり、強力な機密性がレスポンス性能を損なわないことを示しています。

コストとプライバシーのメリット

  • Cost Savings – 連携に必要な最小限の暗号化トークンのみを送信することで、このプロトコルは、元の Minions システムで報告された 5x-30x のクラウドコスト削減を実現しつつ、フロンティアモデルの精度を 98% 維持します。
  • Privacy Upside – 機密性の高いコンテキストは平文でローカルデバイスを離れることがないため、ローカルファースト LLM セットアップの主なプライバシー懸念に対処します。

Getting Started

# Clone the Minions repository
git clone https://github.com/HazyResearch/minions.git
cd minions

# Optional: create a virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install the package in editable mode
pip install -e .

# Pull a local Ollama model (e.g., Gemma 3 4B)
ollama pull gemma3:4b

Running the Secure Demo

このリポジトリには、元の Minion プロトコルと Secure Minion (MinionS) プロトコルの両方を実示する Streamlit アプリが含まれています。

streamlit run app.py

アプリの設定:

  • Remote Provider: "Secure"
  • Secure Endpoint URL: http://20.57.33.122:5056
  • Local Client: Ollama と選択したモデル。

Secure Minions demo screenshot

Example Python Usage

from minions.clients.secure import SecureClient
from minions.clients.ollama import OllamaClient
from minions.minion import Minion

remote_client = SecureClient(
    endpoint_url="http://20.57.33.122:5056",
    verify_attestation=True,
)

local_client = OllamaClient(model_name="gemma3:4b")

protocol = Minion(local_client=local_client, remote_client=remote_client)

task = "How many grand slams did he win"
context = """John Doe, a legendary tennis player, ..."""

output = protocol(
    task=task,
    doc_metadata="file",
    context=[context],
    max_rounds=5,
)
print(output)

スクリプトを python example.py で実行します。

Further Reading

Sources

関連

  • Dispatch
  • Dispatch
  • プロジェクト
  • Dispatch
  • プロジェクト