欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[pysyft-001]联邦学习pysyft从入门到精通--安装

程序员文章站 2022-07-14 13:32:43
...

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]

#注意,如果有问题,使用豆瓣源,也就是
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

然后重新运行即可。
 

相关标签: 联邦学习 pysyft