[小白向][联邦学习]Pysyft框架(0.3.0)安装踩坑说明
- 2021 年 5 月 25 日
- AI
根据PySyft源码分析 隐私深度学习基础笔记 和《深入浅出联邦学习(原理与实践)》介绍。
我们会知道 Pysyft[1] 是一个面向隐私保护的通用型框架,它允许多个拥有数据集的计算节点进行联合训练,结合使用安全多方计算、同态加密和差分隐私技术,保证训练过程中的模型不会受到逆向工程攻击。
它使用Python,且能支持Pytorch,TensorFlow和Keras等主流深度学习框架,具有远程执行、差分隐私和安全多方计算等功能。
但在安装的过程中遇到了各种问题,小鱼大概走了其中的6个支线,然后触发了各种问题。
现在针对相关报错,给出解决方案,提供一个经过多次安装验证没问题的安装方案。
安装方案:
前置需求:
需要安装了 conda
环境管理工具,可以通过安装 miniconda
或者 Anaconda
实现。
安装流程:
根据官网[1]推荐的流程做了一些修改(改变Python版本为3.7)。
conda create -n pysyft python=3.7
conda activate pysyft
conda install jupyter notebook
pip install syft
安装完毕后,在Python环境中尝试加载syft,但根据 Pysyft 0.3.0 版本,会出现
报错AttributeError: type object ‘Tensor’ has no attribute ‘fft’。

经 @芝士yan 的研究和我的调研后,会发现是 Pysyft 0.3.0[2] 和 其默认安装的 torch 1.8.1 不兼容[3][4]。那么处理方法就是将torch降级为1.8.0及以下版本。
如果需要使用CUDA
pip install torch===1.7.0 torchvision===0.8.1 torchaudio===0.7.0 -f //download.pytorch.org/whl/torch_stable.html
如果无需使用CUDA
pip install torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio===0.7.0 -f //download.pytorch.org/whl/torch_stable.html
经过这个处理后,降级成功

然后会发现 syft 可以在 Python 中进行调用了:

读到这里的读者会发现,在 Pysyft(0.3.0及更高版本)中调用网上广为流传的相关教程(比如:PySyft源码分析,最新的出版书籍),都会出现不存在相关函数的现象。
感谢 @lokinko 的帮助,我知道了这是因为 Pysyft 修改了相关函数API命名,需要参考最新的介绍文档进行调用[5][6]。
希望这篇文章能帮到同样踩坑的朋友们~
参考
- ^abOpenMined/PySyft //github.com/OpenMined/PySyft
- ^当前(2021年5月21日)稳定版本为0.3.0,而在0.5.2r2先行版(5月14日)中增加了对torch1.8.1的支持 //github.com/OpenMined/PySyft/releases/tag/0.5.0rc2
- ^//github.com/OpenMined/PySyft#version-support
- ^Failed to import syft #5370 //github.com/OpenMined/PySyft/issues/5370
- ^这不是挖坑么,之前推广的那么多教程都白写了……
- ^PySyft/syft/examples/api/start.ipynb //github.com/OpenMined/PySyft/blob/dev/packages/syft/examples/api/start.ipynb