TensorFlow 2.2 环境搭建

准备 GPU 服务器

购买阿里云 GPU 云服务器

点击购买 GN6 (V100), 选择按量付费, 购买 1块 NVIDIA Tesla V100 即可.

镜像选择 CentOS 7.6 64 位 (最新版) 即可.

单击下一步, 进入网络和安全组配置, 公网带宽选择按使用流量计费

最后单击确认订单, 然后等待实例创建完成.

配置远程登录

在实例列表页, 有对应实例的公网 ip 和内外 ip, 理论上通过 ssh root@公ip 即可远程登录. 现在的关键是需要知道 root 账号的密码, 我们可以通过重置密码设置.

在对应实例右侧, 依次点击更多, 密码/密钥, 重置实例密码 弹出如下对话框. 注意: 设置完密码, 需要重启实例 (更多, 实例状态, 重启).

现在你就可以用自己熟悉的终端, 比如 iTerm 2 远程登录这台 GPU 服务器, 搭建 TensorFlow GPU 训练/预测环境了.

安装驱动

查看服务器基本信息

$ lspci | grep -i nvidia
00:07.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100 SXM2 16GB] (rev a1)

版本选择参考 https://www.tensorflow.org/install/source#gpu

我们计划搭建 TensorFlow 2.2 环境, Python 准备选择 3.7.8, 参见 CentOS 7 升级 Python 3, CUDA 需要安装 10.1 版本, cuDNN 安装 7.6. 注意由于我们不会编译安装 TensorFlow, 因此不用安装/关心 GCC/Bazel 的版本. 接下来的安装操作均用 root 账户.

安装 NVIDIA

前往官网 https://www.nvidia.com/Download/index.aspx 下载对应版本的驱动

点击 SEARCH

然后, 点击下载按钮, 将得到可执行文件 NVIDIA-Linux-x86_64-418.152.00.run. 可以直接点击这里下载, 在服务器上用 wget 命令下载.

chmod a+x NVIDIA-Linux-x86_64-418.152.00.run
./NVIDIA-Linux-x86_64-418.152.00.run

查看驱动安装是否成功, 执行 nvidia-smi 命令.

安装 cuda

前往官网 https://developer.nvidia.com/cuda-toolkit-archive, 下载 CUDA Toolkit 10.1, 当前的最新更新是 CUDA Toolkit 10.1 update2, 点击进入如下页面

根据提示, 执行下载命令

wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run

得到 cuda_10.1.243_418.87.00_linux.run 文件.

chmod a+x cuda_10.1.243_418.87.00_linux.run
./cuda_10.1.243_418.87.00_linux.run

配置环境变量, 编辑 /etc/profile 文件, 在末尾增加如下两行配置

export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64

最后, 执行 source /etc/profile 命令, 使配置生效.

安装 cudnn

前往官网 https://developer.nvidia.com/cudnn, 下载 cuda 10.1 对应的版本 cudnn-10.1-linux-x64-v7.6.5.32.tgz, 这里需要注册登录才能下载.

直接解压缩文件, 然后移动到相应的目录下即可

tar -xkzvf cudnn-10.1-linux-x64-v7.6.5.32.tgz
cp -fa cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/
cp -fa cuda/include/cudnn.h /usr/local/cuda-10.1/include/

安装 TensorFlow 2.2

假设已经安装好 python3 了, 参见 CentOS 7 升级 Python 3. 接下来安装 TensorFlow 2.2

pip3 install tensorflow

验证是否安装成功, 进入 python 交互环境, 执行如下命令.

import tensorflow as tf
tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.list_physical_devices('CPU')

若成功打印出 GPU 硬件信息, 则说明环境搭建成功!

附录

找不到 kernel source

需要禁用 nouveau 参见CentOS中禁用nouveau驱动

uname -r
yum install kernel-devel
./NVIDIA-Linux-x86_64-384.183.run --kernel-source-path=/usr/src/kernels/3.10.0-957.10.1.el7.x86_64

找不到 libcublas

执行 TensorFlow 验证时, 提示找不到 libcublas.so.9.0, 可能是没有配置环境变量, 参见 安装 cuda 部分.

参考文献