openmined社区开源的pysyft框架可以提供安全的联邦学习,有助于解决基于“不可见数据”的统计分析与建模开发。在PySyft中,syft是重要的张量,通过建立SyftTensor抽象类来表现张量链的运算或数据状态转换。如图5-7所示,张量链的结构中,本地张量类用SyftTensor表示,通过TorchTensor获得本地Torch接口,进而实现基于张量链的运算。
SyftTensor包含本地张量和指针张量,其中,本地张量是在TorchTensor上执行本地运算时,通过实例化TorchTensor自动被创建。例如,若multipy为要执行的运算,则本地torch命令native_multiply将在本地张量的头部执行;而指针张量在张量为远程虚拟工作节点worker时创建。在远程模式下,worker发出的张量链在运行中会对本地张量和指针张量产生关联影响。
从宏观角度来看,PySyft框架以指针和解释器为核心构建张量,对上为tools和worker;对下以pytorch为底层支撑,通过pytorch hook进行张量拓展,最终实现联邦学习、差分隐私、安全多方计算和同态加密等加密计算方式的模型训练与隐私数据保护的解耦。
企业级联邦学习系统构建的步骤主要为:
- 选择联邦学习底层框架→pytorch
- 确定联邦网络机制→pysyft
- 建立中央服务
- 设计客户端系统
- 启动训练过程
- 建立模型管理系统
- 阐明系统的隐私和安全性
根据以上步骤,我们可以在实践中考虑采用pysyft的P2P平台----PyGrid,利用PyGrid提供的网关功能,为节点与数据提供像DNS服务一样的路由服务,实现联邦学习和数据科学探索。