利用GPU加速TensorFlow

发布于:2025-06-29 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、写在前面

我们已经依靠keras和TensorFlow给大家做了一些机器学习在图像处理中的应用(影像组学学习手册,基于深度学习的图像分类任务),此前的教程中我们没有用GPU进行加速,但是相较于CPU而言,GPU是设计用于处理大规模并行计算任务的硬件,具有大量的小型处理单元(CUDA核心或流处理器),这使得它们能够同时执行多个计算任务。GPU的并行性能远远超过了CPU,因此能够加速机器学习过程中的训练和推断过程。而当下流行的深度学习框架如TensorFlow和PyTorch均提供了GPU加速的支持,使得在GPU上运行模型变得更加容易。这些框架通过CUDA或OpenCL等接口与GPU通信,从而简化了GPU的使用。不过,为了让TensorFlow能够顺利调用GPU,我们还需要额外安装软件并配置环境。

需要GPU算力的同学可参考:终于上架啦

也可以来找找组织:生信Linux交流群

计算资源不足的同学可参考:
生信分析为什么要使用服务器?
足够支持你完成硕博生涯的生信环境
独享用户硬件升级对比报告

二、依赖知识

为了顺利完成以下操作,你需要有Linux和Python的基础知识:

十小时学会Linux

生信Python速查手册

三、win11+GTX 1650下的GPU加速环境配置

1、确认系统版本与显卡型号

首先我在我的笔记本上测试了一下,系统版本为Windows11 家庭中文版,显卡型号为NVIDIA GeForce GTX 1650(不要问我AMD的显卡以及其它品牌的显卡怎么配置,因为我没有)。确认好以上信息后,再进行下面的操作。

2、确认显卡驱动与CUDA版本 

如果大家不知道自己显卡的版本型号,可以现在windows的检索栏中打开显卡控制中心:

图片

界面中自然有对应的版本与驱动型号:

图片


按下键盘上的Win + R组合键,然后在运行对话框中键入cmd,然后按Enter键。可以进入windows的终端,输入:

    nvidia-smi

    回车后即可返回对应信息,这里由于我已经装好了cuda,所以cuda的版本号也显能够显示:

    图片

    3、安装驱动

    如果你的驱动未能正常安装/不确定自己的驱动是否适配/需要安装指定的驱动,可以前往NVIDIA官网[1]填上对应的信息后获得驱动文件。以我的环境为例:

    图片

    搜索出来的页面点击download到本地后,管理员模式运行安装即可。

    图片

    有了你的驱动之后,需要根据版本号选择cuda版本[2],这里由于我的驱动时546.33,所以下列的cuda版本理论上我都可以兼容

    图片

    接下来,由于我的Python环境是3.8,经过查阅Tensorflow的推荐配置[3],因此我的最终选择是2.4.0的tensorflow、11.0的CUDA。

    图片

    3、动手安装

    在终端中先安装好tensorflow

      pip install tensorflow-gpu==2.4.0pip install numpy==1.2.0# tensorflow-gpu的2.4.0依赖的是1.9.0的numpy,但我实际运行时会报错

      cuda需要去官方列表页面[4]下载:

      图片

      填写好信息后进行下载:

      图片

      下载后安排到默认位置即可。

      在终端中输入:

        nvcc -V

        能成功返回cuda的版本信息则安装成功:

        图片

        前往页面下载[5]对应版本的cudnn:

        图片

        下载得到的是一个压缩包,解压后有以下目录:

        图片

        cudnn实际上是库文件,所以你需要把这个文件夹下bin里的文件拷贝到cuda的bin目录下(对应我系统中的路径就是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin),把include中的文件拷贝到cuda的include目录中(对应我的系统就是:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include),把lib/x64的文件拷贝到cuda的对应位置(对应我的系统就是:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\lib\x64)。

        完成上述的文件迁移操作后,找到bandwidthTest.exe程序(在我的系统中在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\demo_suite\bandwidthTest.exe)并在终端中运行:

          "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\demo_suite\bandwidthTest.exe"

          注意上面的命令要有双引号,否则空格会不识别。运行后有以下提示说明cudnn安装成功:

          图片

          至此,为tensorflow搭建的GPU加速环境配置完成。

          四、验证GPU加速

          导包验证

            import osimport pandas as pdimport tensorflowtensorflow.config.experimental.list_physical_devices('GPU')

            在Python中输入以上命令若能返回GPU的相关参数,则说明上述配置成功

            图片

            如果报错缺少dll,则需要在终端声明以下变量(需要改为你系统中的对应位置)

              SETPATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;%PATH%SETPATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\CUPTI\lib64;%PATH%SETPATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include;%PATH%

              在Python中也可以提前申明dll文件路径后加载tensorflow:

                import osos.add_dll_directory("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.0\\bin")import pandas as pdimport tensorflowtensorflow.config.experimental.list_physical_devices('GPU')

                成功返回GPU信息即可

                图片

                我使用了GPU加速,一个epoch大约是10s+:

                图片

                而不用GPU加速的结果为35s+的样子:

                图片

                当然,我的CPU是I7-9750H,GPU是GTX 1650(已经沦为亮机卡了,相信拥有更高端显卡的你一定能够跑通这个教程),因此加速效果虽然显著,但是不离谱,如果换成目前主流的显卡,计算速度会相差数个量级。


                网站公告

                今日签到

                点亮在社区的每一天
                去签到