0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用NVIDIA安培结构和TensorRT部署神经网络

星星科技指导员 来源:NVIDIA 作者:About Jeff Pool,Abo 2022-03-31 16:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在部署神经网络时,考虑如何使网络运行更快或占用更少的空间是很有用的。一个更高效的网络可以在有限的时间预算内做出更好的预测,对意外的输入做出更快的反应,或者适应受限的部署环境。

稀疏性是一种有希望达到这些目标的优化技术。如果网络中有零,则不需要对其进行存储或操作。稀疏的好处似乎很简单。要实现承诺的收益,长期以来存在三个挑战。

Acceleration – 细粒度、非结构化、权重稀疏缺乏结构,无法使用高效硬件中可用的向量和矩阵指令来加速常见的网络操作。标准稀疏格式对于除高稀疏以外的所有格式都是低效的。

Accuracy – 为了实现具有细粒度、非结构化稀疏性的有用加速,必须使网络稀疏,这通常会导致精度损失。尝试使加速更容易的替代修剪方法,例如去除权重块、通道或整个层的粗粒度修剪,可能更快地遇到精度问题。这限制了潜在的性能优势。

Workflow – 当前在网络修剪方面的许多研究都可以作为有用的存在性证明。研究表明,网络 A 可以实现稀疏性 X 。当您尝试将稀疏性 X 应用于网络 B 时,麻烦就来了。由于网络、任务、优化器或任何超参数的不同,它可能无法工作。

在本文中,我们将讨论 NVIDIA 安培体系结构如何应对这些挑战。今天, NVIDIA 发布了 TensorRT 版本 8 。 0 ,它引入了对 NVIDIA 安培体系结构 GPU 上可用的稀疏张量核的支持。

TensorRT 是一个用于高性能深度学习推理的 SDK ,它包括一个优化器和运行时,可以最大限度地减少延迟和提高生产中的吞吐量。稀疏张量核通过一个简单的训练流程和 TensorRT 8 。 0 部署,可以消除神经网络中不必要的计算,与密集网络相比,可以获得 30% 以上的性能/瓦特增益。

稀疏张量核加速了 2 : 4 细粒度结构稀疏性

NVIDIA A100 GPU 为其张量核增加了对细粒度结构稀疏性的支持,稀疏张量核加速了 2 : 4 的稀疏模式。在四个值的每个连续块中,两个值必须为零。这自然会导致 50% 的稀疏度,这是细粒度的。没有矢量或块结构修剪在一起。这样的规则模式易于压缩,并且元数据开销较低(图 1 )。

图 1 。 2 : 4 结构稀疏矩阵 W 及其压缩表示

稀疏张量核通过只对压缩矩阵中的非零值进行运算来加速这种格式。它们使用与非零一起存储的元数据仅从另一个未压缩的操作数中提取必要的值。因此,对于 2x 的稀疏性,它们可以在一半的时间内完成相同的有效计算。表 1 显示了稀疏张量核支持的各种数据类型的详细信息。

表 1 。稀疏张量核在 NVIDIA 安培结构中的性能。

2 : 4 结构化稀疏网络保持精度

当然,没有良好的准确性,性能是毫无意义的。我们开发了一个简单的培训工作流程,可以轻松生成 2 : 4 结构化稀疏网络,匹配密集网络的精度:

从密集的网络开始。我们的目标是从一个已知的好模型开始,该模型的权重已经收敛,从而得到有用的结果。

在稠密网络上,对权值进行剪枝以满足 2 : 4 的结构稀疏性准则。在每四个元素中,只删除两个。

重复原来的培训程序。

此工作流在步骤 2 中使用一次修剪。在修剪阶段之后,稀疏模式被修复。有很多方法可以做出修剪的决定。哪些权重应该保留,哪些权重应该强制为零?我们发现一个简单的答案很有效:重量大小。我们更喜欢删减已经接近零的值。

正如您所料,突然将网络中的一半权重变为零会影响网络的精度。第三步通过足够多的权重更新步骤来恢复精度,让权重收敛,并且有足够高的学习率让权重充分移动。在广泛的网络中,它生成一个稀疏模型,从步骤 1 开始保持密集网络的精度。

表 2 是我们使用 PyTorch 库 自动稀疏( ASP ) 中实现的此工作流获得的 FP16 精度结果示例。有关 FP16 和 INT8 的完整结果的更多信息,请参阅 加速稀疏深度神经网络 白皮书。

表 2 。用我们的配方训练的 2 : 4 结构化稀疏网络的样本精度。

案例研究: ResNeXt-10132x8d

以下是以 ResNeXt-10132x8d 为目标使用工作流的简单程度。

生成稀疏模型

您使用 torchvision 预训练的 model ,因此步骤 1 已经完成。因为您使用的是 ASP ,所以第一个代码更改是导入库:

加载此训练运行的预训练模型。不过,与其训练密集权重,不如在训练循环之前修剪模型并准备优化器(工作流的步骤 2 ):

就这样。训练循环正常进行,默认命令从预训练模型开始,该模型重用原始超参数和优化器设置进行再训练:

当训练完成(第 3 步)时,网络精度应恢复到与预训练模型的精度相匹配,如表 2 所示。通常,性能最好的检查点可能不是来自最后一个历元。

准备推理

对于推理,使用 TensorRT 8 。 0 导入训练模型的稀疏检查点。在导入 TensorRT 之前,需要将模型从本机框架格式转换为 ONNX 格式。可以按照 quickstart/IntroNotebooks GitHub repo 中的笔记本进行转换。

我们已经将稀疏 ResNeXt-10132x8d 转换为 ONNX 格式。你可以从 NGC 下载这个模型。如果没有安装 NGC ,请使用以下命令安装 NGC :

安装 NGC 后,通过运行以下命令下载 ONNX 格式的稀疏 ResNeXt-10132x8d :

要将 ONNX 模型导入到 TensorRT ,请克隆 TensorRT repo 并设置 Docker 环境,如 NVIDIA / TensorRT 自述 中所述。

进入 trtexec 根目录后,使用 TensorRT 将稀疏 ONNX 模型转换为 TensorRT 引擎。创建一个目录以存储模型和引擎:

将下载的 ResNext ONNX 模型复制到 /workspace/TensorRT/model 目录,然后执行 trtexec 命令,如下所示:

名为 resnext101 _ engine 。 trt 的新文件创建于/ workspace / TensorRT / model /。 resnext101 _ engine 。 trt 文件现在可以通过以下方法之一序列化以执行推断:

TensorRT 运行时的 C ++或 Python ,如在这个 示例笔记本 中所示

NVIDIA Triton ®声波风廓线仪推断服务器

TensorRT 8 。 0 中的性能

将 TensorRT 8 。 0 中的稀疏模型在 A100 GPU 上以不同批量大小进行基准测试显示了两个重要趋势:

性能优势随着 A100 所做的工作量的增加而增加。更大的批量通常会带来更大的改进,在高端接近 20% 。

在较小的批处理规模下, A100 时钟速度可以保持在较低的水平,使用稀疏性可以将它们推到更低的水平,以获得相同的性能,从而导致比性能本身更大的功率效率改进,从而获得高达 36% 的性能/瓦增益。

别忘了,这个网络和密集基线的精确度是一样的。这种额外的效率和性能不需要惩罚的准确性。

图 2 。性能和能效方面的稀疏性改进(以密集为基准)

概括

稀疏性是神经网络压缩和简化研究的热点。不过,到目前为止,细粒度稀疏性还没有兑现其性能和准确性的承诺。我们开发了 2 : 4 细粒度结构稀疏性,并将支持直接构建到 NVIDIA 安培结构稀疏张量核中。通过这个简单的三步稀疏再训练工作流,您可以生成与基线精度匹配的稀疏神经网络, TensorRT 8 。 0 在默认情况下对其进行加速。

关于作者

About Jeff Pool

Jeff Pool 是深入学习体系结构团队的高级架构师,负责研究高效的 DL 方法。在 2012 年加入 NVIDIA 之后,他对各种体系结构的许多领域做出了贡献,但最近他一直在使用稀疏神经网络。 Jeff 拥有计算机科学博士学位,专注于高效图形硬件。

About Abhishek Sawarkar

Abhishek Sawarkar 责在 NVIDIA Jarvis 框架上开发和展示以深度学习为重点的内容。他的背景是计算机视觉机器学习,但目前他正致力于整个 Jarvis 多模式管道,包括 ASR 、 NLP 、 TTS 和 CV 。他是卡内基梅隆大学的一名应届毕业生,具有电气和计算机工程硕士学位。

About Jay Rodge

Jay Rodge 是 NVIDIA 的产品营销经理,负责深入学习和推理产品,推动产品发布和产品营销计划。杰伊在芝加哥伊利诺伊理工学院获得计算机科学硕士学位,主攻计算机视觉和自然语言处理。在 NVIDIA 之前,杰伊是宝马集团的人工智能研究实习生,为宝马最大的制造厂使用计算机视觉解决问题。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4842

    浏览量

    108183
  • NVIDIA
    +关注

    关注

    14

    文章

    5694

    浏览量

    110118
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1111

    浏览量

    52021
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    面向嵌入式部署神经网络优化:模型压缩深度解析

    1.为什么需要神经网络模型压缩? 神经网络已经成为解决复杂机器学习问题的强大工具。然而,这种能力往往伴随着模型规模和计算复杂度的增加。当输入维度较大(例如长时序窗口、高分辨率特征空间)时,模型需要
    的头像 发表于 02-24 15:37 5453次阅读
    面向嵌入式<b class='flag-5'>部署</b>的<b class='flag-5'>神经网络</b>优化:模型压缩深度解析

    神经网络的初步认识

    日常生活中的智能应用都离不开深度学习,而深度学习则依赖于神经网络的实现。什么是神经网络神经网络的核心思想是模仿生物神经系统的结构,特别是大
    的头像 发表于 12-17 15:05 460次阅读
    <b class='flag-5'>神经网络</b>的初步认识

    matlab的算法部署在simulink中

    有没有哪位大佬能提供一下思路,遇到一个问题matlab得不到神经网络fitcnet模型的权重参数,所以simulink没办法部署,那遇到这种情况该如何处理
    发表于 12-08 15:27

    NMSIS神经网络库使用介绍

    NMSIS NN 软件库是一组高效的神经网络内核,旨在最大限度地提高 Nuclei N 处理器内核上的神经网络的性能并最​​大限度地减少其内存占用。 该库分为多个功能,每个功能涵盖特定类别
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    , batch_size=512, epochs=20)总结 这个核心算法中的卷积神经网络结构和训练过程,是用来对MNIST手写数字图像进行分类的。模型将图像作为输入,通过卷积和池化层提取图像的特征,然后通过全连接层进行分类预测。训练过程中,模型通过最小化损失函数来优化模型参数,从而提高分类准确性。
    发表于 10-22 07:03

    NVIDIA TensorRT LLM 1.0推理框架正式上线

    TensorRT LLM 作为 NVIDIA 为大规模 LLM 推理打造的推理框架,核心目标是突破 NVIDIA 平台上的推理性能瓶颈。为实现这一目标,其构建了多维度的核心实现路径:一方面,针对需
    的头像 发表于 10-21 11:04 1425次阅读

    CICC2033神经网络部署相关操作

    在完成神经网络量化后,需要将神经网络部署到硬件加速器上。首先需要将所有权重数据以及输入数据导入到存储器内。 在仿真环境下,可将其存于一个文件,并在 Verilog 代码中通过 readmemh 函数
    发表于 10-20 08:00

    液态神经网络(LNN):时间连续性与动态适应性的神经网络

    1.算法简介液态神经网络(LiquidNeuralNetworks,LNN)是一种新型的神经网络架构,其设计理念借鉴自生物神经系统,特别是秀丽隐杆线虫的神经
    的头像 发表于 09-28 10:03 1568次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    神经网络的并行计算与加速技术

    随着人工智能技术的飞速发展,神经网络在众多领域展现出了巨大的潜力和广泛的应用前景。然而,神经网络模型的复杂度和规模也在不断增加,这使得传统的串行计算方式面临着巨大的挑战,如计算速度慢、训练时间长等
    的头像 发表于 09-17 13:31 1299次阅读
    <b class='flag-5'>神经网络</b>的并行计算与加速技术

    如何在魔搭社区使用TensorRT-LLM加速优化Qwen3系列模型推理部署

    TensorRT-LLM 作为 NVIDIA 专为 LLM 推理部署加速优化的开源库,可帮助开发者快速利用最新 LLM 完成应用原型验证与产品部署
    的头像 发表于 07-04 14:38 2429次阅读

    无刷电机小波神经网络转子位置检测方法的研究

    摘要:论文通过对无刷电机数学模型的推导,得出转角:与三相相电压之间存在映射关系,因此构建了一个以三相相电压为输人,转角为输出的小波神经网络来实现转角预测,并采用改进遗传算法来训练网络结构与参数,借助
    发表于 06-25 13:06

    神经网络专家系统在电机故障诊断中的应用

    摘要:针对传统专家系统不能进行自学习、自适应的问题,本文提出了基于种经网络专家系统的并步电机故障诊断方法。本文将小波神经网络和专家系统相结合,充分发挥了二者故障诊断的优点,很大程度上降低了对电机
    发表于 06-16 22:09

    神经网络RAS在异步电机转速估计中的仿真研究

    众多方法中,由于其结构简单,稳定性好广泛受到人们的重视,且已被用于产品开发。但是MRAS仍存在在低速区速度估计精度下降和对电动机参数变化非常敏感的问题。本文利用神经网络的特点,使估计更为简单、快速
    发表于 06-16 21:54

    使用NVIDIA Triton和TensorRT-LLM部署TTS应用的最佳实践

    针对基于 Diffusion 和 LLM 类别的 TTS 模型,NVIDIA Triton 和 TensorRT-LLM 方案能显著提升推理速度。在单张 NVIDIA Ada Lovelace
    的头像 发表于 06-12 15:37 2079次阅读
    使用<b class='flag-5'>NVIDIA</b> Triton和<b class='flag-5'>TensorRT</b>-LLM<b class='flag-5'>部署</b>TTS应用的最佳实践

    基于FPGA搭建神经网络的步骤解析

    本文的目的是在一个神经网络已经通过python或者MATLAB训练好的神经网络模型,将训练好的模型的权重和偏置文件以TXT文件格式导出,然后通过python程序将txt文件转化为coe文件,(coe
    的头像 发表于 06-03 15:51 1506次阅读
    基于FPGA搭建<b class='flag-5'>神经网络</b>的步骤解析