雷锋网|星云 Clustar 首席科学家胡水海:GPU 在联邦机器学习中的探索( 二 )


比如Paillier算法是加法同态 , 只支持密文跟密文相加 。 而著名的RSA算法则是乘法同态 , 支持密文跟密文相乘 。 具体的原理就不详细展开了 , 大家可以参考相关论文 。 值得一提的是 , 同态加密虽然能够让联邦学习保护用户隐私 , 但它其实也为联邦学习带来了很大的技术挑战 , 这一点从与传统机器学习方法的对比中能够清晰看到 。

雷锋网|星云 Clustar 首席科学家胡水海:GPU 在联邦机器学习中的探索
本文插图

首先 , 传统机器学习一般使用的是32-bit的基本运算 , 这些基本运算一般都有芯片指令的直接支持 , 而联邦学习中的Paillier/RSA算法依赖的是1024或2048-bit甚至更长的大整数运算 , 且这些运算是模幂、模乘等复杂运算;其次 , 在分布式计算时 , 传统机器学习参数聚合使用内网传输 , 而联邦学习因为涉及不同的参与方 , 这些参与方可能位于不同的城市 , 所以联邦学习是使用广域网进行传输 。
另一方面 , 从数据传输的角度来看 , 联邦学习对运算位数多要求1024或2048-bit , 所以传输密文数据体积比传统机器学习增加几十倍;因为联邦学习要求多次迭代 , 所以数据传输的次数也是传统机器学习的几倍 。

雷锋网|星云 Clustar 首席科学家胡水海:GPU 在联邦机器学习中的探索
本文插图

总的算起来 , 如上图所示 , 联邦学习的部分同态计算的计算量是明文计算量上百倍 , 联邦学习的数据传输总量也比传统机器学习大100到1000倍 。 如果使用全同态的话 , 其计算量会是明文计算的上万倍 。 也正是基于这个原因 , 当前的联邦学习解决方案多采用部分同态加密 。 面临计算和传输方面的挑战 , 我们做了许多有价值的技术探索 。

雷锋网|星云 Clustar 首席科学家胡水海:GPU 在联邦机器学习中的探索
本文插图

第一个探索是使用GPU来加速联邦学习计算 。 如上图 , 我们首先进行四个观察方向的可行性分析 , 第一个观察数据加解密及密态计算 , 不同数据的计算其实并不存在很大的关联性 , 因此计算是高度并行的 。 而GPU正好适合加速高度并行的计算任务 。
第二个观察是联邦学习很多计算公式其实本身并不复杂 , 但重复执行次数巨大 。 举例而言 , 联邦学习需要经常运行A的B次方这种幂计算 , 而A和B往往是1024比特甚至更长的数字 。 所以 , 即使是简单的公式 , 但是重复运算的次数非常多 , 而GPU正好适合加速这种重复的轻量级计算 。
第三个观察是在联邦学习里 , 数据IO时间占比非常少 , 可能不到计算时间的0.1% , 这说明联邦学习符合计算密集型的任务 , 而GPU适合加速计算密集型任务 。 第四个观察是联邦学习里训练模型的数据通常是以批量形式的产生为主 , 符合大数据的特征 , 而GPU正好适合加速海量数据的批量计算 。
GPU加速联邦学习计算的挑战和解决方案

雷锋网|星云 Clustar 首席科学家胡水海:GPU 在联邦机器学习中的探索
本文插图

上述四个观察虽然确定了GPU能够加速联邦计算的方向 , 但同时也提出了三个挑战 。 第一个挑战是联邦学习计算需要做2048-bit大整数运算 , 而GPU流处理器不直接支持大整数运算;第二个挑战是联邦学习计算涉及大量的模幂运算 , 而GPU做除法或者模幂运算的代价非常大;第三个挑战是联邦学习计算需要缓存大量中间计算结果 , 而由于成本和能耗的限制 , GPU显存非常有限 。

雷锋网|星云 Clustar 首席科学家胡水海:GPU 在联邦机器学习中的探索
本文插图

针对三个挑战 , 我们提出了三个解决方案 。 第一个方案是基于分治思想做元素级并行 。 如图所示 , 以计算大整数乘法a*b为例 , 首先我们将N比特位长的大整数a和b分解成高位和低位两部分 , 分解之后其a和b以及a*b的表达式如图 。 仔细观察a*b的表达式 , 发现四个子项的计算不存在数据关联性 , 可以并行计算 。


推荐阅读