使用 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 提供了一个框架,通过利用全同态加密(Fully Homomorphic Encryption)来执行隐私保护的推理,允许在加密数据上进行安全和私密的计算。

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