卷友们好,我是rumor。
其实我这个卷都不配叫卷,真正的NLP极卷之地,乃是GLUE与CLUE这两个榜单。
![0a3746a1c2571a89812031a2b20884f8.png](https://i-blog.csdnimg.cn/blog_migrate/1d2e9e27b5497f72203a484371be17a0.png)
![a2b38028cd4eb7bbc6b0c9c4a75558ef.png](https://i-blog.csdnimg.cn/blog_migrate/d9ee3c0d72813ed9ff27938956923295.png)
两年多前BERT刚出来的时候,每每GLUE江山易主我都跟着激动一把,但慢慢刺激久了就麻木了,再看到新闻反而不关注技术,而是佩服同学们的毅力。尤其是达摩院的StructBERT老哥,不管我隔多久去看一眼GLUE,它都稳稳在上面,给人一种说不出的安全感。我还专门去打听过,据说作者老哥刷榜只是顺带,主要还在做业务,真真卷出了我的想象力。
GLUE无法触及大家的G点之后,又开始了CLUE之旅。去年刚正式发布,今年就被卷爆了。
记得今年年初的时候我们旁边MT-BERTs组也在刷,恰好前一天腾讯LICHEE模型刚发稿登上了榜首,第二天MT-BERTs就登顶了,我们小群里还看热闹,想着别人看到腾讯的文章,结果打开CLUE是美团第一,不知道LICHEE的心理阴影面积有多大。
更刺激的是4月份,阿里刚发稿公布PLUG模型登顶分类榜单,过两天就看到了华为Pangu发稿说又给刷了,这年头不仅刷榜卷,发稿也卷,不快的话过两天SOTA就又换人了。
![1902d48589ce9e93dce656b038284b89.png](https://i-blog.csdnimg.cn/blog_migrate/810d5397933174f14bc1f74265f9daac.png)
而老牌NLP厂商搜狗也不肝示弱,BERTSG在4月份被Pangu刷下去之后,5月份又刷了回来。
直到昨天又出现了新的榜首,来自QQ浏览器搜索的Motian同学。
所以目前中国选手的战况是,百度ERNIE同学仍然在玩GLUE,处于世界级霸主的地位,阿里、华为双管齐下,派出StructBERT、PLUG、NEZHA、Pangu两路夹击,腾讯依旧主张赛马机制,派出LICHEE、BERTSG、Motian多位健将。其他厂如平安、我团、OPPO、创新工场(TBH)采取游击战术,打完了就撤。
其实我最佩服大家的是不光分数卷,名字也卷的不行。
国际化的思路是围绕芝麻街起名,国内则是充分发挥了想象力。
从华为哪吒开始就一发不可收拾,荔枝、盘古、孟子、摩天相继出世,还有智源的悟道、文汇。
一个比一个恢弘磅礴,起名的时间可能比预训练的时间都长。
![3dca6d77113e4560411197f1588b53ab.png](https://i-blog.csdnimg.cn/blog_migrate/d4cf37c06ef626025ddd713818411ba7.png)
看着大佬们这么卷,我不禁关掉B站,开始学习如何提升预训练模型。
下面就让我们从有限的公开博客里,看看各位大体量选手都进行了哪些优化,迎面走来的分别是:
腾讯Motian[1]:总榜第一、十亿参数、1TB训练数据、encoder架构
搜狗BERTSG[2]:总榜第二、百亿参数、2TB训练数据、encoder架构
华为Pangu[3]:总榜第四、千亿参数、40TB训练数据、encoder-decoder架构
阿里PLUG[4]:分类榜第三、百亿参数、1TB训练数据、encoder-decoder架构
预训练优化
第一个公认的提分方法是把单纯的MLM改成WWM,融入更多中文词汇、短语的知识,Motian和BERTSG都有采用。
其次除了MLM外,各位选手还采用了多任务方式,比如Motian加入了搜索点击曝光任务;BERTSG参考了Cross thought和对比学习,学到更多句子级别特征,同时加入了文章标题生成和段落顺序预测任务;Pangu的encoder则是基于StructBERT,其中分别加入了WSO(打乱词序)以及改进的NSP任务。
在模型参数量提升后,收敛速度也成了问题,可以用分阶段预训练解决。Motian参考BERT使用两阶段预训练,先训128长度,再512长度;对于encoder-decoder架构,Pangu采取的方法是先训练基于StructBERT的encoder,之后加上decoder进行生成模型训练,前90%的时间保留MLM,后10%去掉。
Motian的博客中还提到了一个消除MLM预训练-精调不一致的方法,不进行Mask,而是采用随机词/同义词替换,也获得了一些提升。
位置编码
绝对位置编码存在以下问题:
预训练数据足够多时,可学习的位置编码比sinusoidal更好,但可延展性差,长度不能超出范围
通过对Attention计算的分解可以发现,位置编码相乘之前还会经过参数矩阵的变化,之后不一定能保存位置信息
在文本中,term之间的相对位置其实比绝对位置重要(比如北京到深圳vs深圳到北京,更重要的其实是谁在前面)
因此NEZHA、XLNET、T5、DeBERTa等模型都采用了相对位置编码的方案,Motian也使用了相对位置编码,发现可以有1个百分点的提升。
模型结构优化
虽然对于Transformer结构的改进已经很多了,但实际在大模型刷榜时用的并不多,比较有效的策略是把Post-LN改为Pre-LN,实际发现Post-LN在训练超大模型时,若没有设置好warmup,会导致收敛效果变差。
![57b95f3ae74b14f7589016ffdfeb2f31.png](https://i-blog.csdnimg.cn/blog_migrate/d791fbd9c7263a445770483223222e5a.png)
训练速度优化
大模型不可避免需要并行优化,不然一张卡根本放不下。
加速方法可以参考这篇文章,总结下来就是数据并行、重计算、Tensor并行、Pipeline模型并行、优化器模型并行。
速度优化对于算法工程师的挑战还是很大的,经常会出很莫名的bug,或者好不容易搞好了但是效果莫名下降。刚一点的厂干脆自己做框架,比如百度Paddle和华为MindSpore,阿里也和自家云计算平台进行了合作。
![fbdc884663357d428efd4a223288fb82.png](https://i-blog.csdnimg.cn/blog_migrate/a2dd9cbe1b0e70b5864ffaeec1d50680.png)
总结
其实博客看下来,真正的干货不算多,很多特定任务的trick都没有公开,比如GLUE上做匹配任务之前都会先在MNLI、SNLI上精调,CLUE上估计也会针对不同任务和数据集有特殊的策略。
Anyway,虽然刷榜有时候被认为是人力过剩的出口,但对于这种热榜来说,真正有提升是很难的,每次都是千分位上的前进,大部分的novelty有限,但也正是一小步一小步的改进才能迸发出更大的提升。
但一个不好的现象是榜单对模型体量没有限制,纯粹变成了大厂之间的游戏,即使有小模型榜单,刷出来也没有总榜的影响力大,大家觉得性价比低也就不去刷了,只能通过论文来对比单模型方法上的提升。
最后,我发现起名是真的难,英文的套路是围绕芝麻街,而国内则不甘心延续别人的套路,历史名人、神话故事、水果、抽象词汇一起上,搞得我想了一会儿也没想到更好的。
刷榜卷不起,起名还卷不起吗?
卷友们,咱们这就来举办一期起名大赛,卷爆大厂!
截止周五晚24点,评论区点赞数最多的名字,私信我拿88元现金红包!
![8b8c2ae535b0bec4f8bd41b9672363de.png](https://i-blog.csdnimg.cn/blog_migrate/cc12f6ae8dc9b2fdc9469469d8c15130.png)
参考资料
[1]
Motian: https://mp.weixin.qq.com/s/HQL0Hk49UR6kVNtrvcXEGA
[2]BERTSG: https://pcedu.pconline.com.cn/1410/14101830.html
[3]Pangu: https://www.sohu.com/a/463292432_491575
[4]PLUG: https://finance.sina.com.cn/tech/2021-04-19/doc-ikmyaawc0523891.shtml
大家好我是rumor
一个热爱技术,有一点点幽默的妹子
欢迎关注我
带你学习带你肝
一起在人工智能时代旋转跳跃眨巴眼
「我的脑洞关上了」