使用anaconda安装pytorch+PySyft(适用于linux和windows环境)


由于最近看的一个FL示例代码使用的PySyft,按照网上教程草草地安装了一个,但是版本太高了,一些支持的方法都没有了,所以只好指定版本安装

步骤:

  1. 创建conda的虚拟环境,指定python版本为3.7
  2. 进入虚拟环境,安装pytorch(GPU / CPU版本)
  3. 安装PySyft(0.2.4版本)
  4. 重新安装PySyft的依赖

 

1.创建conda的虚拟环境,指定python版本为3.7

可以直接进入Anaconda里面创建环境

或 进入conda prompt,输入指令

conda create -n syftpy python=3.7 --yes

 

2.进入虚拟环境,安装pytorch(GPU / CPU版本)

在conda prompt 进入刚才创建的虚拟环境,安装适合你cuda版本的pytorch,我们安装1.4的版本(因为PySyft0.2.4要求Torch版本为1.4)

可以输入以下指令查看你的cuda版本:

nvcc --version

 更新conda的下载源

# 添加清华源的pytorch conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

可进入 该网页 查看pytorch下载命令,我们需要下载1.4的版本,可参考使用以下命令

conda activate syftpy # 进入虚拟环境 conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch # 下载cuda(10.1)版本pytorch  # conda install pytorch==1.4.0 torchvision==0.5.0 -c pytorch #下载CPU版本pytorch

 

3.安装PySyft(0.2.4版本)

pip3 install syft==0.2.4 --no-dependencies

 

 4.重新安装PySyft的依赖

# 安装以下依赖 pip install lz4~=3.0.2 msgpack~=1.0.0 phe~=1.4.0 scipy~=1.4.1 syft-proto~=0.2.5.a1 tblib~=1.6.0 websocket-client~=0.57.0 
pip install websockets~=8.1.0 zstd~=1.4.4.0 Flask~=1.1.1 tornado==4.5.3 flask-socketio~=4.2.1 lz4~=3.0.2 Pillow~=6.2.2

pip install requests~=2.22.0 numpy~=1.18.1

 会报错:

 

 

 嗯,好大一堆错,不过没关系,纠正错误就行

安装下面的依赖

pip install tblib~=1.6.0

虽然安装成功,但是会报错:

 

 

错误说明:Syft需要安装的没安装,需要的低版本咱安装成了高版本(这个不能赖我,这是torch在安装的时候自动安装的高版本依赖)

所以,按照红色说明,把没安装的安装:pip install xxx,这个xxx就和报错需要安装的一模一样,直接粘贴就行

高版本的卸载(pip uninstall xxx)再重新安装指定版本

直到你安装结束没有红色错误提示

 

执行下面的代码,测试你的PySyft是否可用:

import syft as sy import torch import sys from torch.nn import Parameter import torch.nn as nn import torch.nn.functional as F hook = sy.TorchHook(torch) print(hook) 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) bob = sy.VirtualWorker(hook, id='bob') print('bob = ', bob) x = torch.tensor([1,2,3,4,5]) y = torch.tensor([1,1,1,1,1]) #先展示下bob的objs print('bob._objects = ', bob._objects) 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')

 

参考内容:

联邦学习小系统搭建和测试(PySyft + Raspberry Pi 4)

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM