1.github库地址
https://github.com/OpenMined/PySyft
2.论文
https://arxiv.org/pdf/1811.04017.pdf
A generic framework for privacy preserving deep learning
3.安装
在centos上安装。
先安装conda,然后再创建pysyft环境。
4.安装conda
wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
bash Anaconda3-2019.03-Linux-x86_64.sh
yum install bzip2.x86_64 -y
安装路径是 /root/anaconda3
安装会修改/root/.bashrc文件内容
modified /root/.bashrc
5. 启动conda环境
source /root/.bashrc
6.在conda安装pysyft
创建py3-syft环境
conda create -n py3-syft python=3.7 --yes
conda activate py3-syft
conda install jupyter notebook
pip install syft[udacity] scikit-learn
#注意,如果有问题,使用豆瓣源,也就是
pip install syft[udacity] -i https://pypi.doubanio.com/simple/
7.第一个测试程序
import syft as sy
from syft.frameworks.torch.pointers import PointerTensor
from syft.frameworks.torch.tensors.decorators import LoggingTensor
import sys
import torch
hook = sy.TorchHook(torch)
from torch.nn import Parameter
import torch.nn as nn
import torch.nn.functional as F
print(torch.tensor([1,2,3,4,5]))
x = torch.tensor([1,2,3,4,5])
print('x = ', x)
y = x+x
print('y = ', y)
#创建一个虚拟的联邦学习节点方,可以视为另一个公司。
#本地实验,因此用虚拟worker。
bob = sy.VirtualWorker(hook, id='bob')
print('bob = ', bob)
#准备数据,这些数据可以有本程序选择性地发给bob,fl计算的另一方
x = torch.tensor([1,2,3,4,5])
y = torch.tensor([1,1,1,1,1])
#先展示下bob的objs
print('bob._objects = ', bob._objects)
#把x和y发给bob
x_ptr = x.send(bob)
y_ptr = y.send(bob)
print('bob._objects = ', bob._objects, 'after send')
print('x_ptr = ', x_ptr)
print('y_ptr = ', y_ptr)
print('x_ptr.location = ', x_ptr.location)
print('x_ptr.owner = ', x_ptr.owner)
z = x_ptr + y_ptr
print('z = ', z)
print('bob._objects = ', bob._objects, 'after add')
注意,有些情况下,运行这个程序会报错,主要是一些包的__init__.py里没有导入合适的类
7.1 ImportError: cannot import name 'AbstractWorker' from 'syft.workers' (/home/xxxx/anaconda3/envs/py3-syft/lib/python3.7/site-packages/syft/workers/__init__.py)
修改这个__init__.py,增加一条语句
from .abstract import AbstractWorker
7.2 ImportError: cannot import name 'LoggingTensor' from 'syft.frameworks.torch.tensors.decorators' (/home/tanzhi/anaconda3/envs/py3-syft/lib/python3.7/site-packages/syft/frameworks/torch/tensors/decorators/__init__.py)
修改这个__init__.py,增加一条语句
from .logging import LoggingTensor
然后重新运行即可。