神经网络推理加速入门——超简单的卷积和加法融合

简介: 卷积和加法的算法融合,会在神经网络推理的性能加速上,展现出不一样的效果。

大家好啊,我是董董灿。

神经网络的优化除了之前提到的一些硬件优化手段之外,还有很多图层方面的优化手段。

而且图层方面的优化,有时效果更佳。往往一个有效的优化,甚至可以“消除”掉一个算子的存在。

这里的“消除”用的引号,是因为这个算子并未被真正消除,从整个神经网络的计算流上看,这个算法仍然存在。

只不过,它的计算过程被其他计算过程掩盖住了,像是被“消除”了。

算子融合

这里介绍一种算子融合并且使用图层流水进行网络优化的方法。

先看Resnet50 中一个网络片段,下图展示的是 Resnet50 中第一个 block 结束时的图结构。

image.png

该结构中,存在卷积算子和加法算子,我们可以利用融合手段,将红框标出的两个算子融合成一个算子。

将卷积和加法融合成一个算子后,再通过指令调度,实现卷积和加法指令的 ping-pong 流水,便可以利用卷积的计算掩盖掉加法的计算。

这里说一点,为什么卷积计算可以掩盖掉加法计算呢?

因为在相同的输入输出规模的情况下,由于卷积的计算是乘累加,而加法的计算是单纯地加法,因此,在绝大部分的硬件上,一般都是卷积的计算耗时要大于加法。

那怎么掩盖呢?

正常的一个卷积后面如果跟一个加法的话,它的计算流从上到下是这样的:

image.png

先计算卷积Conv,再计算加法Add。假设卷积的计算时间是 A, 加法的计算时间是 B,那么总共的耗时就是 A+B。

这很简单,大家都会算。

那如果将两个算子融合到一起,同时将一张输入图片(Feature Map)切成一半,分两次来运算。每次运算使用 ping-pong memory 来实现计算流水。

那两次计算的计算流从上到下是这个样子。

image.png

左侧 Conv 和 Add 计算前半张图,使用ping memory来计算,右侧 Conv 和 Add 计算后半张图,使用pong memory来计算。

这里说明一下:Conv 和 Conv 是不能并行的,因为一般一个硬件上,只有一个Conv 的硬件计算单元,当然,有多个的又是另外的话题了,这里暂时不考虑。

这个时候,可以看到第二行中,第一个 Add 和第二个 Conv 处在一个时间片内,同时由于使用的是不同的memory,两者可以完全并行。

两者并行完成计算,此时,Conv 就掩盖掉了左侧 Add 的时间。

而整个计算流消耗的时间便是:A/2 + A/2(掩盖掉了Add 的 B/2) + B/2 = A + B/2。

可以看到,此时整体的计算耗时已经比不进行流水时,减少了一半的加法。

那如果将图进一步切分,切成4份来进行运算呢?

那此时的计算流从上到下是这个样子:

image.png

由于第2、3、4行的 conv 分别掩盖掉了其左侧的Add 计算,因此,整个计算流所消耗的时间变成了 A + B/4。

可以看到,将图切的越小,流水起来之后,掩盖掉的加法的时间越多,剩余的加法的时间越少。

如果切的再多,加法的耗时甚至可以忽略掉了。

总结

这种方法很简单,也很容易实现,但从硬件上来说,需要硬件满足以下条件:

  • 卷积计算单元和加法计算单元在硬件上是独立的
  • 硬件有成熟的同步机制来完成卷积计算和加法计算的同步

为什么需要同步机制呢?因为每一个横向的时间片段中,Add 和 Conv 没有任何数据依赖,但是纵向的看,Add 的计算总是依赖于上面的 Conv 的输出。

因此,需要在每一个横向时间片段起始时,完成上一个时间片段中 Conv 计算和 Add 计算的同步。

只要硬件上满足了以上条件,软件上的切图、排流水、融合操作其实很简单。

很多深度学习编译器,如TVM提供了图融合和自动 tiling 策略,可以做到切图,并且调度指令完成流水排布。

即使编译器限于某些开发难度限制,无法自动完成融合和tiling,也可以手动写一个融合大算子出来,手动排指令流水,也不是很难的事。

总之,这种方法作为一个行之有效的融合方法,可以用在很多的神经网络性能优化中,而且效果很出众。

欢迎关注@董董灿是个攻城狮 和同名微信公众号
本文作者原创,转载请联系作者,请勿随意转载

相关文章
基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践
本文探讨了在企业数字化转型中,大型概念模型(LCMs)与图神经网络结合处理非结构化文本数据的技术方案。LCMs突破传统词汇级处理局限,以概念级语义理解为核心,增强情感分析、实体识别和主题建模能力。通过构建基于LangGraph的混合符号-语义处理管道,整合符号方法的结构化优势与语义方法的理解深度,实现精准的文本分析。具体应用中,该架构通过预处理、图构建、嵌入生成及GNN推理等模块,完成客户反馈的情感分类与主题聚类。最终,LangGraph工作流编排确保各模块高效协作,为企业提供可解释性强、业务价值高的分析结果。此技术融合为挖掘非结构化数据价值、支持数据驱动决策提供了创新路径。
132 6
基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践
贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
本文将BSSNN扩展至反向推理任务,即预测X∣y,这种设计使得模型不仅能够预测结果,还能够探索特定结果对应的输入特征组合。在二元分类任务中,这种反向推理能力有助于识别导致正负类结果的关键因素,从而显著提升模型的可解释性和决策支持能力。
72 42
贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
基于PSO粒子群优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于PSO(粒子群优化)改进TCN(时间卷积神经网络)的时间序列预测方法。使用Matlab2022a运行,完整程序无水印,附带核心代码中文注释及操作视频。TCN通过因果卷积层与残差连接处理序列数据,PSO优化其卷积核权重等参数以降低预测误差。算法中,粒子根据个体与全局最优位置更新速度和位置,逐步逼近最佳参数组合,提升预测性能。
基于WOA鲸鱼优化的TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于TCN(Temporal Convolutional Network)与WOA(Whale Optimization Algorithm)的时间序列预测算法。TCN通过扩张卷积捕捉时间序列长距离依赖关系,结合批归一化和激活函数提取特征;WOA用于优化TCN网络参数,提高预测精度。算法流程包括数据归一化、种群初始化、适应度计算及参数更新等步骤。程序基于Matlab2022a/2024b开发,完整版含详细中文注释与操作视频,运行效果无水印展示。适用于函数优化、机器学习调参及工程设计等领域复杂任务。
基于PSO粒子群优化TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本内容涵盖基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测算法。完整程序运行效果无水印,适用于Matlab2022a版本。核心代码配有详细中文注释及操作视频。理论部分阐述了传统方法(如ARIMA)在非线性预测中的局限性,以及TCN结合PSO优化超参数的优势。模型由因果卷积层和残差连接组成,通过迭代训练与评估选择最优超参数,最终实现高精度预测,广泛应用于金融、气象等领域。
基于GA遗传优化TCN-GRU时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB2022a开发,提供无水印算法运行效果预览及核心程序(含详细中文注释与操作视频)。通过结合时间卷积神经网络(TCN)和遗传算法(GA),实现复杂非线性时间序列的高精度预测。TCN利用因果卷积层与残差连接提取时间特征,GA优化超参数(如卷积核大小、层数等),显著提升模型性能。项目涵盖理论概述、程序代码及完整实现流程,适用于金融、气象、工业等领域的时间序列预测任务。
基于GA遗传优化TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于遗传算法优化的时间卷积神经网络(TCN)用于时间序列预测的方法。算法运行于 Matlab2022a,完整程序无水印,附带核心代码、中文注释及操作视频。TCN通过因果卷积层与残差连接学习时间序列复杂特征,但其性能依赖超参数设置。遗传算法通过对种群迭代优化,确定最佳超参数组合,提升预测精度。此方法适用于金融、气象等领域,实现更准确可靠的未来趋势预测。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问