• 基于TensorFlow Encrypted (TFE)的隐私计算benchmark


    目前业界常提到的“隐私计算”,其实是“隐私保护计算”,即安全多方计算(MPC)、同态加密、联邦学习、可信执行环境等一系列技术的统称。和传统的加密、脱敏等静态数据保护方案不同,隐私计算技术可以实现数据使用中的动态保护,实现“数据可用不可见”,给数据要素的安全流通带来了众多想象与可能,因此也获得了产业界和资本的格外青睐。

    相比直接在原始数据上计算,隐私计算需要引入额外的计算和通信代价,因此其运行效率受到客户重点关注。但是目前业界对隐私计算效率的评估,往往简单的描述成“比明文慢XX倍”,各个厂商的文案中,慢千倍者有之,慢十倍者也有之,八仙过海,客户也经常蒙圈不知道如何比较,甚至连国内较权威的隐私计算性能测评都很难描述清楚。

    详细隐私计算性能评测文章参见:

    https://openmpc.com/article/182

    实际上,隐私计算的性能究竟比明文慢多少倍,这是和多种因素有关的,例如对于同一个需求场景,有严谨安全模型的方案,肯定比无严谨安全模型的方案要慢;同一个方案,低带宽下肯定比高带宽慢;必须说清楚场景和安全性,比较“比明文慢XX倍”才有意义。

    为了厘清这些问题,给用户一个关于隐私计算效率方面明确的认识,我们制作了一个隐私计算benchmark,设置了比较、排序、LR、NN等多种计算,分为局域网高带宽、广域网低带宽两种不同的网络环境,并在严谨的MPC安全模型下给出了这些场景下对应的性能数据和代码实现作为参考。

    隐私计算benchmark地址如下:

    https://github.com/tf-encrypted/tf-encrypted/tree/master/examples/benchmark

    TF-Encrypted(TFE)简介

    这个benchmark基于 TFE 框架来实现,这里对该框架做一个简单的介绍。TFE 是在 TensorFlow 上构建的隐私计算框架,充分利用了 TF 中已有的图计算优化、网络通信和优化等特点,让开发者仅需关注隐私计算协议的功能层和应用层,是最早出现的一批支持安全多方计算+机器学习的隐私计算框架之一,其开源实现也影响了后续兴起的多个相关框架。TFE的创始成员来自Cape Privacy,但目前主力维护工作主要由阿里巴巴安全部双子座实验室 承担。欢迎各位开发者和相关研究人员加入一起开源贡献,有问题可以咨询阿里巴巴双子座实验室 。

    阿里巴巴双子座实验室官网:

    https://alibaba-gemini-lab.github.io/

    TFE 目前支持基于 secret sharing(秘密分享)技术的多个MPC协议,包括 server-aided Pond、server-aided SecureNN、replicated secret sharing(RSS)等。这些协议均是semi-honest、honest majority的安全三方计算协议,我们的第一版benchmark目前也集中讨论这类安全三方计算的性能。

    Replicated Secret Sharing (RSS) 简介

    论文 ABY3 提出了一种基于 RSS 的三方计算框架,可以安全地实现机器学习等应用中涉及的大部分计算操作。

    在RSS中,一个原始数值  会被拆分成下列表示形式:

    且  (需要取模,这里不做赘述)‍

    其中,计算方0持有,计算方1持有,计算方2持有,这样就保证了任意一个计算方都无法获知原始数值,但是当两个计算方合作时就可以还原出该数值。当所有“敏感”数值都被拆分成这样的表示形式后,3个计算方可以执行一系列对应的计算协议来完成某个计算任务,比如,一次机器学习模型推理或训练。

    RSS是目前三方计算的最佳实践,其关键原因是RSS可以非常方便且高效的实现乘法和矩阵乘法:

    各个参与方只需要本地计算乘积的分量,然后传给其他参与方即可。出于这一优势,我们选取了TFE + RSS来完成此次三方计算的benchmark。对于benchmark中涉及的Relu、truncation、softmax等各类协议,我们均参考ABY3和[2]中的A(Arithmetic)、B(Boolean)混合协议来实现。需要注意的是我们没有使用ABY3中的Y即姚氏混淆电路,因为A+B就够用了,Y的通信代价过高,因此会降低整体方案的性能(这一点早在iDASH19比赛时已经被[5]证实了)

    测评环境

    这个 benchmark 的运行环境如下:

      • 安全模型:半诚实

      • 三方计算协议:RSS

      • 三个计算方分别位于三台不同的机器

      • 每台机器配置:4核,CPU 频率 2.7 GHz

    由于MPC任务对于网络环境要求较高,我们测试了两种不同的网络环境下的性能:

      • LAN:局域网,带宽 40Gbps,延迟 0.01 ms

      • WAN:广域网,带宽 352Mbps,延迟 20 ms

    测评任务1: 排序、最大值

    很多应用会涉及到比较大小、求最大值、求中位数、排序等操作(例如卷积网络中用到的 maxpooling),事实上这些操作底层都是“比较”操作,因此评估一个方案中“比较”操作的性能尤为重要。单个“比较”操作的性能或许波动较大,因此在这个benchmark中我们选择了测试排序任务和求最大值任务的性能:

      • 排序: 个元素的数组排序

      • 最大值: 个数组,每个数组个元素,求个数组各自的最大值。

    如下表所示:

    Build graph
    (seconds)
    LAN
    (seconds)
    WAN
    (seconds)
    Sort ()0.900.1311.51
    Sort ()74.70117.4511133.00
    Max ()2.020.010.51
    Max ()2.053.6615.28

    TFE需要为任务创建TensorFlow计算图,同样的任务运行多次,只需要建图一次,因此对比性能时可以不考虑这一步开销。从表中看到,安全地排序1百万个元素,在LAN环境下需要百秒,而WAN环境下则是千秒级别。

    另外需要一提的是,表中 Max(1000 x 4)事实上就等价于机器学习中batch大小为1000、pool大小为 2x2 的一个 MaxPool 操作。

    测评任务2: 神经网络推理

    我们接下来看一个更复杂一点的计算任务,在一个深层神经网络模型中作安全推理。

      • 推理任务和场景:服务商有一个神经网络模型,客户有一张图片,客户调用服务商的模型对图片作分类预测,但是图片不能泄漏给服务商。

    若模型较复杂,该任务会涉及到安全机器学习中使用到的大部分运算子,例如加减乘、ReLU、Sigmoid、MaxPool等等,因此能够很好的反应一个安全计算框架的综合表现性能。在本 benchmark 中,我们选择了用 Resnet50 模型对图片进行安全推理,该模型足够复杂,是机器学习中较为常见的模型,并且也被用于近年各大安全顶会中MPC相关的论文的性能评估任务。

    TFE支持把现有的 TensorFlow 模型直接转换成 MPC 版本,并执行后续的推理运算。其性能如下所示:

    Build graphLANWAN
    RESNET50 inference time (seconds)57.7913.55126.89

    在广域网下,Resnet50模型对一张图片做安全推理耗时在两分钟左右。笔者做过横向对比,在安全三方 Resnet50 模型推理任务下,TFE 是目前最高效的框架实现之一,例如,该性能与 CryptGPU、SecureQ8 的实现性能接近,优于 CryptFLOW。因此,即使考虑最优的网络环境,读者可大致看出该任务的耗时下限基本会在10秒级别。

    测评任务3: 神经网络训练

    最后,我们来讨论一下安全计算中的“圣杯”式的任务:模型训练。该任务需要经历多轮迭代运算,计算量和通信量都极为繁重。我们在 MNIST 数据集上做测评:

      • 该数据集包含6万张训练图片,1万张测试图片

      • 训练过程中使用的batch大小为128

      • 训练在5个epoch(即约3000个batch)后停止

      • 训练对比了机器学习中三个不同的主流优化器:SGD,AMSgrad,Adam

    我们分开两部分做测评,第一部分训练一个二分类的逻辑回归模型,第二部分训练全分类的神经网络模型。

    逻辑回归(LR)

    由于数据集有 10 个分类,而LR是二分类模型,因此我们训练如下二分类模型:区分开小数字(0-4) 和大数字(5-9)。如下表所示:

    Accuracy (epochs)Seconds per Batch (LAN)Seconds per Batch (WAN)
    LR (SGD)84.1% (5)0.0120.760
    LR (AMSgrad)85.5% (5)0.0251.567
    LR (Adam)85.8% (5)0.0211.353

    可以看到,目前MPC + LR 训练已经可以达到较高的性能。

    神经网络

    为了方便对比,我们沿用了前人工作中使用的4种神经网络模型,具体模型结构可参考Keller&Sun中的附录A。我们同时把 TFE 与 MP-SPDZ 框架实现的RSS协议做了对比(MP-SPDZ是目前开源的最快最全的MPC计算代码库之一,但笔者觉得使用起来没有 TFE 友好),其性能如下表所示:

    AccuracyAccuracySeconds per Batch (LAN)Seconds per Batch (LAN)Seconds per Batch (WAN)Seconds per Batch (WAN)
    MP-SPDZTFEMP-SPDZTFEMP-SPDZTFE
    A (SGD)96.7%96.8%0.0980.1389.7245.075
    A (AMSgrad)97.8%97.3%0.2280.56721.03817.780
    A (Adam )97.4%97.3%0.2210.46350.96316.958
    B (SGD)97.5%98.7%0.5714.00060.75525.300
    B (AMSgrad)98.6%99.0%0.6804.17071.98328.424
    B (Adam)98.8%98.8%0.7724.07598.10828.184
    C (SGD)98.5%98.8%1.1756.22391.34137.678
    C (AMSgrad)98.9%99.0%1.5687.336119.27183.695
    C (Adam)99.0%99.1%2.8256.858195.01381.275
    D (SGD)97.6%97.5%0.1340.35515.0836.112
    D (AMSgrad)98.4%98.1%0.2280.68226.09917.063
    D (Adam)98.2%98.0%0.2930.60554.40416.190

    表中 A、B、C、D 分别代表4种不同的神经网络架构,其中 C 最复杂。从对比中可以看出,TensorFlow 的图计算和网络优化使得 TFE 在 WAN 环境中取得了比 MP-SPDZ更高效的结果。而在LAN中由于TF-C++的额外调用代价,我们的性能比纯C++的MP-SPDZ要低。

    MNIST在四核笔记本上明文训练,一分钟不到就可以练到99%了,所以即使是MNIST训练这么简单的需求,加上带宽、延迟都很理想的LAN环境,其训练速度仍然可能慢于明文数十倍到百倍。在WAN环境下则更是一个batch需要几十秒甚至几分钟,与明文差距千倍以上。

    总结

    本次测评主要为了给读者建立一个印象:目前最优的 MPC 性能水位在哪?为了解答这个问题,我们从安全三方计算出发,在特定硬件和网络环境下,基于高效的 TF-Encrypted 框架对各种常见的计算任务做出了性能评估。我们的性能测评均整合了学术界最优的算法实现,得益于TensorFlow网络调度的优势,WAN上的指标不少都超出了国际最好成果,但是也基本和它们处于同一个数量级。一般而言,同等硬件配置下,如果某些工作声称的性能优于前述性能一个数量级以上,那么可以认为这个数据有待商榷,除非能提供高质量论文做进一步讨论和判别。欢迎业界对上述benchmark以及 TF-Encrypted 库做出指正、贡献,也期待业界制作基于其他隐私计算方案(如联邦学习、可信执行环境)的benchmark。

    参考文献

    [1] P. Mohassel and P. Rindal, “ABY3: A Mixed Protocol Framework for Machine Learning,” in Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, 2018, pp. 35–52. 

    [2] M. Keller and K. Sun, “Secure Quantized Training for Deep Learning,” arXiv:2107.00501 [cs], Jul. 2021, Accessed: Apr. 14, 2022. [Online]. Available: http://arxiv.org/abs/2107.00501 

    [3] A. Dalskov, D. Escudero, and M. Keller, “Secure Evaluation of Quantized Neural Networks,” Proceedings on Privacy Enhancing Technologies, vol. 2020, no. 4, pp. 355–375. 

    [4] N. Kumar, M. Rathee, N. Chandran, D. Gupta, A. Rastogi, and R. Sharma, “CrypTFlow: Secure TensorFlow Inference,” in 2020 IEEE Symposium on Security and Privacy (SP), May 2020, pp. 336–353.

    [5] M. Keller, “A Note on Our Submission to Track 4 of iDASH 2019” https://arxiv.org/abs/1910.11680

    申明:文章属原创内容,如转载需注明来自开放隐私计算公众号

  • 相关阅读:
    [Open JDK-11 源码解析系列]-3-JDK9到JDK11的新增的语法变化
    【freeRTOS】操作系统之三-信号量
    集线器和交换机
    【JS】公共鼠标滚动事件(从下进入,从上进入),可vue做指令使用
    分享实时股票python接口的部分功能运行过程
    测评补单:Temu卖家的市场攻略,轻松吸引更多流量和转化!
    【如何学习CAN总线测试】——CAN物理层测试
    通关GO语言13 参数传递:值、引用及指针之间的区别?
    backtrace输出任意线程栈信息
    计算机毕业设计Java成人自考信息与推荐系统录屏(源码+系统+mysql数据库+lw文档)
  • 原文地址:https://blog.csdn.net/OpenMpc/article/details/126518012