任务描述
成功安装了mxnet后,我的目标就是:调用mxnet已经写好的目标检测方法,调整数据集训练模型,如:SSD,Faster-RCNN,YOLOv3。进入Mxnet的官网,选择GlounCV Toolkit,下面有好东西。
选择你想要的用的模型,如SSD,将.py文件下载下来,如下图:
根据文档的指导,首先要准备好数据集,根据文档的指导就行了。当然有一个问题还是避之不及,windows上能跑嘛?
Windows杀手:horovod
其实前面写了那么多都是为了预热,为了不熟悉mxnet的伙伴们指点一下道路。那么在数据准备完毕后,执行指令:python train_ssd.py,就报错了:No module horovod。于是简单粗暴的解决:pip install horovod,出现在面前的是满是红字的错误,经过1个小时的排查,得出解决方案:Windows真的不支持,于是装了双系统。
装双系统也是常规操作了,虽然这件事我拖了半年。最后装了ubuntu18.04,装完后,不用猜都知道是黑屏,进不去,卡机。那么我这次的解决方案也很常规,添加:nomodeset,看到这个单词,伙伴们应该很熟悉,就不多解释了,文末会给这方面问题解决的参考链接。
终于开机了,那就是装驱动,cuda,Anaconda,中间也有不少坑,但是都是必备的坑,装过的人都很熟悉,一一解决即可。那么,换成Linux,问题就解决了吗?答案是:NO,这只是开始
难受的Horovod
由于自己写的深度学习模型都是单GPU,所以对分布式不是很关注,那么horovod的安装流程就完全没接触过,因此出了一大堆错误。我主要的错误就是:未安装NCCL。若是想要深度学习环境,那么就必须要安装NCCL,所以大家在装horovod之前,必须装NCCL,否则在跑程序的时候,import horovod.mxnet就会报错。
装NCCL遇到了一个恶心的问题:错误:file:/var/nccl-repo-2.4.8-ga-cuda10.0 Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY F60F4B3D7FA2AF80,这个问题会导致sudo apt update无法正常进行,那么NCCL也无法正常安装。解决办法如下:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv F60F4B3D7FA2AF8
这个可以解决密钥缺失的问题,之后再执行sudo apt update即可。
Open MPI
NCCL安装完毕之后,就是Open MPI的安装,如果这个不装,那么装horovod就会一直报恶心的错误:mccxx.bat文件缺失, 所以说,一定要安装Open MPI,安装方法就去艘Open MPI,根据官网的教程来就行了。
再见Horovod
当所有的依赖都安装完毕:NCCL,Open MPI,那么你的horovod就可以正常安装了,为了不要过多琐碎的操作,建议在安装了mxnet的环境下直接:pip install horovod,OK,一切顺利。
总结一下,为了这个horovod,我装了双系统,解决一堆环境Bug之后,又掉入Open MPI和NCCL的坑。后悔没有认真看horovod的官方要求。现在我的机子正在边冒黑烟边跑Faster-RCNN,感觉无比畅快。文章末尾我会放几个非常有用的链接,供同样入坑的小伙伴参考。最后放张图庆祝自己的胜利啦
参考链接
horovod官网:https://github.com/horovod/horovod
horovod在GPU上配置:https://github.com/horovod/horovod/blob/master/docs/gpus.rst
NCCL:https://developer.nvidia.com/nccl
如何安装horovod:https://zhuanlan.zhihu.com/p/63158504
公共密钥的问题:https://www.jianshu.com/p/7f04a4448634
import horovod.mxnet报错官方解答1:https://github.com/horovod/horovod/issues/823
import horovod.mxnet报错官方解答2:https://github.com/horovod/horovod/issues/827
备注:本文为作者原创,转载需注明出处