在 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)。

客户端工作流

  1. 克隆模型仓库:用户从 Hugging Face 克隆特定模型仓库到本地机器。
  2. 环境设置:用户使用 Python 3.10(为兼容 Hugging Face 端点所必需)在本地安装 Concrete ML 及其依赖。
  3. 执行:使用提供的脚本(例如 play_with_endpoint.py),用户在本地对输入数据进行量化和加密,然后发送至端点。
  4. 解密:端点返回加密的预测结果,用户随后在本地解密并去量化,以获得最终结果。

通过自定义处理器的技术实现

此功能通过 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.zipserver.zipversions.json 文件,然后将这些文件上传至 Hugging Face Hub,并使用 concrete-mlFHE 标签以便被发现。

未来改进

Zama 与 Hugging Face 旨在通过提供更强大的 CPU 机器、将 Concrete ML 更深入地集成到 Hugging Face 界面(例如专用的 “Private-Preserving Inference Endpoint” 按钮),以及在多台服务器之间提供非易失性、共享的 FHE 推理密钥存储,来提升使用体验。

Sources