使用 Concrete ML 进行隐私保护推理

Concrete ML 是 Zama 开发的一个专用库,它允许通过全同态加密 (FHE) 在加密数据上执行机器学习模型,从而保护数据隐私。

要使用 XGBClassifier 等模型,请使用以下导入

from concrete.ml.sklearn import XGBClassifier

执行隐私保护推理

XGBClassifier 的初始化可以按如下方式完成

classifier = XGBClassifier(n_bits=6, [other_hyperparameters])

其中 n_bits 决定了输入特征的精度。请注意,n_bits 值越高,输入特征的精度越高,最终模型准确度可能也越高,但 FHE 执行时间也会更长。

可以使用 xgboost 库中存在的其他超参数。

模型训练和编译

与 scikit-learn 类似的模型常用一样,它可以使用 .fit() 方法进行训练。

classifier.fit(X_train, y_train)

训练后,模型可以使用校准数据集进行编译,该数据集可以是训练数据的一个子集

classifier.compile(X_calibrate)

该校准数据集 X_calibrate 用于 Concrete ML 计算模型中每个中间值的精度(位宽)。这是优化等效 FHE 电路的必要步骤。

FHE 模拟和执行

要验证加密计算中的模型准确度,您可以运行 FHE 模拟

predictions = classifier.predict(X_test, fhe="simulate")

此模拟可用于评估模型。此模拟步骤的最终准确度代表了实际 FHE 执行的准确度,而无需支付实际 FHE 执行的成本。

当模型准备就绪时,可以执行实际的全同态加密

predictions = classifier.predict(X_test, fhe="execute")

请注意,使用 FHE=”execute” 是一种方便评估 FHE 中模型的方法,但对于实际部署,必须使用加密(在客户端)、在 FHE 中运行(在服务器上)和最终解密(在客户端)的函数,以实现端到端隐私保护推理。

Concrete ML 提供了一个部署 API 来简化此过程,确保端到端隐私。

要深入了解部署 API,您可以阅读

Concrete ML 中的参数调整

Concrete ML 与标准 scikit-learn 管道(如 GridSearchCV 或任何其他超参数调整技术)兼容。

示例和演示

结论

Concrete ML 提供了一个框架,通过利用全同态加密执行隐私保护推理,从而在加密数据上实现安全私密的计算。

更多信息和示例请参阅Concrete ML 文档