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(機密運算模式)來建立一個安全隔離區(secure enclave),在硬體保護的記憶體中執行解密、推論與重新加密。

核心安全機制

  • Key Exchange – 本地裝置與 H100 GPU 進行雙向金鑰交換。
  • Remote Attestation – GPU 證明其為真實硬體且正運行於機密模式,以防止偽造硬體。
  • Secure Enclave – GPU 內部的所有記憶體與運算皆經過加密;即使是主機上的 root 使用者也無法讀取明文。
  • End-to-End Encryption – 本地 LLM 訊息在傳輸前會先進行加密,僅在隔離區內解密,由雲端 LLM 處理後重新加密,再傳回。

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

效能影響

使用高達 ~8k tokens 的提示詞以及 Qwen-32B 等大型模型進行測試,結果顯示 增加的延遲低於 1%,證明了強大的機密性並不會損害回應速度。

成本與隱私效益

  • Cost Savings – 透過僅傳送協調所需的最小加密 token,該協定保留了原始 Minions 系統所報告的 5x-30x 雲端成本降低,同時達到前沿模型 98% 的準確度。
  • Privacy Upside – 敏感的上下文資訊(context)永遠不會以明文形式離開本地裝置,解決了本地優先 LLM 設定中的主要隱私疑慮。

入門指南

# 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

執行安全演示

該儲存庫包含一個 Streamlit app,可同時演示原始的 Minion 協定與 Secure Minion (MinionS) 協定。

streamlit run app.py

配置應用程式:

  • Remote Provider: "Secure"
  • Secure Endpoint URL: http://20.57.33.122:5056
  • Local Client: Ollama 搭配您選擇的模型。

Secure Minions demo screenshot

Python 使用範例

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 執行腳本。

進一步閱讀

Sources

相關

  • Dispatch
  • Dispatch
  • 專案
  • Dispatch
  • 專案