在 Hugging Face 端点上运行隐私保护推理
Zama 与 Hugging Face 已将 Concrete ML——一种隐私保护机器学习框架——与 Hugging Face 端点集成。此集成使开发者能够部署使用全同态加密(FHE)的预编译模型,实现对加密数据的直接计算,无需私钥,从而在推理过程中确保用户数据保持私密。
通过 Hugging Face 端点进行 FHE 驱动的推理
用户可以使用 “Inference Endpoint (dedicated)” 选项直接从 Hugging Face Hub 部署适用于 FHE 的模型。由于 Concrete ML 模型目前不支持 GPU,部署时需要选择基于 CPU 的机器(当前最多可用八个 vCPU)。
客户端工作流
- 克隆模型仓库:用户从 Hugging Face 克隆特定模型仓库到本地机器。
- 环境设置:用户使用 Python 3.10(为兼容 Hugging Face 端点所必需)在本地安装 Concrete ML 及其依赖。
- 执行:使用提供的脚本(例如
play_with_endpoint.py),用户在本地对输入数据进行量化和加密,然后发送至端点。 - 解密:端点返回加密的预测结果,用户随后在本地解密并去量化,以获得最终结果。
通过自定义处理器的技术实现
此功能通过 Hugging Face 的 custom inference handlers 实现。Zama 实现了一个 handler.py 文件,为 EndpointHandler 定义了自定义的 __call__ 方法,从而使端点支持特定的 FHE 操作:
save_key:保存 FHE 评估密钥。append_key:将大型 FHE 评估密钥分块保存。inference:在加密数据上执行 FHE 推理。
模型性能与可用性
Zama 提供了多个预编译示例模型,以展示不同机器学习任务及其在 Hugging Face CPU 端点上的执行时间:
| 模型类型 | 数据集 | 在 HF 端点上的执行时间 |
|---|---|---|
| Logistic Regression | Synthetic | 0.4 sec |
| DecisionTree | Spam | 2.0 sec |
| QNN | Iris | 3.7 sec |
| CNN | MNIST | 24 sec |
限制与未来方向
虽然该集成实现了隐私保护推理,但仍存在若干技术限制:
- 易失性密钥存储:评估密钥存储在端点的 RAM 中。如果端点重启,密钥将丢失,需要重新发送。
- 可扩展性:由于 RAM 在机器之间不共享,跨多个实例处理大流量请求具有挑战性。
- 硬件限制:CPU 端点当前最多只能使用八个 vCPU,这可能限制高负载应用。
准备自定义 FHE 模型
开发者可以通过 fork Zama 的现有仓库并修改 creating_models.py 来适配其特定数据集和任务,从而创建自己的预编译模型。该过程包括使用 Concrete ML 训练模型以生成 client.zip、server.zip 和 versions.json 文件,然后将这些文件上传至 Hugging Face Hub,并使用 concrete-ml 与 FHE 标签以便被发现。
未来改进
Zama 与 Hugging Face 旨在通过提供更强大的 CPU 机器、将 Concrete ML 更深入地集成到 Hugging Face 界面(例如专用的 “Private-Preserving Inference Endpoint” 按钮),以及在多台服务器之间提供非易失性、共享的 FHE 推理密钥存储,来提升使用体验。