使用 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 文档。