继上次维护集群之后,目前集群的状态是
1. 系统版本:CentOS Linux release 7.6.1810 (Core)
2. 内核版本:3.10.0-957.10.1.el7.x86_64
3. python版本:2.7.5,3.6.6
4. gcc版本:默认4.8.5,在/usr/下,编译安装gcc5.4.0,装在/usr/local下
5. cuda, driver版本:cuda10.1, driver 418.56
6. cudnn版本:7.5
7. nccl版本:/usr/local/nccl_2.4.2,/usr/local/nccl_2.3.7,添加了/usr/local/nccl软连接,只需要修改软连接即可切换版本
8. openmpi版本:/usr/local/openmpi-3.1.2, /usr/lcoal/openmpi-4.0.1,同样添加了软连接/usr/local/openmpi
9. libcublas.so.10.1在/usr/lib64下
因为pip安装的tensorflow-gpu默认是在cuda9.0+gcc4.8的环境下编译,因此虽然能够直接用pip安装并运行,但只使用cpu做训练,因此尝试编译安装tensorflow和horovod,以适配本地环境
编译安装tensorflow1.14.1
大体上参照build with source
$ pip3 install -U six numpy wheel setuptools mock future>=0.17.1
$ pip3 install -U keras_applications==1.0.6 --no-deps
$ pip3 install -U keras_preprocessing==1.0.5 --no-deps
#安装bazel,可从bazel github releases上下载相应版本的.sh文件进行安装,这里使用0.24.1
$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow
$ git checkout r1.14 #这里千万不要在master分支,虽然目前master分支编译出来也是1.14,但是使用时会报错fatal error: tensorflow/core/framework/op.h: No such file or directory
$ ./configure #with cuda
$ bazel build --config=opt --config=cuda --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" //tensorflow/tools/pip_package:build_pip_package #用时1小时左右
$ ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg #生成.whl包
$ pip3 install /tmp/tensorflow_pkg/tensorflow-version-tags.whl
编译安装horovod0.16.1
$ cd horovod
$ git tag -n
$ git checkout r0.16.1
$ pip3 uninstall -y horovod
$ rm -rf ./dist
$ python3 setup.py sdist
$ HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITHOUT_PYTORCH=1 HOROVOD_WITHOUT_MXNET=1 HOROVOD_NCCL_HOME=/usr/local/nccl HOROVOD_GPU_ALLREDUCE=NCCL pip3 install dist/horovod-0.16.1.tar.gz