最近研究poly-encoder ,用的是pytorch 进行的开发。在代码优化时,调研到torch本身的DataParallel实现,在效率上不如distributedDataParallel 和horovod 。horovod进行了代码的封装,比较简单。
直接开始了无脑安装,pip3 install horovod ,结果好几页红的错误,只能依稀看见“ERROR: Failed building wheel for horovod ” 了。完全无从下手,也没有资料。
最后还是看了官方的安装说明, If you installed PyTorch from PyPI, make sure that the g++-4.9 or above is installed。If you installed TensorFlow from PyPI, make sure that the g++-4.8.5 or g++-4.9 is installed。
发现,是gcc版本低导致的。于是进行升级,采用的是比较省心的办法。安装+source后,虽然显示的gcc版本变了,但还是会报错。实际source 只对本次会话有效,猜测是在horovod编译过程中,并未生效。因此,需要修改默认的gcc版本。不用修改~/.bashrc ,软连接到最新版本即可。
mv /usr/bin/gcc /usr/bin/gcc-old
ln -s /opt/rh/devtoolset-7/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-old
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
另,之所以没有猜测是openmpi等问题,是因为我的机器上已经安装了python2+horovod。
参考:https://juejin.im/post/6844903873111392263
https://www.cnblogs.com/jixiaohua/p/11732225.html
https://github.com/horovod/horovod#install