[小白向][联邦学习]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]

希望这篇文章能帮到同样踩坑的朋友们~

参考

  1. ^abOpenMined/PySyft //github.com/OpenMined/PySyft
  2. ^当前(2021年5月21日)稳定版本为0.3.0,而在0.5.2r2先行版(5月14日)中增加了对torch1.8.1的支持 //github.com/OpenMined/PySyft/releases/tag/0.5.0rc2
  3. ^//github.com/OpenMined/PySyft#version-support
  4. ^Failed to import syft #5370 //github.com/OpenMined/PySyft/issues/5370
  5. ^这不是挖坑么,之前推广的那么多教程都白写了……
  6. ^PySyft/syft/examples/api/start.ipynb //github.com/OpenMined/PySyft/blob/dev/packages/syft/examples/api/start.ipynb