写点什么

安装配置 GPU 训练环境

作者:十三
  • 2022 年 4 月 02 日
  • 本文字数:1897 字

    阅读完需:约 6 分钟

差一年、差一个月、差一天、一个时辰,都不算!

-- 哥哥

ubuntu18.04 安装 cuda10.0

Tensorflow1.15.0 对应的 cuda 版本是 10.0。但官网也有坑,说对应的 cudnn 版本是 7.4,但实际上 7.4 运行就会报错,必须要用 7.6 的 cudnn

1. 安装 Nvidia 显卡驱动

1.1 检查是否有 nvidia 显卡,lspci | grep VGA

00:02.0 VGA compatible controller: Intel Corporation Device 9bc4 (rev 05)01:00.0 VGA compatible controller: NVIDIA Corporation Device 1f15 (rev a1)
复制代码

1.2 检查 nvidia 驱动是否安装:nvidia-smi

1.3(可选) 卸载 nvidia 驱动

sudo apt-get --purge remove nvidia*sudo apt autoremove
复制代码

1.4 检查机器合适的驱动版本:ubuntu-drivers devices


1.5 自动安装合适版本的驱动:sudo ubuntu-drivers autoinstall

1.6 重启:reboot

1.7 查看 nvidia 显卡信息:nvidia-smi


2. 安装 cuda

1. 下载地址:https://developer.nvidia.com/cuda-toolkit-archive

2. 选择 Linux→x86_64→Ubuntu→18.04→deb(network)


3. 下载 deb 在线安装包

4. 按照官网提示,执行 4 条命令进行安装

注意:第 4 条命令sudo apt-get install cuda就是在线安装 cuda,默认安装最新版本,所以要安装 cuda-10.0,必须执行sudo apt-get install cuda-10.0

5. 验证:nvcc -V


3. 安装 cudnn

cudnn 是专门针对神经网络计算的模块。要在 GPU 上训练如 tensorflow 和 pytorch 等深度网络模型,就必须有 cudnn 的加持

1. 下载地址,但必须先注册、登录:https://developer.nvidia.com/rdp/cudnn-archive

2. 选择 cuDNN v7.6.4,CUDA 10.0,for Linux 版本


3. 解压:tar -xvf cudnnxxx

4. 拷贝文件

  1. 解压之后,文件夹名为 cuda

  2. sudo cp cuda/include/cudnn.h /usr/local/cuda/include

  3. sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

  4. sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

5. 验证:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR

#define CUDNN_MAJOR 7#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
复制代码

4. 验证

1. 进入 python3: python3

import tensorflow as tftf.test.is_gpu_available()
复制代码



2. 运行一个简单的例子

import tensorflow as tfimport numpy as np
x_data = np.random.rand(100).astype(np.float32)y_data = x_data * 0.1 + 0.3
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))biases = tf.Variable(tf.zeros([1]))
y = Weights * x_data + biases
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
with tf.Session() as sess: sess.run(init) for step in range(201): sess.run(train) if step % 20 == 0: print(step, sess.run(Weights), sess.run(biases))
复制代码

5. troubleshooting

  1. 训练 yolo 或 unet 报错Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR


2022-04-02 14:20:48.529672: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.72022-04-02 14:20:48.841323: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR2022-04-02 14:20:48.845187: E tensorflow/stream_executor/cuda/cuda_dnn.cc:329] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR.........tensorflow.python.framework.errors_impl.UnknownError: 2 root error(s) found.  (0) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.   [[{{node conv2d_1/convolution}}]]   [[metrics/ppv/Mean/_625]]  (1) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.   [[{{node conv2d_1/convolution}}]]0 successful operations.0 derived errors ignored.
复制代码


  1. 解决,加入以下代码:


import tensorflow as tf[tf.config.experimental.set_memory_growth(gpu, True) for gpu in tf.config.experimental.list_physical_devices('GPU')]tf.config.experimental.list_logical_devices('GPU')
复制代码


  1. 验证,CPU 已经以逸待劳,GPU 正老骥伏枥

Win10

待续

发布于: 2022 年 04 月 02 日阅读数: 34
用户头像

十三

关注

还未添加个人签名 2018.05.03 加入

还未添加个人简介

评论

发布
暂无评论
安装配置GPU训练环境_十三_InfoQ写作平台