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 – 敏感上下文从未以明文形式离开本地设备,解决了本地优先 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 应用,可以演示原始 Minion 协议和 Secure Minion (MinionS) 协议。

streamlit run app.py

配置应用:

  • Remote Provider: "Secure"
  • Secure Endpoint URL: http://20.57.33.122:5056
  • Local Client: Ollama with your chosen model.

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
  • 项目