华为云GPU-T4 搭建分布式tensorflow
本文所有环境均手动装,没有用镜像
1. 准备所有用到的包
python
cuda
cudnn
tensorflow
2. 装python
这里是指原环境为2.7,但是我们要3.6
参考https://www.cnblogs.com/ilovepython/p/11068845.html这个帖子,完美安装
3.装cuda和cudnn
参考https://www.jianshu.com/p/a201b91b3d96
装完环境里一定要写export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
4.装tensorflow
下载合适的版本pip3 install 即可
这里出现了问题,pip提示需要更新,但是用建议的代码更新完会出现问题,这是因为最新的pip不支持python2.7,需要升级到之前的版本
python3 -m pip install --user --upgrade pip==20.0.2
grpc插件安装失败:Failed building wheel for grpcio,直接升级pip就ok
安装tensorflow后检查一下:
python3 -c 'import tensorflow as tf; print(tf.__version__)'
5.分布式间通信地址
用私有ip即可,不用ssh
============================================问题记录==================================================
1. 分布式tensorflow中worker实际跑停了,但是ps不知道。
一开始我直接关闭终端,但是发现这样时间长了,ps是无法创建grpc通信,
只能ps -ef查看ps上启动的服务id,然后kill id,worker上也可以这样解决
2. -bash: pip: command not found
https://www.cnblogs.com/y593216/p/12022098.html
3. 分布式运行期间出现
Segmentation fault (core dumped) 问题
看了很多帖子,没有解决问题
https://github.com/tensorflow/tensorflow/issues/40558
这里mark一下最集中的帖子
问题详细信息:python2.7 tensorflow 1.14.0
遇到问题不要慌:1看日志 2看帖子社区 3改版本
采用最后一种方法解决!
4. 分布式运行中,总有一个节点测试集准确率很快到达1,但是训练集准确率很低
尝试在精度阈值限定同时加上损失制限定