最近老师推荐了一个联邦学习平台,是何朝阳团队开发的FedML。
FedML
最近三天一直在弄安装这个平台的事情,记录一下出过的问题。
我是windows10,用conda按官方的里的步骤装的 conda安装FedML步骤
最后运行测试代码,验证安装好没
import fedml
if __name__ == "__main__":
fedml.run_simulation()
第一天按步骤安装完之后发现装的是python3.1,在pycharm里没法用,于是在cmd里用pip重新安装了python3.7,运行之后发现numpy版本又不对,于是把numpy版本换成1.21,随之而来的就torch,matplotlib,torchvision等包的版本都出现问题。运行测试代码报诸如此类的错:
第二天一整天又在配环境,调整各种包的版本,最后调完之后能运行了,但还是会报一个有关numpy的UserWarning,大概意思就是我在程序里好像重复调用了两次Numpy,我就想解决这个问题,想换一个Numpy的版本(当时不知道这个行为究竟会带来多大的影响),不知道为什么,用pip安装Numpy指定版本没装好,我又把numpy卸载了想重装,更没想到卸载也失败了(在这个过程中可能删除或者弄坏了什么包),然后又陷入了不断更新包的过程,最后我决定直接卸了FedML重新再装一次。
第三天重新下载,神奇的是还是一样的步骤,但这次居然装的是python3.6,所以没再出现过版本不对应的情况,第三天比较顺利,基本都是自动安装,但有的包会安装失败,这时候我就去下载对应的whl文件,然后用pip进行安装。最后一个难到我的错是这个:
我一开始关注的是那个error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools,点进去网址404,我就到处下载这个软件,可是最后找到安装的时候显示安装包已损坏,我又去看各种教程,但结果都没用,后来看到这个帖子Microsoft Visual C++ 14.0 is required解决方法和安装包损坏解决方案!第一个解决方法试了,没有用,第二个解决方法提醒了我,是不是还是某些包下载出了问题,我就返回去查看错误,发现了这个:
突然意识到可能是gensim包装失败了,我就去下载对应的whl文件,果然问题解决。
测试结果:
至此,安装结束。
总结:
此次安装过程中我一共试了三次,第一次卡在torch包出错,第二次卡在解决userwarring时弄乱了环境,第三次才成功。起初我并没有意识到报错只是因为包的版本不对应,头一个错是numpy的,我到处找解决方案,多数解决方案需要改代码,我潜意识里觉得不太对,总感觉FedML提供的代码应该是完备的。看见一个方案说版本的问题,我试了一下果然能解决。后来的问题全部都是包版本或者安不上,报出错也各不相同,我拿到错的第一想法都没有从版本问题考虑。这是第一次意识到版本对应究竟多么重要。