在 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)。
用戶端工作流程
- Clone the Model Repository:使用者從 Hugging Face 複製特定模型的倉庫至本機。
- Environment Setup:使用者使用 Python 3.10(為相容 Hugging Face Endpoints 所必需)在本機安裝 Concrete ML 及其相依套件。
- Execution:使用提供的腳本(例如
play_with_endpoint.py),使用者在本機對輸入資料進行量化與加密,然後再送至端點。 - 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.zip、server.zip 與 versions.json 檔案,然後將這些檔案上傳至 Hugging Face Hub,並加上 concrete-ml 與 FHE 標籤以便被搜尋。
未來增強功能
Zama 與 Hugging Face 目標是透過提供更強大的 CPU 機器、將 Concrete ML 更深入整合至 Hugging Face 介面(例如專屬的「Private-Preserving Inference Endpoint」按鈕),以及在多台伺服器之間提供非揮發性、共享的 FHE 推論金鑰儲存,以提升使用體驗。