在 Hugging Face 端點上執行隱私保護推論

Zama 與 Hugging Face 已將 Concrete ML——一個隱私保護的機器學習框架——整合至 Hugging Face Endpoints。此整合讓開發者能部署使用全同態加密(FHE)的預編譯模型,實現對加密資料的直接計算,無需私鑰,確保使用者資料在推論過程中保持私密。

透過 Hugging Face 端點的 FHE 驅動推論

使用者可以透過「Inference Endpoint (dedicated)」選項,直接從 Hugging Face Hub 部署支援 FHE 的模型。由於 Concrete ML 模型目前不支援 GPU,部署時必須選擇 CPU 為主的機器(目前最高可提供八個 vCPU)。

用戶端工作流程

  1. Clone the Model Repository:使用者從 Hugging Face 複製特定模型的倉庫至本機。
  2. Environment Setup:使用者使用 Python 3.10(為相容 Hugging Face Endpoints 所必需)在本機安裝 Concrete ML 及其相依套件。
  3. Execution:使用提供的腳本(例如 play_with_endpoint.py),使用者在本機對輸入資料進行量化與加密,然後再送至端點。
  4. Decryption:端點回傳加密的預測結果,使用者在本機解密並去量化,以取得最終結果。

透過自訂處理程式的技術實作

此功能透過 Hugging Face 的 custom inference handlers 來實現。Zama 實作了一個 handler.py 檔案,定義了 EndpointHandler 的自訂 __call__ 方法,使端點能支援特定的 FHE 操作:

  • save_key:儲存 FHE 評估金鑰。
  • append_key:將大型 FHE 評估金鑰分段儲存。
  • inference:對加密資料執行 FHE 推論。

模型效能與可用性

Zama 提供了多個預編譯範例模型,以展示不同機器學習任務及其在 Hugging Face CPU 端點上的執行時間:

模型類型 資料集 在 HF 端點上的執行時間
邏輯迴歸 合成 0.4 秒
決策樹 垃圾郵件 2.0 秒
QNN Iris 3.7 秒
卷積神經網路 MNIST 24 秒

限制與未來方向

雖然此整合實現了隱私保護的推論,但仍存在多項技術限制:

  • Volatile Key Storage:評估金鑰儲存在端點的 RAM 中。若端點重新啟動,金鑰會遺失,必須重新傳送。
  • Scaling:由於 RAM 無法在機器間共享,處理跨多個實例的大量流量相當困難。
  • Hardware Constraints: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