学习CUDA编程: 从安装到加速深度学习模型推理

释放双眼,带上耳机,听听看~!
本教程将带你从零开始学习CUDA编程,包括安装和加速深度学习模型推理,适用于对模型推理速度有较高要求的人群。

前言 本文将带大家了解 CUDA 编程,学习使用C和Python调用CUDA编程接口,对模型进行推理加速,性能优化。我们将从底层原理开始,带大家了解CUDA的工作机制,一步步掌握CUDA编程。相信大家会受益菲浅。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

零教程的基本概述

在深度学习蓬勃发展的今天,模型变得越来越深,参数愈加庞大,虽然准确率不断增长,由于硬件受限,对实际场景部署的要求也越来越高,CUDA 编程成为了一门必备的武林绝学。如果你对模型的推理速度有较高要求,如果你有庞大的数据流等待推理,一起跟着教程了解这门技术。

该教程目前暂定有以下章节,如有添加将会另行说明:

学习CUDA编程: 从安装到加速深度学习模型推理

通过这些教程,可以说初入了 CUDA 编程的世界,基本学会了如何部署加速自己的深度学习模型。

一 CUDA简介

首先介绍一下 GPU,在计算机中,GPU 相比 CPU,拥有非常多的内核,这意味着 GPU 可以以非常高的吞吐量执行程序,如同一条非常宽阔的道路可以同时让很多车辆同时通行,例如最新的 RTX 3090 的核心数达到了恐怖的 10496 个,而当前的顶级 CPU 通常只有不超过 32 核心。因此我们需要正确地设计并行化加速算法,就可以发挥 GPU 的强大优势。

CUDA 是由英伟达 NVIDIA 于 2007 年所推出针对 NVIDIA GPU 专有系统,通过 CUDA,用户可方便地使用封闭好的 SDK 对 GPU 进行复杂的数值计算,在深度学习领域,CUDA 提供了一套强大的加速并行计算和人工智能相关的代码库,同时,NVIDIA 官方提供了非常完善的安装程序。

二 CUDA 安装

Linux 安装

首先检查本机是否有 nvidia 的显卡

lspci | grep -i "nvidia"

请不要在vm虚拟机中安装 CUDA

以笔主的电脑为例,有一张 RTX 3060 的移动显卡

学习CUDA编程: 从安装到加速深度学习模型推理

之后去 NVIDIA 官网 下载对应发行版的 CUDA Toolkit,这里根据自己的深度学习框架选择版本,在安装 Toolkit 时会自带 CUDA Driver

学习CUDA编程: 从安装到加速深度学习模型推理

下载文件推荐选择 runfile 格式

学习CUDA编程: 从安装到加速深度学习模型推理

文件比较大,等待时确保机器上有相应的依赖库,可以运行下面命令安装依赖库

学习CUDA编程: 从安装到加速深度学习模型推理

如果系统为图形界面,需要检查系统是否自带开源 NVIDIA Nouveau 驱动

lsmod | grep -i "nouveau"

如果有输出,需要禁用 Nouveau 驱动

sudo vim /etc/modprobe.d/blacklist.conf

在文件中追加如下内容

学习CUDA编程: 从安装到加速深度学习模型推理

同时卸载 nvidia 相关包

sudo apt purge nvidia-*

重启系统

sudo reboot

重启后使用Ctrl + Alt + F2进入 tt2,再次检查开源驱动是否启动

lsmod | grep -i "nouveau"

然后关闭显示服务,并修改安装文件权限

sudo service lightdm stop
chmod 777 cuda_10.2.89_440.33.01_linux.run

之后运行 CUDA 安装脚本,在安装时

sudo sh cuda_*_linux.run

安装完成后脚本会自动在/usr/local创建 cuda -> /usr/local/cuda-11.8/ 软链接,在 ~/.bashrc写入

学习CUDA编程: 从安装到加速深度学习模型推理

在终端中输入 nvcc -V ,如有类似下面的输出,则安装成功

学习CUDA编程: 从安装到加速深度学习模型推理

安装完成后重启图形界面

sudo service lightdm restart

接下来安装 cuDNN

developer.nvidia.com/rdp/cudnn-d…

学习CUDA编程: 从安装到加速深度学习模型推理

下载完成后解压

zip -xf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz

将解压后的文件拷贝到 CUDA 对应的安装目录下,并添加权限

学习CUDA编程: 从安装到加速深度学习模型推理

即安装完成

Windows 安装

打开设备管理器,查看当前显卡型号

学习CUDA编程: 从安装到加速深度学习模型推理

以笔主的电脑为例,有一张 RTX 3060 的移动显卡

再在桌面右击或打开系统小托盘,打开 NVIDIA 控制面板

学习CUDA编程: 从安装到加速深度学习模型推理

这里推荐 Studio 驱动程序,不建议 Game Ready 驱动程序,可以在 NVIDIA 驱动程序下载 找到对应显卡的驱动程序。安装完成后如图所示

学习CUDA编程: 从安装到加速深度学习模型推理

之后根据系统驱动程序版本下载 CUDA 安装程序,点击查看系统驱动程序版本和 CUDA 版本对应关系,推荐 exe(local)

学习CUDA编程: 从安装到加速深度学习模型推理

下载完成后双击打开,这里使用默认位置

学习CUDA编程: 从安装到加速深度学习模型推理

使用自定义安装

学习CUDA编程: 从安装到加速深度学习模型推理

这里要记住安装位置,推荐默认

学习CUDA编程: 从安装到加速深度学习模型推理

安装后会自动添加环境变量,打开 Powershell / CMD,输入nvcc -V

如有类似下面的输出,则安装成功

学习CUDA编程: 从安装到加速深度学习模型推理

接下来安装 cuDNN

developer.nvidia.com/rdp/cudnn-d…

下载完成解压后如何下图

学习CUDA编程: 从安装到加速深度学习模型推理

把这三个文件夹拷贝到 CUDA 的安装目录下,同名文件夹会自动合并。

将如下路径添加到系统环境变量中

学习CUDA编程: 从安装到加速深度学习模型推理

即安装完成

三 PyCUDA

PyCUDA 是 NVIDIA 针对 python 编写的 CUDA API,底层使用 C++, 使用 PyCUDA 可以更方便地编写代码。同样 CUDA 错误都会自动转换为 Python 异常。

Linux 安装

确保电脑中安装了 python 环境和 pip,安装命令

pip install pycuda

Windows 安装

根据自己的 CUDA 版本 和 Python 版本下载 whl 文件 www.lfd.uci.edu/~gohlke/pyt…

学习CUDA编程: 从安装到加速深度学习模型推理

安装命令

pip install pycuda*.whl

四 Nvidia Nsight Systems

简称 nsys,是一款低开销性能分析工具,旨在为开发人员提供优化软件所需的洞察力。无偏差的活动数据可在工具中可视化,可帮助用户调查瓶颈,避免推断误报,并以更高的性能提升概率实现优化。用户将能够识别问题,例如 GPU 闲置、不必要的 GPU 同步、CPU 并行化不足。

根据系统平台选择合适的安装包

developer.nvidia.cn/gameworksdo…

学习CUDA编程: 从安装到加速深度学习模型推理

安装完成后输入命令

nsys --version

如有返回,即安装完成

本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

深度理解变分自编码器(VAE) | 从入门到精通

计算机视觉入门1v3辅导班

计算机视觉交流群

用于超大图像的训练策略:Patch Gradient Descent

CV小知识讨论与分析(5)到底什么是Latent Space?

【免费送书活动】关于语义分割的亿点思考

新方案:从错误中学习,点云分割中的自我规范化层次语义表示

经典文章:Transformer是如何进军点云学习领域的?

CVPR 2023 Workshop | 首个大规模视频全景分割比赛

如何更好地应对下游小样本图像数据?不平衡数据集的建模的技巧和策

Transformer交流群

U-Net在2022年相关研究的论文推荐

用少于256KB内存实现边缘训练,开销不到PyTorch千分之一

PyTorch 2.0 重磅发布:一行代码提速 30%

Hinton 最新研究:神经网络的未来是前向-前向算法

聊聊计算机视觉入门

FRNet:上下文感知的特征强化模块

DAMO-YOLO | 超越所有YOLO,兼顾模型速度与精度

《医学图像分割》综述,详述六大类100多个算法

如何高效实现矩阵乘?万文长字带你从CUDA初学者的角度入门

近似乘法对卷积神经网络的影响

BT-Unet:医学图像分割的自监督学习框架

语义分割该如何走下去?

轻量级模型设计与部署总结

从CVPR22出发,聊聊CAM是如何激活我们文章的热度!

入门必读系列(十六)经典CNN设计演变的关键总结:从VGGNet到EfficientNet

入门必读系列(十五)神经网络不work的原因总结

入门必读系列(十四)CV论文常见英语单词总结

入门必读系列(十三)高效阅读论文的方法

入门必读系列(十二)池化各要点与各方法总结

TensorRT教程(三)TensorRT的安装教程

TensorRT教程(一)初次介绍TensorRT

TensorRT教程(二)TensorRT进阶介绍

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

图像处理算法发展及卷积神经网络在目标检测中的应用

2023-11-24 17:09:14

AI教程

基于深度学习的森林火灾识别方法

2023-11-24 17:13:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索