ir是什么(ir是什么软件)

目前越来越多的硬件为AI算法提供加速优化支持 。通常,AI硬件可以通过减少工作负载、提高峰值性能和提高计算效率来提供加速优化 。
降低工作负载修剪神经网络有很大的冗余 。对神经网络进行细粒度剪枝是一种解决方案,因为它发现神经网络的权重参数中有很多接近于0的值,去掉这些权重并不会降低神经网络的性能 。然而,在韩等人的工作中,剪枝模型是稀疏的,这将导致许多不规则的稀疏计算 。这种计算模式在很多硬件上无法达到显著的计算加速效果 。于是,后续的大量工作开始“结构修剪” 。在结构化剪枝中,去除的权值都是结构化的子集,比如整个卷积核 。这样得到的模型虽然压缩比小于细粒度剪枝,但仍然有规律的计算模式,可以在各种硬件平台上加速 。后续提高结构化剪枝的性能有很多工作点:有如何设计层内重要性指标的工作,即在给定层压缩率下去除哪些卷积核的工作;如何设计正则项,在训练过程中对权值加入适当的正则化得到剪枝模型;此外,剪枝比的确定被视为一个搜索问题,利用搜索算法搜索各层的压缩比 。仍然有许多努力将硬件的延迟或能量模型引入修剪过程 。
神经网络架构搜索最近,神经网络结构搜索(NAS)领域取得了很大进展 。其最初的目标是减少人工设计在架构设计中的比重,通过自动搜索的方式找到适合目标任务的神经网络架构 。为了加快NAS算法的搜索过程,人们做了很多努力来提高搜索策略的采样效率和评估策略的评估效率 。为了更高效的硬件推理,在框架上扩展了很多工作,比如考虑搜索目标中的硬件开销,增加新的设计维度(运算类型、拓扑连接、宽度、深度、卷积核大小等 。)进入搜索室空,搜索关节硬件参数 。增加宽度的神经网络结构搜索可以看作是模型设计和结构化剪枝的统一,也可以看作是剪枝算法的扩展 。事实上,已经做了一些工作来将神经网络搜索的一些方法应用于剪枝问题 。
提升峰值性能量化:很多研究者在神经网络推理和训练的过程中,已经开始降低数据的表示位宽 。这里,我们简单介绍一下推理过程定量研究的发展 。起初,神经网络的计算大多使用32位浮点数,但实际上,神经网络的权参数和激活值并不需要这么大的表示精度和位宽 。由于浮点运算单元比定点运算单元成本高,所以人们想用位宽低的定点数进行定点运算来完成神经网络的推理过程 。根据应用的时间阶段,量化算法可以分为训练后量化和量化感知训练 。在训练前模型上分析训练后量化策略,选择合适的位宽、截断数和量化中心,得到量化模型 。为了提高量化模型的精度,考虑量化的训练过程将权重调整为“量化噪声” 。不同的研究者采用不同的量化格式,可分为均匀量化和非均匀量化,其中非均匀量化因其运算较为复杂,使用较少 。在统一量化格式中,早期的算法采用无偏量化格式,量化过程中没有引入比例因子,而是以2的幂作为表示范围 。
计算单元的优化:计算单元优化最重要的方法是降低计算单元的位宽,这也是与软件层的定点量化方法相匹配的硬件设计 。降低位宽可以显著降低硬件资源的开销,从而在相同的硬件资源下获得更高的峰值性能 。以32位浮点和8位定点在Xilinx XCKU060 FPGA上的实现为例,8位定点乘法器和加法器的硬件逻辑资源开销分别降低到32位浮点的1/10和1/50 。当使用数字信号处理器(DSP)时,32位浮点乘加器需要两个DSP、800个查找表和1284个寄存器,而8位定点乘加器只需要一个DSP 。
循环展开策略:神经网络的卷积层和全连接层分别占用大部分计算和存储,全连接层可以看作卷积核大小为1×1的卷积层 。卷积层通常可以用一个6层环来表示 。6层循环的维度是输入的宽度和高度、输入和输出通道以及卷积核的宽度和高度 。为了提高AI加速器的计算并行性,我们可以在硬件上并行化一些循环展开和一定数量的迭代过程 。硬件上并行迭代的次数称为循环展开系数,不恰当的循环展开系数会导致严重的系统利用不足 。以单层循环为例,假设循环数为M,循环展开系数为M,硬件资源利用率限定为m/M[M/m] 。如果m不能被m整除,利用率就会低于100% 。对于一个神经网络层来说,硬件资源的总利用率是每个周期利用率的乘积 。对于CNN来说,不同层的圆形维度差别很大 。以ResNet为例,通道数在3到2048之间,特征图大小在224×224到7×7之间,卷积核大小在7×7到1×1之间 。除了利用率低,循环展开还会影响数据路径和片上存储架构的设计,因此循环展开策略是AI加速器设计的关键特征 。目前没有适用于所有神经网络模型的通用循环展开系数 。主流的解决方案是为每个神经网络模型设计空,以获得最佳的循环展开系数 。因为FPGA具有动态可重构的特性,所以可以基于优化的循环展开系数来设计硬件参数,从而生成新的硬件架构来部署特定的神经网络模型 。对于基于指令集架构的AI加速器,软件编译器会根据硬件设计参数指导循环展开系数的优化,提高AI系统的计算效率 。


推荐阅读