《A generic framework for privacy preserving deep learning》
0.摘要
syft是一个隐私保护的深度学习框架,核心的操作基于命令链和tensor。支持FL、MPC和差分隐私DP。
1.创新点
- 在worker之间建立了标准的通信协议
- 使用tensor链模型有效的override操作
- 实现了DP和MPC
2.抽象的tensor运算标准框架
2.1链结构
构成:用图一所示的操作链来实现tensor的转换和分发给其他worker,每一种tensor操作都用链中特殊的子类实现。链上的节点称为 SyftTensor,每个 SyftTensor表示数据的状态或者转换等操作,多个 SyftTensor连在一起构成操作链。链的头节点称为 PyTorch tensor,所有的操作都是从头节点开始,链中上面的节点是下面节点的父节点,下面节点是上面节点的子节点,节点之间是父子关系。
-
两个重要的节点:LocalTensor 和PointerTensor
- LocalTensor是在 Torch tensor实例化的时候自动创建的,作用是在torch tensor上执行与重载操作对应的native操作,例如,要执行加法操作时,LocalTensor会在head tensor上执行native_add操作,LocalTensor的子节点可以是头节点,这样构成了循环链,降低了新建子节点的性能开销。
- PointerTensor 是在tensor被发送出去的时候创建的。整个链被发送到了远程worker,原来的链被拥有两个节点的新链取代,一个是空的tensor节点,一个是用来区分数据方和合作方的PointerTensor节点,这个节点没有子节点。
2.2虚拟worker
多个虚拟worker存在于同一个物理机器,彼此之间不通过网络通信,他们仅仅复制命令链,并展示与实际worker完全相同的接口用来彼此通信。
FL在这个框架中有两种实现方式,一种是建立在plain网络socket上的;另一种建立在web socket上;后者允许多个worker在浏览器中实例化,每个worker都在自己的标签页中。