【TensorFlow】P0 Windows GPU 安装 TensorFlow、CUDA Toolkit、cuDNN

news2024/11/26 19:41:51

Windows 安装 TensorFlow、CUDA Toolkit、cuDNN

  • 整体流程概述
    • TensorFlow 与 CUDA Toolkit
      • TensorFlow 是一个基于数据流图的深度学习框架
      • CUDA 充分利用 NIVIDIA GPU 的计算能力
      • CUDA Toolkit
    • cuDNN
  • 安装详细流程
    • 整理流程一:安装 CUDA Toolkit
      • 步骤一:获取CUDA版本信息
      • 步骤二:下载安装 CUDA Toolkit
      • 步骤三:按照默认步骤安装
      • 步骤四:检查CUDA安装成功
    • 整体流程二:安装cuDNN
      • 步骤一:下载 cuDNN
      • 步骤二:解压缩下载的 zip,并将其中的文件复制到 CUDA Toolkit 的相应目录
      • 步骤三:配置环境变量
    • 整体流程三:安装 TensorFlow-gpu
      • 步骤一:Anaconda中创建新的环境
      • 步骤二:查看下载 tensorflow-gpu 的版本号
      • 步骤三:检查整体流程安装成功
      • 步骤四:检查 cuDNN 安装成功可用


整体流程概述

TensorFlow 与 CUDA Toolkit

TensorFlow 是一个基于数据流图的深度学习框架

  • TensorFlow是一个基于数据流图的深度学习框架,它使用张量(Tensor)作为数据的基本单位,在GPU上进行张量运算可以极大地提高深度学习模型的训练和推理速度。而CUDA则提供了在GPU上执行高性能并行计算所需的API和运行时环境,能够实现深度学习任务的加速。

CUDA 充分利用 NIVIDIA GPU 的计算能力

  • 安装 TensorFlow 之前需要首先安装 CUDA,准确的说是 CUDA Toolkit。是因为 TensorFlow 使用 CUDA 作为其后端计算引擎。CUDA 是由 NVIDIA 提供的并行计算平台和编程模型,可以充分利用 NVIDIA GPU 的计算能力,实现高性能的并行计算。

CUDA Toolkit

  • 即 TensorFlow 默认会安装与系统和 GPU 兼容的版本,这需要依赖 CUDA Toolkit。CUDA Toolkit 包含 GPU 驱动程序、CUDA Runtime 库和相关工具,使 TensorFlow 能够与 NVIDIA GPU 进行交互并利用其计算能力。

cuDNN

  • 在安装 TensorFlow 之前需要安装 cuDNN(CUDA Deep Neural Network library),是因为 TensorFlow 使用 cuDNN 来加速深度神经网络的计算。cuDNN 是由 NVIDIA 开发的用于深度学习的 GPU 加速库,它针对深度神经网络的计算任务进行了高度优化,可以显著加快训练和推理过程。

  • TensorFlow 通过调用 cuDNN 的 API 来利用 GPU 上的硬件加速功能,特别是在卷积操作等深度学习任务中,cuDNN 能够提供很大的性能提升。在没有 cuDNN 的情况下,TensorFlow 会使用 CPU 来执行这些计算任务,但是由于 CPU 的计算速度相对较慢,处理大规模的深度学习模型时可能会非常耗时。


安装详细流程

在这里插入图片描述

整理流程一:安装 CUDA Toolkit

步骤一:获取CUDA版本信息

桌面 > 右键 > NVIDIA控制面板 > 查看系统信息 > 点击组件 > 查看 NVCUDA64.DLL 的 CUDA版本 > 成功获取CUDA版本信息;

在这里插入图片描述


步骤二:下载安装 CUDA Toolkit

访问 CUDA Toolkit Archive https://developer.nvidia.com/cuda-toolkit-archive 下载对应版本的 CUDA Toolkit,根据步骤一中的 CUDA 版本信息(例如我的CUDA版本为12.0.134),选择下载 Toolkit 版本:

在这里插入图片描述

并开始下载,耐心等待10分钟;

在这里插入图片描述


步骤三:按照默认步骤安装

按照向导进行安装即可;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
请添加图片描述


步骤四:检查CUDA安装成功

安装完成后,你可以在命令提示符或 PowerShell 中输入以下命令来验证 CUDA 是否成功安装:

nvcc -V

或者同:

nvcc --version

在这里插入图片描述

如果安装成功,将会输出 CUDA 的版本号。下面我们进行安装 cuDNN;


整体流程二:安装cuDNN

步骤一:下载 cuDNN

  • 访问 cuDNN 下载网址:https://developer.nvidia.com/rdp/cudnn-download;

  • 出现下图界面说明你需要首先登陆你的 NIVIDIA 账户;

在这里插入图片描述

  • 出现如下界面,需要根据本机的 CUDA 版本选择安装,如何获取本机的 CUDA 版本?如下:

获取CUDA版本信息:
桌面 > 右键 > NVIDIA控制面板 > 查看系统信息 > 点击组件 > 查看 NVCUDA64.DLL 的 CUDA版本 > 成功获取CUDA版本信息,即 12.x

在这里插入图片描述

  • 根据上述获得的 CUDA 版本信息,选择下载 12.x 版本的cuDNN;

在这里插入图片描述

步骤二:解压缩下载的 zip,并将其中的文件复制到 CUDA Toolkit 的相应目录

  • 解压缩后应该包含三个文件夹和一个文件:
    binincludelibLICENSE

在这里插入图片描述

  • 将三个文件夹中的文件分别复制到各自的 CUDA Toolkit 目录中
    • 首先打开 bin 文件夹:
      在这里插入图片描述
      复制全部文件,粘贴到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin 文件夹中;

    • 然后打开 include 文件夹:
      在这里插入图片描述
      同样复制全部文件,粘贴到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\include 文件夹中;

    • 最后打开 lib\x64 文件夹:
      在这里插入图片描述
      将全部文件粘贴到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\lib\x64 文件夹中;

步骤三:配置环境变量

  • 确保将 CUDA 和 cuDNN 的安装路径添加到系统的环境变量中,这样 TensorFlow 才能正确地找到这些库和头文件;
  • cuDNN 中不会默认配置环境变量,需要读者手动配置环境变量:
  • 首先打开 环境变量 path 栏目:

在这里插入图片描述

  • 将解压缩后的 cuDNN 文件夹的 \bin 绝对地址复制粘贴:
    C:\Users\xhong\Downloads\cudnn-windows-x86_64-8.9.3.28_cuda12-archive\cudnn-windows-x86_64-8.9.3.28_cuda12-archive\bin

在这里插入图片描述

完成!

cuDNN的完成检查需要等待下一步 tensorflow-gpu 安装完成后;


整体流程三:安装 TensorFlow-gpu

  • 在安装完 cuDNN 后,再安装 TensorFlow 时,TensorFlow 将能够识别到你的 cuDNN 并自动与之集成,从而在 GPU 上运行深度学习任务时获得显著的加速效果。总之,安装cuDNN是为了充分发挥GPU的计算能力,提高TensorFlow的性能和效率,特别是在处理复杂的深度学习模型时,cuDNN的优化可以为你节省大量时间。

步骤一:Anaconda中创建新的环境

  • 建议在 Anaconda Prompt 中创建一个新的环境,因为我的 base 环境已经安装好了 gpu 版本的 torch,而且如果都放在一个环境中更新环境会比较耗时;

  • 创建环境 tensorflow

    conda create -n tensorflow pip python=3.8
    
  • 激活环境 tensorflow

    activate tensorflow
    

    在这里插入图片描述

步骤二:查看下载 tensorflow-gpu 的版本号

https://www.tensorflow.org/install/source_windows?hl=zh-cn
网址最下方有一个表格,列有 GPU 的 CUDA、cuDNN 对照的安装的 tensorflow-gpu 版本号

在这里插入图片描述

  • 很明显,根据我的 cuDNN(8.9.3.28) 与 CUDA(12.0.134) 版本的短板效应,我稳妥选择 tensorflow_gpu-2.4.0 版本,建议读者到这里也这么选择,稳定能用就是了;

  • 输入命令:

    pip install --ignore-installed --upgrade tensorflow_gpu==2.4.0
    # 注意将2.4.0替换为你的版本号
    

等待安装完成!

步骤三:检查整体流程安装成功

  • 打开 Pycharm,记得将环境从 base 切换到刚刚创建配置的 tensorflow:

    import tensorflow as tf
    
    # 检查是否有可用的 GPU 设备
    if tf.config.list_physical_devices('GPU'):
        print('GPU可用')
    else:
        print("GPU不可用")
    

    在这里插入图片描述

  • 出现上图所示 True,即完成安装步骤,若出现 curand64_10.dll is not found 等标识,即说明下载安装相关 CUDA Toolkit 版本出现意外错误,解决办法为通过将文件中已含有的 curand64_11.dll 文件重命名可解决问题,如下图所示:

    在这里插入图片描述

  • bin文件目录地址为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin

  • 安装 CUDA 后,再安装 TensorFlow 时,TensorFlow 将会自动与 CUDA 进行集成,并在 GPU 上利用 CUDA 的功能来加速深度学习任务。这样,TensorFlow 能够更高效地执行张量计算,从而显著提高模型训练和推理的速度。

步骤四:检查 cuDNN 安装成功可用

import tensorflow as tf

# 检查TensorFlow-gpu是否可用
print("TensorFlow-gpu available:", tf.test.is_gpu_available())

# 检查cuDNN是否可用
print("cuDNN version:", tf.config.list_physical_devices('GPU'))

在这里插入图片描述
完结撒花!!!!~~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/847808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GIS和倾斜摄影的关系?

GIS(地理信息系统)和倾斜摄影是两种在地理空间数据处理和分析中扮演重要角色的技术。但是我们总是会分不清二者,本文就带大家从不同角度了解二者之间的关系。 概念 GIS是一种用来捕获、存储、分析和展示地理空间数据的技术,它可以…

Java课题笔记~ Spring 集成 MyBatis

Spring 集成 MyBatis 将 MyBatis 与 Spring 进行整合,主要解决的问题就是将 SqlSessionFactory 对象交由 Spring 来管理。所以该整合,只需要将 SqlSessionFactory 的对象生成器SqlSessionFactoryBean 注册在 Spring 容器中,再将其注入给 Dao…

Apollo让自动驾驶如此简单

前言: 最近被新能源的电价闹的不行,买了电车的直呼上当了、不香了。但电车吸引人不只是公里油耗低,还有良好的驾车使用感。比如辅助驾驶、甚至是自动驾驶。今天来介绍一个头部自动驾驶平台Apollo,Apollo是一个开源的、自动驾驶的软…

【Hystrix技术指南】(4)故障切换的运作流程

[每日一句] 也许你度过了很糟糕的一天,但这并不代表你会因此度过糟糕的一生。 [背景介绍] 分布式系统的规模和复杂度不断增加,随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中,【熔断、隔离、降级、限流】是经常被使…

iperf3-性能测试

iperf3-性能测试 安装1.apt安装2.源码安装 使用方法iperf原理测试参考文档性能测试客户端服务端 官方文档:https://iperf.fr/iperf-doc.php 安装 1.apt安装 sudo apt-get install iperf32.源码安装 # 按照官方说明安装 ./configure make sudo make install执行编…

OceanBase 4.1.0 clog 目录探究

基于OceanBase 4.x 版本如何统计租户每日 clog 日志生成量的背景下,探究以及如何查看租户 clog 的使用情况。 作者:姜宇 爱可生 DBA 团队成员,擅长数据库故障排查和处理。对技术抱有热忱,实践是检验真理的唯一标准~ 本文来源&…

对docker的简单理解

一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发运维之间的协作,我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的…

MySQL安装和卸载

1.MySQL概述 MySQL概述 MySQL是一个[关系型数据库管理系统],由瑞典MySQL AB 公司开发,2008年被sun公司收购, 2009sun又被oracle收购,所以属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用…

springboot(4)

AOP 1.AOP与OOP OOP(Object Oriented Programming,面向对象编程) AOP(Aspect Oriented Programming,面向切面编程) POP(Process Oriented Programming,面向过程编程) …

扩展卡尔曼滤波器代码

文章目录 前言问题状态向量和观测向量加性噪声的形式状态方程及求导观测方程及求导状态初始化过程噪声和观测噪声卡尔曼滤波过程code 前言 卡尔曼滤波器在1960年被卡尔曼发明之后,被广泛应用在动态系统预测。在自动驾驶、机器人、AR领域等应用广泛。卡尔曼滤波器使…

在R中比较两个矩阵是否相等

目录 方法一:使用all.equal()比较两个R对象是否近似相等 方法二:使用identical比较两个R对象是否精确相等。 方法一:使用all.equal()比较两个R对象是否近似相等 使用函数:all.equal(x,y) 比较两个R对象x和y是否近似相等 > M1…

抽象工厂模式(C++)

定义 提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。 使用场景 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。如何应对这种…

Java实现微信公众号自定义回复

第一版实现微信公众号自动回复: ● 实现自定义回复内容的管理,将关键词、半匹配、以及关注、默认回复等刷新到缓存中 ● 用户发送消息进行匹配后通过微信回复格式直接返回,如果内容存在文字和图片,文字通过xml格式直接返回&…

每天一道leetcode:剑指 Offer 50. 第一个只出现一次的字符(适合初学者)

今日份题目: 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例1 输入:s "abaccdeff" 输出:b 示例2 输入:s "" 输出: 提示 0 …

RocketMQ学习一入门使用

从0开始学习RocketMQ,这一节主要是windows下环境部署,以及我理解的基本使用流程。 安装 1.下载地址:下载 | RocketMQ 注意,如果是windows环境下需要下载的是二进制文件,也就是这一列。 2.下载后解压到自己想要的目录…

从零开始学习查询京东快递并查询超时状态的小技巧

随着电子商务的蓬勃发展,快递成为了我们日常生活中不可或缺的一部分。而在众多快递公司中,京东快递以其高效、可靠的服务赢得了广大用户的青睐。然而,查询京东快递并同时查询快递的超时状态却一直是用户们头痛的问题。今天,我将为…

学习笔记|LED点亮原理|三极管在数字电路中的应用|Keil中的Tab设置|C51中对准双向口|STC32G单片机视频开发教程(冲哥)|第四集-上:点亮LED

文章目录 1.LED点亮原理STC32G12K128LQFP64QFN64管脚图:Tips:USB-ISP下载程GPIO (general purpose intput output)Tips:三极管在数字电路中的应用 2 新建工程Tips:Tab设置11.2 配置IO口注意: Tips:C51中对准双向口的解…

最新成果展示:GaN基Micro-LED热学模型数据库的开发及应用

由于GaN基Micro-LED表面积-体积比增加,其在热学方面的性质有别于大尺寸的LED,如缺陷复合导致的热效应将在发光区域中产生诸多“热”点,导致发光波长不均匀,这将影响后期显示系统的成像稳定性。针对上述问题,天津赛米卡…

shapely库的用法,高效处理点、线、面的几何关系和相关延申(GeoPandas 库)python

1、shapely库的基本用法 Shapely 是一个用于处理几何对象的 Python 库,它提供了各种函数和方法来进行空间分析和几何计算。下面是一些 Shapely 库的常见用法示例: 1. 创建几何对象: from shapely.geometry import Point, LineString, Poly…

uni——tab切换

案例展示 案例代码 <view class"tablist"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem" :class"current item.id?active:" click"changeTab(item)">{{item.nam…