自PlatON白皮书2.0推出以来,在技术推进方面可谓“八卦”不断。首先是google官宣了与PlatON的合作《解读 | PlatON×Google Cloud,构建新一代基础设施》,然后是全面兼容以太坊测试网的上线。近期,又有好事者扒出了据说是团队内部的“偷拍”,《疑似PlatON全新产品?感觉在搞大事》。由于笔者属于比较喜欢“钻研”的吃瓜群众,所以忍不住又继续深层次的扒了一扒,结果发现确实有料。
从Metis扒起
那就先从被好事者爆料出来的Metis扒起。
首先回顾下白皮书2.0中官方发布的总体技术架构,从中可以看到“隐私计算网络Metis”,所处的层次是在基础层和隐私AI服务平台之间,属于一个“承上启下”的环节。基础层就是当前PlatON已经上线了的共识网络,隐私计算网络是构建在共识网络之上的Layer2,Metis对下与基础层直接相邻,将获取共识网络智能合约中的隐私计算任务,分发到隐私计算网络节点上调用相应的隐私计算基础设施来完成计算。同时对上为隐私AI服务平台提供隐私计算基础设施。
自从白皮书2.0发布后,实际上社区一直在通过各种渠道打听隐私计算、隐私AI方面的落地情况,也有不少小道消息传出来。Metis的github仓库被扒出来后,实际上提供了不少这方面的线索。
Metis github仓库的结构
从全局的角度看,内容大致可分为两部分:隐私计算网络部分、相关的管理平台部分。
管理平台
我们先来看管理平台部分:
-
Metis-Manager-Platform和Metis-Manager-Platform-web应该是隐私计算网络管理平台的前后端,去中心化系统的Layer2也是一个分布式网络,由众多隐私计算节点组成,那么推测Metis-Manager-Platform应该是一个管理这个网络的平台,能够在上面对Layer2的众多隐私计算节点进行管理,例如查看其在线状态、工作负荷;
-
Metis-Scan-Web很明显是一个类似区块链浏览器这样的工具,Metis-DateCenter是它的数据后台。
隐私计算网络
接下来是隐私计算网络部分,我们将深入到代码层面来稍作分析:
- 首先是Carrier,看代码推测是完成计算、数据服务的调度。具体的讲,是从PlatON共识网络的智能合约中,获取隐私计算任务,然后调用Rosetta隐私AI计算的基础设施,完成计算任务;
以上是Carrier中涉及到的计算服务事件定义,详见 event_type.go
。看起来Carrier会将 contract code
download下来,通过rosetta分配计算任务,详见 service.go
。
- 接下来是Metis-Fighter,它应该是一个计算、数据服务的代码库,也就是说,包含一些可复用的较为基础的算法组件。Fighter计算服务代码库中的算法将从上文提到的Carrier那里获取到计算任务,调用rosetta提供的基础设施来完成计算;以下是一个代码库中的算法实例,详见
Metis-Fighter\algorithms\logistic_regression\logistic_reg_train.py
;
Fighter的执行需要提前安装好latticex.rosetta:
以下是使用rosetta进行隐私数据处理的部分:
剩下的部分是使用tensorflow进行训练,这部分感兴趣的读者可自行查阅。
- 最后是Metis-Channel-sdk,隐私计算网络是一个网络,Layer2的节点想要共同完成隐私计算任务,网络通信肯定是必不可少的,在这个仓库的注释里面,明确的描述了这是“RosettaNet网络层sdk”,网络层的代码本身在此就不做详细分析了,比较有意思的是这个仓库里面的一个python写的测试用例:
网络组件这种基础设施,在对其进行测试的时候,一般情况下除了测试网络功能是否正常,还会放到应用场景里面去进行试验,这时候一般会做一个麻雀虽小,五脏俱全的完整对象来进行测试,我们在Metis-Channel-sdk仓库的测试用例就看到了这种情况:
逻辑非常的清晰,调用channel实现多个节点间的数据共享,rosetta实现隐私保护下的数据共享:
最后使用tensorflow做机器学习(非常简单的线性回归)的部分:
这个测试用例其实是比较有代表性得,具备一个隐私计算网络节点所执行的计算任务的全流程,在后续网络正式上线后,大家可以参照着来开发自定义的计算服务。
关于Rosetta
关于Rosetta的部分我们没有在Metis的github仓库里面看到,但是它是一个早就在LatticeX-Foundation的github仓库里开源的项目,其中包含了比较清晰的案例,在《矩阵元 | Rosetta如何连接隐私计算与AI?》中也有详细的介绍。
技术总结
接下来针对从github上扒出来的信息,我们用一张图来进行总结。
通过对Metis Network代码仓库中公开的内容大致分析后,基本上能够得出上图所示的技术架构。隐私计算网络的网络层由Metis-Channel提供对等的网络结构,Carrier是共识网络中的智能合约与隐私计算、隐私AI服务连接的桥梁,Fighter提供了具体的计算和数据服务,这些服务可以通过调用rosetta来保护数据隐私,受保护的数据可以无缝的利用tensorflow进行计算,从而应用于隐私AI服务平台。
从代码仓库中还可以看到,各个组件的 README
文档都提供了较为详细的用户安装、试用说明。能够看到各个组件在代码实施方面的推进工作开展的有条不紊,但依然需要注意的是,关于API使用的说明,相关文档介绍依然比较少,目前可以从测试用例中了解情况,同时整个网络如果能有一个从全局和用户使用角度来进行说明的文档就更好了,不过这也由此可见这次“好事者”的爆料官方显得有些措不及防。不过功能已经有了,后续补齐文档,使用户更容易上手,也只是一件非常顺理成章的事情了。
脑洞大开的技术推演
最后我们从上述提到的蛛丝马迹中,来做一个脑洞大开的技术推演。
仅从测试用例来看,目前rosetta实际上是完成了将数据进行隐私处理以后的数据结构,能够适配到tensorflow的计算图框架中,这样确实也能达到数据不离开其所有者的效果。我们在白皮书2.0的技术架构中看到了联邦学习,这是google在2016年提出的一种多点协同完成深度模型训练的工程框架,能够在数据不离开所有者的情况下完成训练,同时全局共享模型(这是关键),这项技术能够在“盲人摸象”的场景中,即使盲人摸到了大象的耳朵,也能判断出这是只大象,而不会像寓言故事里面那样说这是把扇子。这项技术google最早落地在了其输入法中(难怪这么好用),感兴趣的读者可参见《TensorFlow Federated:基于分散式数据的机器学习》。
联邦学习在提出的时候,尊重用户隐私安全就是一个非常核心的亮点,数据不离开其所有者确实也能达到一定的效果,但是却无法保证运行在用户数据之上的计算本身,没有做“多余”的事情。google federated learning的框架实际上是 import tensorflow_federated as tff
,笔者扒了下rosetta的源码,目前没有看到在直接使用这个框架。推测PlatON这边儿应该是选择了在联邦学习的过程中,利用MPC等隐私计算手段在每个轮次梯度聚合的环节发挥作用,这种方式能够从技术上保证数据对计算过程也是隐私的。说的直白点,Rosetta选择了从较为底层的环节入手。
Rosetta数据隐私保护在计算结果访问的环节如下所示(上文中已经提过了data sharing环节):
以及下图:
大概意思是,对于预测的结果,在通过rosetta SecureReveal
之前,都是在不可见的密文状态,而SecureReveal
是可以实现只有数据所有者授权以后,才能 Reveal
出来,这就是以前经常提到的,数据使用权和所有权分析,也可能是数据确权的具体落地。
做了这么多技术推演,实际上笔者是推测出了一个脑洞大开的结论,实际上PlatON前段时间公布的与google的合作,可能没有表面上看起来那么波澜不惊,也许某些合作点落在了隐私AI基础设施方面的一些技术领域,这些领域可能有较大的技术门槛,在没有完成技术突破并正式发布之前,双方可能都不愿意透露太多的细节。
总结
扒完上面这些内容后,笔者最大的感受,就是自从白皮书2.0发布到现在,隐私计算网络落地实施的进度走的非常稳。从公开的诸多细节上看,隐私计算网络应该已经接近能够在测试网上线的状态。同时隐私AI服务平台方面应该也与google搭上了线,从PlatON在隐私计算方面的诸多技术积累来看,推测可能会是比较深入的研究合作,后续熟悉tensorflow的开发者们可能将非常方便的接进来。
实际上,隐私计算、隐私AI,确实是技术门槛非常高的领域,官方也非常努力的在推进。总而言之,种种迹象表明,离隐私计算网络上线,应该确实不远了,让我们拭目以待!