简单记录一下搭建tensorflow-gpu过程中踩过的坑
平台: 显卡GTX 1070Ti;操作系统Ubuntu kylin 16.04,环境Conda 3.6, python2.7
坑一:Ubuntu版本不能太高,一开始装的18,后来各种不支持,重新装了16.04
坑二:Nvidia显卡驱动,不要通过Ubuntu系统的自带工具安装,否则不仅用不了,而且还会影响手动安装,想卸载都得费半天劲。其次,不要装太高版本的,官网已经出到390版本了,甚至还有396版本的,但实际上会造成很多不兼容。
正确的做法是:先看tensorflow的版本,如现在最高版本是1.8,其默认支持的cudnn是7.1.2和cuda9.0,而cuda9.0的版本对应的Nvidia驱动是384,所以,安装384版本的。选对了版本,再按照网上的教程走,基本就没啥问题。
坑三:cuda和cudnn的安装,按照网上的绝大部分教程,手动安装,经过一番折腾,最后的结果是:libcudnn.so.6:cannot open sharedobject file: No such file or directory,无论怎么添加PAH路径都没有用。一度怀疑是不是又是版本的问题,试了各种tensorflow版本都没有用,其次怀疑是不是权限的问题,更改权限依然没用。几乎放弃。
实际上,这两个库文件在conda安装tensorflow-gpu时都会自动安装上。
坑四:不能通过pip install tensorflow-gpu安装,应该是不会自动解决依赖问题。通过conda install会列出一大堆的以来文件,但pip不会。
实际上踩过的坑比上面复杂的多,折腾了n久,最后的解决过程是:
1. 安装低版本的Ubuntu 16.04
2. 安装适当版本的显卡驱动 384.111,通过官网网址https://www.geforce.cn/drivers/beta-legacy下载对于run版本,按照网上教程安装。
3. 直接跳过cuda和cudnn的安装,通过conda install tensorflow-gpu一步到位。如果只是使用官方源的话可能会很慢,导致超时,因此需要添加其他的源,如清华提供的源:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/。更多的源可以参考https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
4. 安装完成之后,已经可以使用了。
5. 测试过程:
在python命令行中,执行sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)),能看到显卡信息,说明安装成功,如果提示Device mapping: Unknown Device,说明失败
通过git下载tensorflow的sample:git clone --recurse-submodules https://github.com/tensorflow/models,在下载的models/tutorials/image/mnist目录下运行 Python convolutional.py,速度是100个step用时越5ms,原来没有正确安装的时候需要70ms,快了一个数量级。