当前位置: 首页 > news >正文

利用GPU加速TensorFlow

一、写在前面

我们已经依靠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(已经沦为亮机卡了,相信拥有更高端显卡的你一定能够跑通这个教程),因此加速效果虽然显著,但是不离谱,如果换成目前主流的显卡,计算速度会相差数个量级。

                http://www.lryc.cn/news/576366.html

                相关文章:

              • python多线程详细讲解
              • 【21】C9800配置PSK认证的WLAN
              • 多表连接查询:语法、注意事项与最佳实践
              • 【linux】Vm虚拟机ubuntu的接口ip掉了
              • 电商返利APP架构设计:如何基于Spring Cloud构建高并发佣金结算系统
              • 鸿蒙5:其他布局容器
              • 什么是 PoS(权益证明)
              • LIN总线通讯中的重要概念信号(Signal)、帧(Frame)和 节点(Node)
              • Geollama 辅助笔记:raw_to_prompt_strings_geo.py
              • 鸿蒙5:组件监听和部分状态管理V2
              • 设计模式精讲 Day 17:中介者模式(Mediator Pattern)
              • ASProxy64.dll导致jetbrains家的IDE都无法打开。
              • 医疗标准集中标准化存储与人工智能智能更新协同路径研究(上)
              • LabVIEW液压系统远程监控
              • uni-app subPackages 分包加载:优化应用性能的利器
              • 前端打印计算单位 cm、mm、px
              • 开源3D 动态银河系特效:Vue 与 THREE.JS 的奇幻之旅
              • 量子计算与 AI 的深度融合的发展观察
              • android14 设置下连续点击5次Settings标题跳转到拨号界面
              • 数字孪生技术赋能UI前端:实现虚拟与现实的无缝对接
              • Flutter基础(Future和async/await)
              • Gemini CLI 项目架构分析
              • 港澳地区,海外服务器ping通可能是地区运营商问题
              • ifconfig返回解析
              • Redis ①④-哨兵
              • Ubuntu20.04离线安装Realtek b852无线网卡驱动
              • HTML表格中<tfoot>标签用法详解
              • OD 算法题 B卷【计算误码率】
              • python解释器 与 pip脚本常遇到的问题汇总
              • 2025年健康医疗大数据开放共享:现状、挑战与未来发展