使用 Concrete ML 的隐私保护推理
Concrete ML 是由 Zama 开发的一个专用库,它允许通过全同态加密 (FHE) 在加密数据上执行机器学习模型,从而保护数据隐私。
要使用 XGBClassifier 等模型,请使用以下 import
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 pipeline 兼容,例如 GridSearchCV 或任何其他超参数调优技术。
示例和演示
结论
Concrete ML 通过利用全同态加密提供了一个框架,用于执行隐私保护推理,从而允许在加密数据上进行安全和私密的计算。
更多信息和示例可在Concrete ML 文档中找到。