Rosetta|矩阵元算法科学家谢翔:Rosetta如何连接隐私计算与AI?( 二 )


因此Rosetta具备以下特点:易用性 , 高效性和可扩展性 。
易用性 , 目前完全复用了TensorFlow接囗 。 在明文和密文写模型的时候 , TensorFlow的接囗是一样的 , 没有再变 。 极大地降低了AI工程师使用隐私计算技术的成本 。
高效性 , 完全兼容原生TensorFlow对数据流图自动执行的各种运行时优化 。 我们用C++来实现算法 , 能够保持底层算法的高效性 。 我们同时在跟业界的密码学家设计高效前沿的MPC技术 , 来适配机器学习或者深度学习的一些模型 。
可扩展性 , 因为在MPC领域算法和协议非常多 , 而且涉及不同的场景 , 可能用不同的算法会有更好的效果 。 如果有了新的算法过来 , Rosetta能够非常快速的集成到整个框架里面去 。
下面 , 我们举例说明一下:
这里有三个参与方 , A、B、C , 然后每个人都有一个矩阵Ma、Mb、Mc , 之后他们去计算Ma乘Mb乘Mc , 他们三个只能知道结果 , 中间的过程都不知道 。 在这样一个场景下 , 如何运用Rosetta来实现它呢?和TensorFlow明文使用的区别有两个 , 一个是import包和选择算法 , 一个是简单处理隐私输入 , 即需要把Rosetta包import进来 , 选择算法 , 然后定义隐私输入即可 。
Rosetta的架构如下:
Rosetta|矩阵元算法科学家谢翔:Rosetta如何连接隐私计算与AI?
文章图片

整体而言 , Rosetta的框架图如上图所示 , 它包括Python的前端APl , 这块是Rosetta方便用户使用而特色支持的 , 然后与TensorFlow的前后端做了适配 , 同时我们开发了一个统一的密码协议管理层 , 可以去适配不同的密码协议 。
我们的目标是既能够让懂密码学的开发者把现在的东西复用到整个框架里来 , 也能够让不懂密码学的AI开发者能够无门槛的或者非常低门槛的去使用隐私计算技术 , 相当于把密码学与机器学习 , 有机的结合起来 。 这就是Rosetta的目标 。
下面说一下Rosetta的架构 , 首先要讲TensorFlow架构 , TensorFlow架构简单地说就是一个图转化和一个图执行 。 我们充分利用了TensorFlow架构来进行密码适配 。
当TensorFlow把那个图变成下图左边标准的传统图时 , 我们去做了一个static pass , 把每一个操作全部都转成SecureOp , 这个统称是为了后面能够支持密码算法 。
Rosetta|矩阵元算法科学家谢翔:Rosetta如何连接隐私计算与AI?
文章图片

然后第二步就是图执行 , 图执行我们运用了dynamic pass , 左边的图就是刚才转化之后的图 , 然后当数据的时候 , 根据每一个这样的图 , dynamic pass可以动态去适配用某一类密码协议去执行这个图 。
我们能够充分运用TensorFlow框架 , 同时因为能够利用整个底层的密码算法 , dynamic pass也可充分利用TensorFlow这种optimizer之间的并行 , 可以让它跑得更快 。
Rosetta|矩阵元算法科学家谢翔:Rosetta如何连接隐私计算与AI?
文章图片

下面讲一个Rosetta在实际场景落地中的应用案例:金融场景下的应用 。 银行A与B , 他们各有各的数据 , 然后互联网公司C也有数据 , 大家希望能够通过Rosetta把模型建起来 , 比如说训练逻辑回归后 , 把风控模型训练出来 , 训练出一个更加高效的模型 。 同时保证abc各方数据都不会被对方拿到 , 这种场景下 , 用Rosetta解决问题非常简单 。
Rosetta|矩阵元算法科学家谢翔:Rosetta如何连接隐私计算与AI?
文章图片

如上图 , 把Rosetta import进来 , 然后选一个协议 , 然后选相应的输入 。 后面就是标准的用TensorFlow去回归 , 所以后面完全不需要有任何密码学背景 , 也可以完全写出来 。 在多数据融合的训练场景里 , 只要Rosetta一个包 , 然后把数据做一些处理 。 后面整个逻辑回归的代码书写 , 跟原来的是一模一样的 , 甚至可以把代码直接拷贝过来 。 这里有一个问题 , 我们用MPC的方式也就是密文的方式 , 它的精度与明文的方式有何区别?
Rosetta|矩阵元算法科学家谢翔:Rosetta如何连接隐私计算与AI?
文章图片

如上图 , 我们做了一个对比 , 大家可以看到几乎没有区别 , 基本等价了 , 所以在设计足够多的参数足够多的精度之后 , 完全可以保证整个模型的精度 。 当然还有一个场景就是所谓的模型预测服务 。
Rosetta|矩阵元算法科学家谢翔:Rosetta如何连接隐私计算与AI?
文章图片

最后讲一点 , Rosetta刚刚开始 , 目前已经开源了0.2.1版本 。 下面是GitHub链接:
https://github.com/LatticeX-Foundation/Rosetta
欢迎大家关注Rosetta , Rosetta还是“少年” , 我们还在不断补充功能和迭代优化 。
我们非常希望能够结交对架构设计和集成感兴趣的朋友们 , 或者针对其他框架 , 本身的开源也有优化想法的小伙伴们 , 大家一起参与进来 。


推荐阅读