使用anaconda安装pytorch+PySyft(适用于linux和windows环境)
由于最近看的一个FL示例代码使用的PySyft,按照网上教程草草地安装了一个,但是版本太高了,一些支持的方法都没有了,所以只好指定版本安装
步骤:
- 创建conda的虚拟环境,指定python版本为3.7
- 进入虚拟环境,安装pytorch(GPU / CPU版本)
- 安装PySyft(0.2.4版本)
- 重新安装PySyft的依赖
1.创建conda的虚拟环境,指定python版本为3.7
可以直接进入Anaconda里面创建环境
或 进入conda prompt,输入指令
1 | 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版本:
1 | 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版本)
1 | pip3 install syft = = 0.2 . 4 - - no - dependencies |
4.重新安装PySyft的依赖
1 2 | # 安装以下依赖 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')
参考内容:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具