本文来源公众号“GiantPandaCV”,仅用于学术分享,侵权删,干货满满。
原文链接:FasterTransformer Decoding 源码分析(五)-AddBiasResidualLayerNorm介绍
GiantPandaCV | FasterTransformer Decoding 源码分析(一)-整体框架介绍-优快云博客
GiantPandaCV | FasterTransformer Decoding 源码分析(二)-Decoder框架介绍-优快云博客
GiantPandaCV | FasterTransformer Decoding 源码分析(三)-LayerNorm介绍-优快云博客
GiantPandaCV | FasterTransformer Decoding 源码分析(四)-SelfAttention实现介绍-优快云博客
作者丨进击的Killua
来源丨https://zhuanlan.zhihu.com/p/670656687
编辑丨GiantPandaCV
本文是FasterTransformer Decoding 源码分析的第五篇,主要介绍FasterTransformer中融合OP AddBiasResidualLayerNorm是如何实现及优化的。融合OP包含了LayerNorm、AddBias和AddResidual三个算子,其中LayerNorm的实现和分析已经在进击的Killua:FasterTransformer Decoding 源码分析(三)-LayerNorm介绍这篇文章中详解过,剩下两个操作非常简单,本质上就是两个矩阵求和,所以这篇文章内容会很短,主要是介绍融合的这个思想。
1 背景知识
三个OP分别是LayerNorm、AddResidual和AddBias,下面分别简单介绍下他们的出处。
1.1 LayerNorm
LayerNorm(层归一化)是一种用于深度神经网络中的归一化技术。它可以对网络中的每个神经元的输出进行归一化,使得网络中每一层的输出都具有相似的分布,公式为如下所示。
LayerNorm 计算公式
1.2 AddResidual
残差设计源自于resnet,是将模块处理前的输入和模块处理后的输出进行相加再作为输出进入后续流程中。引入残差块可以解决深度神经网络训练过程中的梯度消失和梯度爆炸问题