春江暮客

春江暮客的个人学习分享网站

tensorflow深度学习服务器环境搭建

2018-11-30 杂谈
tensorflow深度学习服务器环境搭建

实验室新进了一台服务器,配置了 NVIDIA 1080Ti 显卡做深度学习使用。装好机器后,第一件事就是把 TensorFlow 的 GPU 环境配好。这里把当时搭建环境的过程和踩过的坑整理出来,给有类似需求的人做个参考。 操作系统是师兄刻好的ubuntu最新版本Ubuntu 18.04.1 LTS (可使用lsb_release -v查看),这种事当然第一件事就是谷歌了,发现一条setup-an-environment-for-machine-learning-and-deep-learning-with-anaconda-in-windows,接下来就是按照提示一步一步进行就是了。

先说明一下,这篇文章对应的是一套比较老的 TensorFlow + CUDA 组合,核心价值在于“版本兼容关系”这个思路,而不是让你在今天无脑照抄所有版本号。不同 TensorFlow 版本可用的 CUDA/cuDNN 组合并不一样,安装前最好先查官方兼容矩阵。

搭建过程一共分为6步

  1. 下载 Anaconda
  2. 安装 Anaconda; Python(ubuntu自带python3)
  3. 更新 Anaconda
  4. 安装 CUDA & cuDNN(cudnn不需要自己装)
  5. 安装TensorFlow & Kera
  6. CUDA版本切换(如果正常装好不需要)

1,2,3步都是常规且比较简单就可以完成的事情,这里就简单说一下了,

开始前先确认

  • 你安装的是带 NVIDIA GPU 的机器,并且显卡驱动本身工作正常。
  • 你准备安装的是和本文相近的旧版 TensorFlow GPU 环境,而不是当前最新版本。
  • 你愿意先以“兼容优先”为目标,而不是一开始就追求所有组件都用最新版。

1.下载 Anaconda

anacoda下载linux版python3.7版本,服务器是ubuntu18,所以下载的是python3.7版本 download_anaconda

2.安装 Anaconda & Python(ubuntu自带python3)

bash Anaconda3-5.3.1-Linux-x86_64.sh

跟着提示就可以顺利安装了安装了,如果你向我一样使用zsh作为默认shell的话,所以需要将.bashrc下的anaconda安装时自动添加的以下代码

conda_env

复制进.zshrc文件末尾,source ~/.zshrc完成调用,终端输入conda看到帮助说明装好了

3.更新anaconda

在终端输入以下命名更新conda

conda update conda
conda update --all

4.安装 CUDA & cuDNN

重点在于CUDA的安装以及cudnn的安装,在这一步我可是吃尽了苦头
这里我直接把正确的做法告诉大家
首先到英伟达开发者网站下载相应显卡的cuda9.0版本,这里由于tensorflow只能使用9.0(强调,官网默认是10.0版本的0-0这里就被坑了一圈) cuda_download

下好cuda之后就简单了

sudo dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64-deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

安装好后,需要降低gcc版本,添加环境变量,使用以下命令完成

sudo apt install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50 
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda/extras/CPUTI/lib64
export CUDA_HOME=/usr/local/cuda-9.0/bin
export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME

cudnn安装

需要navid注册账号,然后下载runtime和develop两个deb包并且安装,安装命令直接使用dpkg

sudo dpkg -i libcudnn7_7.0.5.15-1_cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.0.5.15-Bcuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0.5.15-1+cuda9.0_amd64.deb #可选

5.安装TensorFlow; Keras

直接使用anaconda安装就可以了

conda install -c anaconda tensorflow-gpu
conda install -c conda-forge keras-gpu

这里后面接-gpu说明安装的是gpu版本,不带的话就是cpu版本的了,由于服务器配置了显卡,当然下载gpu版本以发挥显卡的优势

6.CUDA版本切换(如果正常装好不需要)

通过使用

python -c "import tensorflow as tf;"

查看tensorflow环境是否建好, libcublas

提示错误 搜索后发现是cuda的问题,使用ldconfig -v可以看到找不到libcublas.so.9.0,这是cuda9.0里面的,而我一开始安装的是最新版的cuda10,所以这里被坑了一波。。。

那么就需要卸载cuda10了

sudo apt-get remove cuda*
sudo apt remove --purge nvidia*
rm /etc/apt/sources.list.d/cuda-10-0-local-10.0.130-410.48.list
sudo apt autoremove
sudo rm -rf /var/cuda-repo-10-0-local-10.0.130-410.48
sudo rm -rf /usr/local/cuda*

都跑一遍再来重新安装应该就好了,这里再次使用‘python -c “import tensorflow as tf;“命令就可以发现没有报错了。接下来使用下面查看成功安装后的tensorflow gpu版本。可以看到1080ti已经成功被tensorflow识别了。

from tensorflow.python.client import device_lib
local_device_protos = device_lib.list_local_devices()

如何快速确认环境真的可用

装完之后,至少检查下面 3 件事:

  • python -c "import tensorflow as tf;" 不报 CUDA 相关错误。
  • device_lib.list_local_devices() 能看到 GPU 设备。
  • nvcc --versionnvidia-smi 和 TensorFlow 实际加载的 CUDA 版本彼此不冲突。

tf_gpu_fine

总结一下

本文记录了一套 Ubuntu 18.04 上较老版本 TensorFlow GPU 环境的搭建过程,从 Anaconda、CUDA、cuDNN 到最终识别 1080Ti 的检查步骤都串起来了。最大的坑其实不是命令本身,而是版本兼容问题:TensorFlow、CUDA、cuDNN 和驱动必须彼此对上。

如果今天你照着做时发现版本不一致,不要先怀疑 TensorFlow,而是先回头确认兼容矩阵,再决定到底该降 CUDA,还是换成匹配的 TensorFlow 版本。

友情链接

其它