上周六开展的杭州站meetup专场中,在互动答疑环节,小伙们热情高涨,和嘉宾及隐语社区团队同学进行了深入的沟通探讨。但由于时间问题,部分问题未能当场解答,对此小助手进行了收集整理,在此统一回复,希望大家有所收获。错过直播的小伙伴,可以先回顾下「Meetup精华内容合集」附视频
问题1:如何基于隐语平台自定义隐私求交或隐匿查询算法?隐私求交和隐匿查询算法是否有使用spu设备的必要?解答:
原则上PSI和PIR算法作为专有协议确实可以不依赖spu,之前考虑是简化repo数角度,未来确实会针对这类基础专有协议算法开设一个新的repo。目前的设计中,在spu开发完新的psi协议后,可以在spu代码库中的psi.proto和bucket_psi中添加对新协议的支持,目前spu对secretflow提供的psi协议,都是以bucket_psi作为入口。
隐匿查询目前只有spu 的c++实现,还没有添加到secretflow中,后续会添加相应的功能。隐私求交和隐匿查询相对独立,只是通过spu设备暴露接口,和spu中mpc算子关系不大。secretflow中执行PSI协议时,在不同的任务节点拉起任务。
问题2:labeled psi技术原理及应用解答:labeled psi的原理相对简单,客户端发送加密的数据给服务端,服务端通过同态运算计算插值多项式的密文值发送给客户端,客户端解密后判断是否为0,判定是否在交集。里面的技术难点是如何通过降低插值多项式的次数,避免过多的同态密文乘法,防止误差过大不能解密。
labeled psi有两种模式:1.不带labeled的模式,可以用作unbalanced psi2.带labeled的模式,可以用作keyword pir.
问题3:隐私计算在软件层面其实非常依赖网络带宽资源,在系统层面计算得再快,带宽跟不不上的话,整体计算效率还是低?想了解下隐语在这一块的优化和实践。解答:
目前,SPU的通信主要依赖brpc,目前对通信性能的优化并不多。目前的优化主要是算子内部/算子之间的调度,确保通信之间/通信和计算之间可以并行以提升整体的效率。
另外在针对低带宽的网络环境下,我们对部分算法也做了优化,比如相比别的算法,ECDH-PSI算法在低带宽下有更好的性能表现。
问题4:隐语有哪些自研的秘密分享方案及相关高级运算协议?隐语如何集成第三方加密算法和多方安全计算协议?解答:1.隐语目前没有自研的MPC协议,我们实现了ABY3,cheetah等SOTA协议,不过隐语在一些算法上有一些自研的优化,比如HESS-LR算法等,相关论文也在顶会上发表。2.集成第三方协议和加密算法是隐语SPU重点考虑的方向,我们目前的思路是:做好MPC domain specific的编译器和运行时,并将安全无关的逻辑(比如Tensor计算,小数计算)进行高效的实现,留给密码学研究者一个相对简洁的接口,使得新加入协议只用实现基本的加乘与或就链接上层的机器学习或者SQL框架。我们正在进行代码重构,后续会有文档介绍如何增加新的协议。
问题5:SPU密文设备貌似不支持多机分布式加速,后续有支持的计划吗,可以说说思路吗? 解答:目前暂无计划。原因是MPC计算的通信和计算开销比较大,在生产环节中通信会占重要部分,计算节点的分布式可能会恶化通信开销。
问题6:请问隐语在MPC方面主要以server代理模式为主吗?在同态HE硬件加速这一块有哪些部署?解答:隐语MPC 实现与部署分离,同一份代码既可以用代理模式(Outsorcing)部署,也可以用Colocated 模式部署,或者两者混合。实际选用哪种模式都可以,并没有以谁为主。HE 硬件加速以合作伙伴研发为主,目前已经展开基于 GPU、FPGA,Intel QAT 的 PHE 加速工作,即将启动 FHE 的加速工作,敬请关注。
问题7:
隐语中半同态、全同态最新的协议实现?硬件加速、ppml应用性能?解答:截止到目前,半同态支持了 Paillier、OU 算法,3月份会支持 EC-Elgamal 算法,全同态能力预计23年7月后对外开放,计划支持 bfv,ckks,tfhe 算法。硬件加速和 PPML 应用性能我们在持续打磨中,今后我们会不定期发布 benchmark 白皮书,敬请关注。
问题8:同态技术的开源规划,是否有针对应用场景的半同态应用实现?是否有全同态加密技术还有硬件加速方面的开源规划? 解答:我们目前同时在展开 PHE 和 FHE 的研发工作,PHE 方面已经开源 Paillier,本月(2月)会开源 OU,3月开源 EC-Elgamal;FHE 计划7月后开源,预计支持 bfv,ckks,tfhe 算法。PHE 实际应用的算子有:WOE,HESS-LR,HESS-XGB(以上已开源),以及3月即将开源的 SecureBoost。硬件加速方面我们有不少合作单位正在研发中,有成果后会尽快发布。
问题9:对于heu的规划路线比较感兴趣,不知道是如何规划的,还是和mpc一样采用XLA的形式进行转化吗?以及目前看起来还只有paillier算法进行了比较丰富的支持,全同态加密算法似乎还比较欠缺。如果用XLA的算法的话,是准备用FBS还是多项式拟合来做非多项式函数?解答:
HEU 当前以 PHE 算法为主,已经开源了 Paillier,并且马上会开源 OU 和 EC Elgamal;FHE 能力内部正在研发中,预计7月左右对外提供。至于 HEU 的 compiler 方案当前还在早期调研阶段,未来(预计24年)也会向 mpc 一样引入 compiler 转换用户 DAG 图,XLA 是候选方案之一,底层非多项式计算主要考虑2种方案:基于 TFHE 的单比特加密方案以及同态查找表方案
问题10:
对于交叉隐私计算技术的场景,隐语是否可以实现,如使用半同态加密生成秘密分享所需的乘法三元组,psi和同态加密的结合。解答:
隐语spu库中的sealPIR和labeled PSI底层都是使用的同态密码,其他方案中google的private join and compute也是psi和加法同态加密的结合。
问题11:隐语的深度学习模型调用GPU与Pytorch和tensorflow的异同点在哪里,是否实现了兼容。解答:目前隐语对TensorFlow和PyTorch的支持是原生的,并没有任何修改,因此对GPU的支持也是遵循TensorFlow和PyTorch的原生做法。比如TensorFlow在支持GPU的环境下会自动使用GPU,隐语也是如此。而对于PyTorch,需要用户手动指定tensor使用GPU,因此需要用户手动感知这件事,这个在隐语也是一样的,目前隐语提供的SLModel还没有封装PyTorch GPU Tensor(默认实现是普通tensor),这一块后续会开发,欢迎社区共建。
问题12:如何解决联邦学习中各个客户端硬件差异和数据分布及数据量带来的模型训练和收敛速度缓慢的问题解答:
客户端差异导致的数据Noniid问题是联邦学习主要的challenge之一,目前主要的解决方法主要有: 数据融合减少noniid的程度,优化模型聚合算法提高对数据异质的鲁棒性,优化client本地更新算法,提高模型的个性化表征能力等等。