LayerNorm核心技术

Overview

你能打开这篇文章,相信对LayerNorm(LN)、BatchNorm(BN)多少是有些了解,它们分布在神经网络中,对上一层输出的激活值做归一化(normalize),这样做的好处是可以在一定程度上避免梯度消失问题。

搞懂深度网络初始化中讲到:激活值的方差会逐层递减,这导致反向传播中的梯度也逐层递减。因此有人就会想到,那能不能在模型中加入一些归一化操作,让激活值始终维持在均值为0,方差为1呢?

实践表明,这些normalize层对提高模型精度是有帮助的,很多模型甚至用它们替代了原来的激活函数。归一化层除了LN和BN,还有IN(InstanceNorm)和GN(GroupNorm),它们的区别只在于在哪个维度上做normalize。对于不同的模型,它们的表现也各不相同。

例如BN,它沿着BatchSize这个维度做normalize,在CV模型的表现就很好,但到了NLP模型,由于BatchSize一般都较小,如果还是用BN,那效果就不好了,反之,由于channel(HiddenSize)维度很大,用LN的效果会很好,因此LN就成了现在NLP模型的标配。

LayerNorm

这里的normalize指的是正态分布的标准化,如图示,相比统计学上的计算公式,它多了3个变量,其中\epsilon是很小的常量,如1e-7,为的是防止分母为0,\gamma\beta是可训练的参数,用来调整曲线的高矮胖瘦和顶点坐标。

Nivdia的Apex包已经为开发者提供了现阶段最快速的LN函数:fused_layer_norm(),它的性能比你自己用python实现的要快N倍。

Fused Layer Norm

LN的计算除了mean()、pow()和sqrt()这三个显性函数外,每个加减乘除背后都会调用一个相应的函数。对于异构计算来说,每次函数调用都伴随着data在host memory和device memory、device memory和registers之间的反复传输,而内存访问从来都是提高性能的瓶颈。

fused_layer_norm()之所以快,就是把原本需要调用多个函数的计算融合到一个函数中,这样不仅对内存带宽的要求要少很多,而且还能从全局来优化计算流程,如并行计算等。

Implementation

计算均值和方差是LN的主要工作量。在GPU编程中,求均值是一个reduce问题,相关的代码实例网上有很多,这里就不过多介绍。重点说下方差的算法,虽然通常它是通过均值来求的(python代码也这样做的),但这里用更快速的并行算法:Welford's online algorithm,它把计算分成warp内计算,warp间合并:

Conclusion

在模型中加入normalize层往往能收到奇效,BN/LN/GN/IN,它们的主要区别只是在哪个维度上做normalize而已。当你要用到LN时,应使用Apex的fused_layer_norm。不仅仅是LN,Apex提供了很多的融合算子,如FusedMLP、FusedAdam,在建模时你应该首选这些layer/算子。


欢迎关注和点赞,你的鼓励将是我创作的动力

欢迎转发至朋友圈,公众号转载请后台留言申请授权~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容