CUDA+cuDNN+TensorRT 配置避坑指南

news2024/12/24 3:10:13

深度学习模型加速部署的环境配置,需要在本地安装NVIDIA的一些工具链和软件包,这是一个些许繁琐的过程,而且一步错,步步错。笔者将会根据自己的经验来提供建议,减少踩坑几率。当然可以完全按照官方教程操作,但是本人也发现一些问题,下面会说到。官方教程:Installation Guide :: NVIDIA Deep Learning TensorRT Documentation

笔者的PC配置信息为:ubuntu22.04 + 1650

下面将会从cuda driver驱动安装说起,各个步骤的注意事项和技巧。

1.驱动安装

        对于显卡驱动安装,网上的教程五花八门,大部分教程都是手动安装,原因是比较稳定。但并不总是如此。nvidia官方推荐的是通过系统自带的软件更新器安装,因此推荐使用这种简单的方法,效果一样。

        当然通过自带的软件更新器安装也可以通过命令行进行。

        首先检查驱动:ubuntu-drivers devices 

        效果和上图一样

        然后安装驱动 (建议安装带recommanded) :sudo apt-get install nvidia-driver-xxx(替换成自己的)

        然后重启 reboot

        查看显卡驱动安装情况:nvidia-smi

        可以看见驱动版本号525.125,CUDA版本号12.0。第一个坑

        此处需要注意,此处的CUDA Version意思是最大支持的cuda版本,等会实际安装的cuda toolkit可能会小于这个版本,但下载的时候仍然需要按照此处的版本为标准,而不是toolkit的版本。对于笔者,后续也就是12.0,切记。

        至此,驱动安装结束。

2.cuda toolkit安装

        cuda toolkit安装需要按照官方指定的对应驱动版本下载。CUDA 12.2 Release Notes — cuda-toolkit-release-notes 12.2 documentation

        笔者驱动为525.125,因此选择第一个进行下载(从我的驱动信息同样说明,笔者的cuda最高支持版本为12.0,刚好与其对应)。各位根据自己的版本下载,官方链接:                           CUDA Toolkit Archive | NVIDIA Developer

        进行完上面的操作之后,还需要手动安装nvcc        

        sudo apt install nvidia-cuda-toolkit

        安装可能失败,提示需要安装其他的XXX依赖包,

        只需要根据提示操作:sudo apt-get install XXX   

        安装结束,验证:nvcc -V

        查看cuda toolkit版本  

        此处,第二个坑,本站有帖子说此处显示的为cuda版本,也就是11.5。但通过笔者的实践操作,这是不对的,接下来如果按照这个版本去安装cudNN和tensorRT会导致失败,笔者已经通过不同的方式验证了其失败的情况。我已经删除一些我下过的deb包了,因为太占空间,下面是我还没来得及删除的。因此cuda版本请参考第一条,驱动安装,以那里为准。NVIDIA官方在教程里并为明确说明,因此这是一个坑。

3.cuDNN安装

        nvcc安装结束,开始安装cuDNN。首先从中文官网下载匹配的deb包,选择对应版本。CUDA 深度神经网络库 (cuDNN) | NVIDIA 开发者

        此时会发现cn网站不提供下载,也是醉了。

        被迫转到CUDA Deep Neural Network (cuDNN) | NVIDIA Developer英文官网下载,而且需要注册账号,没办法。登陆之后,你有两个下载选择。

        上文已经讲到,一切以第一小节里的cuda version信息为准。笔者为cuda为12.0因此选择第一个。同样选择对应平台版本下载即可。

        下载完成之后进行安装:sudo dpkg -i xxx.deb

        安装完成之后继续执行:

sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/

sudo apt-get update

        接下来是第三个坑,官方文档里需要继续安装三个软件包,但是按照官方的提示是无法安装的,如下图,红色的是上面两个已经执行的命令,绿色的是接下来要执行的命令。分别是安装三个软件包。

        然而,这三个软件包是放在系统的:/var/cudnn-local-repo-ubuntu目录下

        进入该目录直接sudo dpkg -i xxx.deb安装即可。

        安装完成之后,进行验证,直接按照官方的verify方法即可:Installation Guide - NVIDIA Docs

最后输出test passed即可。

4.tensorRT安装

        官网下载Log in | NVIDIA Developer,找到自己的cuda版本和平台。官方安装步骤Installation Guide :: NVIDIA Deep Learning TensorRT Documentation

        安装下载的deb包,根据提示操作。

        最后测试是否成功:dpkg -l | grep TensorRT

        输出如下:

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

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

相关文章

新手学习笔记-----⽂件操作

目录 1. 为什么使⽤⽂件? 2. 什么是⽂件? 2.1 程序⽂件 2.2 数据⽂件 2.3 ⽂件名 3. ⼆进制⽂件和⽂本⽂件? 4. ⽂件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 ⽂件指针 4.3 ⽂件的打开和关闭 5. ⽂件的顺序读写 …

多层神经网络和激活函数

多层神经网络的结构 多层神经网络就是由单层神经网络进行叠加之后得到的,所以就形成了层的概念,常见的多层神经网络有如下结构: 1)输入层(Input layer),众多神经元(Neuron&#xff…

点云处理开发测试题目

点云处理开发测试题目 文件夹中有一个场景的三块点云数据,单位mm。是一个桌子上放了一个纸箱,纸箱上有四个圆孔。需要做的内容是: 1. 绘制出最小外接立方体,得到纸箱的长宽高值。注意高度计算是纸箱平面到桌子平面的距离。 2. 计…

【每日一题】买卖股票的最佳时机 IV

文章目录 Tag题目来源题目解读解题思路方法一:动态规划 写在最后 Tag 【动态规划】【数组】【2023-10-04】 题目来源 188. 买卖股票的最佳时机 IV 题目解读 本题与 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II、123. 买卖股票的最佳时机 III 题意目的一…

一文拿捏Spring之IOC、循环依赖、Spring的设计模式

1.IOC(控制反转)与DI(依赖注入) 🌟面试题(IOC-DI): IOC控制反转是一种实现对象解耦的思想。传统情况下是采用new的方式来创建对象,这个对象是由我们来直接控制的,但是有了IOC后,我们可以在IOC运行期间通过DI动态的将依赖的对象进…

嵌入式系统设计与应用---ARM处理器体系结构(学习笔记)

ARM处理器概述 Cortex-A8处理器工作模式 ps:除用户模式以外的其他模式被称为非用户模式或特权模式;除用户模式及系统模式以外的其他模式可称为异常模式 Cortex-A8存储器管理​​​​​​​ ARM的基本数据类型 字节(Byte)&#…

激活函数介绍

介绍 神经网络当中的激活函数用来提升网络的非线性,以增强网络的表征能力。它有这样几个特点:有界,必须为非常数,单调递增且连续可求导。我们常用的有sigmoid或者tanh,但我们都知道这两个都存在一定的缺点&#xff0c…

第十五章 类和对象——友元

生活中你的家有客厅(Public),有你的卧室(Private) 客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去 但是呢,你也可以允许你的好闺蜜好基友进去。 在程序里,有些私有属性 也想让类外特殊的一些…

springboot配置静态资源访问

使用springboot搭建web项目的时候,springboot默认从static目录访问静态资源 例如我们写一个html,然后去访问这个html 内容《你好!》 然后运行项目 运行成功,此时我用的端口号是8089 然后去浏览器里访问hello.html http://localhost:8089/…

力扣 -- 879. 盈利计划(二维费用的背包问题)

解题步骤&#xff1a; 参考代码&#xff1a; 未优化的代码&#xff1a; class Solution { public:int profitableSchemes(int n, int minProfit, vector<int>& group, vector<int>& profit) {//计划数int lengroup.size();//每一维都多开一行空间vector&…

查询表中指定列数据

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: select 列名1, 列名2, ..., 列名n from 表名; 想要查多少列就写多少个列名,不需要看的不要写就行了 案例&#xff1a;查询emp表中&…

Spring面试题学习: 单例Bean是单例模式吗?

单例Bean是单例模式吗 学习背景答案扩展知识单例模式Spring BeanJava Bean单例Bean 个人评价我的回答 学习背景 想换工作. 学习记录, 算是一个输出. 答案 通常来说, 单例模式是指在一个JVM中, 一个类只能构造出一个对象. 有很多方法来实现单例模式, 比如饿汉模式. 但是我们通…

使用Pytorch构建神经网络

构建神经网络的典型流程 定义一个拥有可学习参数的神经网络遍历训练数据集处理输入数据使其流经神经网络计算损失值将网络参数的梯度进行反向传播以一定的规则更新网络的权重 我们首先定义一个Pytorch实现的神经网络: # 导入若干工具包 import torch import torch.nn as nn …

【vue】element强制刷新el-carousel的dom:

文章目录 一、问题:二、分析:三、解决: 一、问题: 二、分析: el-carouse里面的数据是最新的&#xff0c;但dom却是前一个的数据 注意&#xff1a;使用了this.$forceUpdate();或this.$set(xx,xx);&#xff0c;没有效果 三、解决: :key"new Date().getTime()"

透明度和透明贴图制作玻璃水杯

1、什么是透明度 模型透明度是指一个物体或模型在呈现时的透明程度。它决定了物体在渲染时&#xff0c;是否显示其后面的物体或背景。 在图形渲染中&#xff0c;透明度通常以0到1之间的值表示。值为0表示完全透明&#xff0c;即物体不可见&#xff0c;背景或其他物体完全穿透…

机器学习笔记(一)

1.线性回归模型 2. 损失函数 3.梯度下降算法 多元特征的线性回归 当有多个影响因素的时候,公式可以改写为: 当有多个影响因素的时候为了方便计算,可以使用 Numpy下面的点积方法, np.dot(w,x) 最后再加个b 就省略了很多书写步骤,这叫做矢量化 多元回归的梯度下降 左边是一…

Nginx实现动静分离

一、概述 1、什么是动静分离 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来&#xff0c;动静资源做好了拆分以后&#xff0c;我们就可以根据静态资源的特点将其做缓存操作&#xff0c;这就是网站静态化处理的核心思路。 动静分离简单的概…

【ldt_struct结构体的利用】RWCTF2023-Digging-into-kernel-3

ldt_struct 结构体 对于该结构体知识请自行谷歌学习&#xff0c;这里仅仅讲利用 ldt 即局部段描述符表&#xff08;Local Descriptor Table&#xff09;该结构体如下&#xff0c;结构体的大小为 0x10&#xff1a; /** ldt_structs can be allocated, used, and freed, but t…

【算法导论】中位数和顺序统计量

目录 1. 最小值和最大值1.1 寻找最大值或最小值1.2 同时寻找最大值与最小值 2. 期望为线性时间的选择算法2.1 解决的问题2.2 解决的办法2.3 伪代码2.4 RANDOMIZED-SELECT函数运行过程2.5 算法时间复杂度的分析2.5.1 最坏运行时间2.5.2 期望运行时间 3. 最坏为线性时间的选择算法…

斐波那契模型系列【动态规划】

动态规划步骤 1、状态表示 是什么&#xff1a;dp表&#xff08;可能是一维或二维数组&#xff09;里的值所表示的含义。 怎么来&#xff1a; 1、题目要求 2、经验题目要求 3、发现重复子问题 2、状态转移方程 dp[i]... 3、初始化 保证填表不越界 4、填表顺序 5、返回值 写代码时…