相关问题
1、首先我在设计Bert多卡预训练的过程中,第一想到的就是需要创建一个隔离环境,其实创建隔离环境有很多好处,尤其是在出现一些依赖关系或者版本是否支持这样的冲突的时候,他的相对优势就体现出来了,规避一些不必要的麻烦;
2、获取了一个干净的安装完cuda10.1 的 docker 镜像之后其实就是一些组件的安装了,例如:nccl、openmpi、horovod、gcc升级4+ --> 5+、cudnn 7(内部涉及了三个组件之间的依赖关系,参考安装链接:https://www.cnblogs.com/mingforyou/p/4118607.html)
- 此流程其实就是重点考验工程师,解决各种冲突的能力,如果您对自己解决问题的信心不足,坦率讲不建议亲自下场参与此步骤,否则您的晚节有可能不保,本人曾内心阶段性的崩溃。
- 屡了半天,终于屡明白了,bert在GPU上的多卡协同预训练是需要安装horovod,但是horovod在工作过程中内部是借助mpi实现的多进程协同作业,所以在安装horovod之前需要安装对应版本的openmpi;其次horovod在GPU上的安装和运行是需要nccl多卡通信框架的支持;而nccl的安装又需要5+版本的gcc支持;这就是我梳理出来的整体各个组件之间的关系。
- NCCL参考文档:
https://blog.csdn.net/c2250645962/article/details/121372995
https://docs.nvidia.com/deeplearning/nccl/install-guide/#down
- GCC参考文档:
https://www.cnblogs.com/mingforyou/p/4118607.html
- OPENMPI参考文档:
https://www.open-mpi.org/software/ompi/v3.1/
https://www.open-mpi.org/faq/?category=building#easy-build
- horovod参考文档:(此处我安装的是0.19.0版本)
https://github.com/horovod/horovod#install
https://github.com/horovod/horovod/blob/master/docs/tensorflow.rst
https://github.com/horovod/horovod/issues
3、关于bert预训练代码,我建议以上两组git代码
- multi-gpu部分代码
https://github.com/guotong1988/BERT-GPU.git
- bert 代码***
https://github.com/abditag2/bert
4、关于BERT多卡预训练的其他参考文档***
https://blog.csdn.net/woshiliulei0/article/details/103971652
5、其他相关教程
https://zhuanlan.zhihu.com/p/108984987