NLP预训练模型(2021版)
- -
2021年,NLP预训练模型杀疯了,但工程师差点哭了
你敢信?去年我跟一位百度NLP工程师吃饭,他正为模型训练的事焦头烂额,聊着聊着差点把咖啡泼键盘上。
他叹气:“一个月才能迭代一轮,显卡内存动不动就爆,线上那个老LSTM模型已经喂了几千万样本,新模型跑半天,提升还没看出来,成本倒是翻了好几倍。”
你看,2018年BERT刚出来的时候,整个NLP圈都疯了——“预训练+微调”这个新范式,简直就是给自然语言处理打了一针强心剂。到了2021年,方向已经变了:大家不再问“能不能用”,而是问“怎么能好用”。从技术爆炸到工程阵痛,这一年,模型越来越大、越来越强,但落地时的眼泪也越来越多。
说到这儿,咱们就从头捋一捋,2021年到底发生了什么——
你以为是越大越好?结果被LSTM按在地上摩擦
你想想,百度ERNIE系列,2019年第一次喊出“知识掩码”,2021年已经迭代到3.0了。能处理NLP、跨模态、语音……听起来是不是很全能?多霸气啊!
可实际落地呢?对话系统上,问题一个接一个:训练极慢,业务要求两周迭代一次,模型一个月才能跑一轮;显卡内存动不动就炸;推理延迟高得离谱;更扎心的是——线上用的还是千万级样本训出来的LSTM,表现已经很稳了,这个全新的预训练模型,折腾半天,提升几乎看不见。
换句话说,论文上把榜屠了,但在工程约束面前,就是一个“中看不中用”的大块头。
你以为当年BERT出来就是终点?错!落地的终点是把模型扔进业务,扛得住并发、吃得起算力、跑得快。2021年,这个反差特别刺眼。
同一个脑袋,会96种语言!但问题也来了
2021年是多语言模型的爆发年。你看看这阵势:
百度放出ERNIE-M,联合学习96门语言,一个模型同时理解96种语言,在5类跨语言理解任务上刷新了当时的最好成绩。
谷歌那边也没闲着,推出mT5——T5的多语言版本,在覆盖101种语言的CommonCrawl上预训练。它还专门搞了一个“防意外翻译”机制,别让模型在非翻译任务里突然蹦出其他语言。
一个走知识增强路线,一个走规模化扩展路线。两条腿走路,目标都一样:不再只伺候英文用户,而是想用一套参数服务全球。
说到这儿,你可能会觉得:哇,好厉害!但等等——一旦模型变大变杂,工程上的坑就跟着来了。我们稍后再说。
通用?不如专精!百万级对话数据干翻十亿级通用模型
2020年开始,做任务型对话的人就发现了一个反直觉的事:你拿通用预训练模型去搞对话系统,可能还不如用对话数据从头训练。
2021年,这个思路变得更有系统。研究指出:BERT在开放域文本上表现亮眼,但对话里有交互结构、系统动作、用户意图……这些通用预训练根本覆盖不到。对比数据更让人惊掉下巴:在特定场景下,用百万级对话语料预训练出来的模型,微调效果竟然吊打了规模大十倍的通用模型!
这说明什么?说明预训练不能只盯着“更大”,更要“更专”。你拿跑车的引擎去拉货车,能快才怪。
微调也有了新招:不光微调,还得“片段精调”
预训练的价值再大,最后还得靠微调释放出来。2021年EMNLP上有一篇论文叫《Span Fine-tuning for Pre-trained Language Models》,提出了片段微调。什么意思?以前微调要么是单token,要么是句子级别,粗放得很。现在呢,用片段级的语义约束去适配下游任务——在全词、实体、片段信息上加入预训练信号,稳定提升。
这玩意儿对问答和实体识别这类任务特别友好,等于把“预训练-微调”这个流程从大锅饭变成了小灶定制。
掌声给技术,但眼泪留给工程
文章一篇接一篇,模型越来越强,但一线工程师的真实声音是什么?
前面那位百度工程师的话,直接戳到三个核心矛盾:
- 算力成本 vs 快速迭代:模型又大又慢,一个月一版,业务只能等死。
- 模型复杂度 vs 推理延迟:参数量上去了,跑起来却卡成PPT。
- 通用预训练 vs 业务基线:老LSTM已经在线上稳如老狗,新模型边际收益少得可怜。
2021年的预训练模型,参数量在膨胀,语言数在扩张,任务数在增加——但工程化的“软能力”呢?模型压缩、推理加速、数据效率,这些同步成熟了吗?并没有。
模型好不好,不能只看榜单上的一个点。那句话怎么说来着?“你尽管拿指标屠榜,我业务用不用你是另一回事。”
最后说两句:更大的,不一定更好;更懂的,才更贵
从2013年的Word2Vec,到2018年的BERT,再到2021年的百花齐放,预训练模型走了很远。但距离“好用、易用、便宜用”,还有好大一段路。
未来的方向,不是继续堆参数,而是让它更轻、更快、更懂业务。毕竟,真正的好模型,是能让工程师安心睡个好觉的,不是半夜把显卡跑炸的。
如果你不能让业务方笑着用,那全世界的SOTA都是你一个人的孤芳自赏。
读者评论 2