在Windows下根据TensorFlow官方文档部署cuda环境,进而调用GPU来训练神经网络

2023.8.24更新:在经过一段时间的学习摸索与踩坑后,笔者十分不建议各位在windows上部署深度学习环境,这是一件费力不讨好的事。不仅在编程时需要花费额外精力,在复现其他工作时也容易出现各种“别人很少遇到的”bug。

以下为原文,发布于2021-02-01 21:34:32。

博主花了两天时间,总算在win10笔记本上完成了cuda环境的部署,期间踩了很多坑。

现有的教程大都是通过anaconda部署的,但我是在jupyter上跑的,似乎没有什么文章是绕过anaconda来部署环境的,所以我决定写一个,顺带将自己遇到的坑也提一提。

首先说明一下我的本地环境:

tensorflow==2.4.1

python==3.6.2

jupyter==1.9.0

python版本大于3.5应该都没什么影响,但tensorflow版本比较关键,涉及到对应的CUDA工具包版本与cuDNN SDK版本,我们可以在这个页面查阅相关信息:从源代码构建  |  TensorFlow

官方文档链接:https://www.tensorflow.org/install/gpu#windows_setup

要在windows系统上使用gpu训练神经网络,我们不仅得有一个gpu,还得部署一些附带的环境,这就是本文所要描述的东西。

首先,gpu得支持cuda,可以通过这个页面查询:CUDA GPUs - Compute Capability | NVIDIA Developer

然后,我们需要在系统中安装下面这些软件:

NVIDIA GPU 驱动程序:CUDA 11.0 需要 450.x 或更高版本

CUDA 工具包:TensorFlow 支持 CUDA 11(TensorFlow 2.4.0 及更高版本)

CUDA 工具包附带的 CUPTI。

cuDNN SDK 8.0.4

GPU驱动程序一般大家的电脑都是装好了的,可以在控制面板里看一下是不是又GeForce Experience这个软件,这个就是驱动。可以打开确认一下驱动版本是否符合要求。

(英伟达搞的这个强制登陆真的是有够ex的。)

然后我们需要下载两个文件,一个是CUDA工具包,一个是cuDNN SDK 8.0.4。这两个文件都可以在英伟达官网上下到,但他要求先注册,注册又很容易卡在第二步进不了第三步,我在这上面绕了好久。

虽然我是注册成功了,但是是有绕过注册的方法的,csdn上之前有人发过方法,简单的说就是下载链接可以直接复制出来,然后通过迅雷等外部下载工具去下。

迅雷下的甚至远比官网上下的快。

这里我给出两个下载链接,一个是官网的,一个是我下载好,上传到百度网盘的。

CUDA工具包我安装的版本是cuda_11.0.2_451.48_win10.exe

官网下载页面:CUDA Toolkit Archive | NVIDIA Developer,我下的是CUDA Toolkit 11.0  (May 2020)

百度网盘链接:百度网盘 请输入提取码,提取码:50ya

cuDNN 8.04

官网下载页面:cuDNN Archive | NVIDIA Developer  在这个页面选择要下载的版本,然后右键复制链接拿到外部下载工具就能绕过登录了。

我选的是Download cuDNN v8.0.4 (September 28th, 2020), for CUDA 11.0; cuDNN Library for Windows (x86)

百度网盘链接:百度网盘 请输入提取码,提取码:fqgk

第一个文件是个安装程序,需要运行。第二个压缩包我们按照TensorFlow文档里描述的,在C盘根目录新建文件家tools,然后解压到这个文件夹中。

最后我们要配置一下环境变量,在控制面板-系统-高级系统配置-环境变量里设置path变量:

如果你没有修改CUDA工具包的安装路径,那可以跟我设置成一样的值,确定一下就好了。

到这里就安装完成了,我们可以检查一下现在TensorFlow能否检查到GPU。

打开Windows PowerShell,运行ipython,输入

import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

可以看到系统在尝试加载所需的软件依赖。如果环境存在问题,有文件不能成功加载,那么TensorFlow就检测不到GPU。如果全部加载成功,说明环境已经部署成功了。

在此之后我尝试着调用GPU去训练神经网络,被一个莫名的问题困扰,报错类型为UnKnown Error,错误描述为调用Conv2d函数出错,我一直没能找到原因。后面发现一旦在jupyter里同时启动多个kernel并同时训练神经网络,那么就会出现这个问题,如果只启动一个kernel则不会出现问题。

如果已经出现了这个问题,我的解决办法是在设备管理器中禁用GPU再启用,这样就好了。

最后还有一点要提的是,在部署完成后,最好重启一下电脑。我期间还遇到了一个问题,无法加载cusolver64_10.dll,这个文件可以在上面的图片里看到。我很费解,因为这个文件与其他文件是在同一个文件夹的,没理由别的能加载,它不能加载。同时我发现,ipython里能正常加载并显示GPU数量为1,但偏偏jupyter里出现了这个问题。百思不得其解,重启电脑后却好了。

我们可以尝试一下用gpu去训练神经网络,一般来说如果你先前已经尝试过用cpu训练,转而使用gpu的话会发现速度有着大幅提升。

这里给出TensorFlow给出的一个官方示例:用 tf.data 加载图片 | TensorFlow Core

有什么问题的话可以留言。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值