英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)

发布于 2023-3-28 14:57
浏览
0收藏

​英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(一)​


​前面​​从不同的方面全面介绍了英伟达芯片的特性和用途,本文将重点介绍其芯片在智能汽车上对应的解决方案上。主要从芯片如何在算力、存储、软件等方面更好的满足智驾域控、数据闭环和软件开发服务等方面从实践角度落实具体方案。整个英伟达系列芯片对应用端开放了各类不同的软件开发包,可以支持从底层软件到上层软件的整个全栈功能开发。


如下图所示,表示了英伟达面向智能汽车的软件架构设计模块。从底至上分别表示硬件模块HW,硬件抽象层Low Level API,跨平台多媒体框架Gstreamer以及应用软件Application。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

其中在如下软件架构中,机器视觉、神经网络等几乎是贯穿设备的整个处理过程。随着人工智能在智能汽车上的广泛应用和发展,神经网络模型的规模越来越大,不管是训练还是部署,对于智能汽车域控制器的算力,带宽和存储的要求越来越高。同时,AI算法内在的稀疏性和模型压缩等优化技术带来的稀疏特征给降低计算需求带来难得的机会,是业界思考和研究的热点。同时,这类算法所承载的设备受限于功耗、能耗、存储等,因此并不能在这类设备上部署复杂的模型。因此,模型压缩则是一个解决途径,能够大幅降低深度学习模型的尺寸。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

对于像英伟达系列芯片这样以GPU为核心的AI计算系统,如何利用这一机会,涉及到软硬件架构设计和实现的方方面面。如何在不影响基本的通用编程模型的前提下,平衡成本和收益,让计算资源发挥最大效能,是一个非常复杂而有挑战的问题。英伟达在这方面一直在不断改进和突破,特别是在其对真实算力的利用率上利用先进的矩阵稀疏化方法实现了高效的处理方法。

英伟达系列芯片对机器视觉的处理过程

对于智驾系统来说,英伟达芯片可以根据具体的视觉传感器类型进行不同的处理策略。如下图表示一种典型的行泊车分时复用的视觉信息处理图。其中的连接方式表示的是智能行车功能的处理逻辑。


英伟达的深度学习加速器(无论是GPU还是DLA)都是允许对实时库进行最优化编程的,这样可以大大提升计算效率。其中,GPU的编程模式最为灵活。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

如下图所示,智能行车功能需要应用到完整的行车摄像头(包含前视、侧视摄像头感知信息)。


我们将具体的数据整体融合到“mega kernels”中,以将数据保存在本地计算核中(由于数据存取在延迟和功率方面是很好资源的,因此明智地使用内存资源非常重要)。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

首先,输入的原始图像会经过ISP图像处理模块进行典型的图像处理,如白平衡、图像去噪、畸变矫正、颜色校正、RGB转YUV等初级图像处理。随后,考虑到行车视觉会建立相关的深度神经网络模型进行相应的深度学习,通过DLA、PVA、GPU三大模块共同实现神经网络模型加速。考虑到具体场景的分时复用,泊车摄像头在这类场景下通常只需要输出视频做记录即可,因此第二条链路则是只考虑进行原始视频的基础处理,渲染及数据融合等。最后,泊车摄像头所生成的视觉会输入到行车终端用于在行车场景重构中进行渲染显示。毫米波雷达链路由于只输入目标级数据,因此,只考虑通过CPU的部分逻辑算力处理和GPU的并行运算。

稀疏矩阵乘法原理与优化

1、什么是稀疏矩阵

简单来说,稀疏化是一种聪明的数据处理和模型压缩方式。它从人类大脑得到灵感,让神经网络在计算时仅启用所需神经元。稀疏化计算的技术原理是指在原有AI计算的大量矩阵运算中,将含有零元素或无效元素剔除,以加快计算速度。它在需要海量数据处理的AI加速计算中优势尤为突出,能让算力超越极限,让芯片得以完成复杂的AI任务,显著降低能耗和成本。


比如经典的多模态稀疏化模型,不仅大幅减少计算量、显著提升性能,而且在零样本训练的情况下具有更高的精度。


针对模型加速而言,模型稀疏是一个良好的特性。那么什么是稀疏模型呢?模型权值中,零值比较多,一般可以通过稀疏度(零值元素的占比)来衡量。稀疏的方式分为结构化稀疏和非机构化稀疏。结构化稀疏好处是更好的利用硬件性能来实现加速,坏处是模型精度难以保证。非结构化稀疏好处是模型精度一般可以保证,但却不能保证很好的硬件性能。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

稀疏的模型与数据展现出来了不规则的非结构化特征,这与传统面向稠密数据与模型设计的硬件电路的结构化特征不一致。算法非结构化与硬件结构化特征不一致,导致典型稀疏算法在传统硬件(如CPU)上处理性能与应用需求相差3个数量级。

2、稀疏矩阵的量化

整体上看,数据内存占用越少,可表示的动态范围越低,精度也越低,浮点数可表示的范围比整数要多得多。大多数深度学习模型在训练Training时,梯度更新往往比较微小,一般模型参数都采用较高精度的FP32数据格式进行训练。但推理Inference时,模型可能需要更长时间来预测结果,在端侧会影响用户体验。因此,需要提升计算速度,常采用更低精度的FP16或INT8。


量化是针对训练好的模型的权重或计算op,将高精度、“大块头”的数据转换为低精度去表示和计算,一般会关注FP16/INT8这些低精度的数据类型的量化(FP32->INT8)。


如下图显示了简单的基于矩阵稀疏化技术压缩感知的视觉信号采样、传输和恢复过程。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

其中,原始视觉图像x进行前端采样y,各环节关系如下:

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

,其中y:M维测量信号,Ф:MxN测量矩阵,x:N维原始信号;

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

,s:n维稀疏变换信号,Ψ:稀疏变换矩阵;s中只有k个非零元素,成为k稀疏度。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

,表示稀疏反变换过程,则可以通过前序帧所算出来的稀疏变换矩阵反向求出稀疏重构信息。


英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

,基于压缩感知的思路是:在测量矩阵Φ和稀疏变换矩阵Ψ已知的情况下,由信号的 M 个测量y来重构原始N维信号x。这里的关键是:如果信号s足够稀疏,那么对于 y 的 M 个测量就可以重构 N 维原始信号。这个问题可以由以下的优化问题来描述:

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

3、稀疏矩阵的优化

如上加速效果与计算量和GEMM的维度有关,如下图表示英伟达 A100Tensor Core上的稀疏与稠密Int8下的GEMM计算对比图,通常GEMM规模越大,加速效果越接近2x。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

然而,模型压缩可能引起不规则的计算模式,对于以往针对稠密神经网络加速器,并不能受益于模型压缩。因此,需要提出一些有效的稀疏卷积的表达方式,精简卷积规则(Concise Convolution Rule,CCR)便是一种比较好的方法,它将卷积分解成较好的稠密子卷积,以确保稠密子卷积能够很容易的利用现有的加速器进行处理。同时,加速器的吞吐量能够受益于加速器提供的加速性能和稀疏化降低的计算量。如下图表示了精简卷积加速能力的示意图。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

如上图有半部分的特性主要包括三个部分:

1)主神经网络:体现卷积核稀疏度;

2)输入特征图:以稀疏度为主的神经网络;

3)卷积核和输入特征图稀疏度都高的神经网络;


其运算过程是通过将稀疏卷积核和输入特征图分解成多个相对稠密的子卷积核和子输入特征图,这些子卷积核或特征图可能根据不同的情况适配如上三类不同的神经网络特性图,并进行合适的适配和卷积运算。该部分计算的结果需要累加到输出特征图中。这种方式可以降低计算量的同时,维持了计算的卷积特性,能够很好地映射到现有的稠密卷积神经网络设计加速器中。

英伟达的Tensor Core稀疏化技术

对于英伟达系列芯片来说,为了提升计算效能,稀疏化便是应用到极致的一种算法。对于其上的稀疏矩阵来说,Orin中的CUDA Core和Tensor Core分别包含有2048个和64个。与上一代Volta架构的GPU相比,Tensor Core引入了对稀疏性的支持,可以提供INT8的稀疏算力高达170 TOPS,Cuda Core可以提供32位浮点算力为5.3TFLOPs。


以上提到的神经网络技术,对于整个芯片算力的提升都涉及到被称之为稀疏性Sparsity的技术算法。其稀疏化技术针对神经网络核心主要有两个部分:

1、权重修剪

对构造的权重网络进行密集训练,随后再将网络权重进行修剪(通常为2:4的稀疏矩阵)。


如下图所示,其采用的2:4稀疏度(即2:4的压缩格式只需要2bit的metadata),每一组的4个值都至少包含两个非零值。需要对非零权重进行微调完成后,就可以有效的压缩权重网络,使得数据占用空间和带宽均减少为原来的一半。新矩阵存储非零值,加一个2bit的索引数组可以进行位置编码metadata。同时,通过非零值精准快速提取,位置可根据编码metadata获取,可以加快对内存访问速度。如果是16 bit数据,相比于原始存储方式,压缩后的矩阵可以节省约44%的空间。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

针对单个数据的稀疏化加速过程参照上图的压缩方式,比如4个16位数据:原有格式4x16=64bit,压缩后格式2*16+2*2=36bit。

2、权重过滤

稀疏化的Tensor Core中可根据权重索引过滤掉权重网络中多余的0,在做内积时,只需要让权值不为0的部分和输入的Tensor进行乘积即可。通过跳零计算模式可以使数学计算的吞吐量翻倍,从而可以大大减少矩阵乘法所需计算量。

英伟达系列芯片如何应用于智能汽车开发看这两篇文章就够了(二)-汽车开发者社区

如上图表示了英伟达芯片Tensor Core上进行对应的矩阵卷积乘法的计算方法。左图表示稠密矩阵乘法的计算结果,右图表示稀疏矩阵乘法GEMM的计算结果。将 MxNxK 通用矩阵乘法 映射到 Tensor Core。原始密集矩阵 A,大小为 MxK(左侧)在使用 2:4 稀疏化修剪后变为 Mxk/2(右侧),A中的稀疏值可以跳过不必要的零乘法。在稠密和稀疏通用矩阵乘法中,B和C分别是稠密的KxN和MxN矩阵。


矩阵乘法计算过程是C=A*B。即左侧A矩阵采用dense矩阵存储,针对结果C矩阵的每个位置,有2K次读取操作,分别是从矩阵A中读取1*K的数组和从矩阵B中读取K*1数组,总计是2MNK次读取操作。


右侧B矩阵采用Sparse矩阵存储,针对结果C矩阵的每一个位置,对应K次读取操作,分别是从压缩后的稀疏矩阵中取1*K/2的数组,利用2bit索引向量从矩阵B中取1*K/2的数组,总计MNK次读取。


这里需要说明的是,虽然稀疏技术能够有效降低神经网络算法的计算和存储开销,提升计算系统的能量效率,但稀疏技术与存内计算的结合仍然存在诸多挑战。

总结

人工智能在智能汽车上的快速应用面临计算平台上算力激增与能耗受限的挑战。随着人工智能在更广泛场景的应用与落地,算法所处理的模型与数据体现出稀疏特性。如何高效处理稀疏数据成为人工智能进一步发展的关键因素。而英伟达这一些列芯片也正是抓准这一契机,通过在算法稀疏化上实现突破,而且结合软、硬件协同优化的方式,将稀疏化从算法层面提升到计算层面。稀疏化计算产品以其高算力、低功耗、高精度的优势。不断优化其算法逻辑来实现更高层级的算力能力提升。


文章转载自公众号:焉知智能汽车

标签
收藏
回复
举报
回复
相关推荐