机器之心专栏

作者:Joshua

今年以来,中文 NLP 圈陆续出现了百亿、千亿甚至万亿参数的预训练语言模型,炼大模型再次延续了「暴力美学」。但 QQ 浏览器搜索团队选择构建十亿级别参数量的「小」模型,提出的预训练模型「摩天」登顶了 CLUE 总排行榜以及下游四个分榜。

2021 年,自然语言处理(NLP)领域技术关注者一定听说过预训练的大名。随着以 BERT 为代表的一系列优秀预训练模型的推出,先基于预训练,再到下游任务的微调训练范式也已经成为一种主流,甚者对于产业界来说,某种意义上打破了之前语义理解的技术壁垒。

一个壁垒的打破,从另一个角度往往也代表着另一个新的试炼战场的形成,即自研预训练模型。2021 年初,各大互联网公司先后推出了自家的预训练模型,在反哺自身业务的同时纷纷在 CLUE 榜单(中文语言理解评测集合)不断刷新成绩和排名。

近期,QQ 浏览器搜索语义团队产出的摩天预训练模型在 6 月 15 日登顶 CLUE 总排行榜单(包括共计 10 个语义类任务),登顶下游 4 个分榜(分类、阅读理解、自然语言推理和 NER)。本文将介绍 QQ 浏览器搜索语义团队在预训练模型的前沿探索及技术实践。

注:HUMAN 为人类标注成绩,非模型效果,不参与排名

背景

语义技术是传统搜索的核心能力。从BERT论文发表(2018)至今,预训练+微调的模式是取得语义模型最优效果的必经之路。

对于搜索而言,大多数下游任务场景涉及到query、title以及document这类文本内容,开源的预训练模型在语料上没有应用自身业务数据,直接使用会存在一个bias,无法做到Domain-Adaptive Pretraining;同时,搜索所具有的丰富数据和知识,也能为预训练效果带来很大的助力。因此,QQ浏览器搜索语义团队进行了预训练模型(摩天)的自研,以提升搜索效果的天花板。

从业界看,CLUE作为中文模型的一个最大的benchmark,自20-21年以来越来越多的公司、模型在此打榜。摩天为了进一步验证模型的效果,希望与业界开源的各大预训练模型进行效果对比,取长补短,在效果对比的过程中不断打磨自身硬实力,得到技术沉淀。

摩天预训练模型

QQ 浏览器搜索语义团队随着自身业务快速发展,积累了海量优质资源,一个很自然的想法是利用这些数据构建预训练模型,进一步提升 QQ 浏览器搜索、知识图谱应用等方面的效果,为 QQ 浏览器搜索提供更准确、更智能的结果提供一份力量。

在产业界项目落地上,一个适配自身业务的领域内(Domain-Adaptive Pretraining)的预训练模型对业务的帮助是显著的 [2]。基于当前主流的训练范式:pretrain + finetune + distill,更好的预训练模型可以提高下游各个任务 finetune 后的 Teacher 模型效果,从而提升效果的天花板,也通过蒸馏一个线上可应用的 Student 模型获得更好的效果。

QQ 浏览器搜索语义团队秉持小步快跑的打法,没有瞄准百亿、千亿级别参数量的预训练模型,而构建十亿级别参数量的「小」模型。这里一方面是希望充分「压榨」预训练网络中每个层、每个参数的性能,做到极致;另一方面是希望模型可以快速、方便在搜索场景下以可控的成本落地。

摩天模型的特点如下:

收集了多类型、大量的数据并清洗出 1TB 高价值数据;

优化 Masked language model 遮蔽方案,消除预训练阶段和微调阶段不一致的问题,引入了搜索点曝任务;

自研一种相对位置编码方案,更敏感捕捉短文本位置信息契合搜索场景;

两阶段训练流程;

大规模 / 大 batch 预训练模型训练能力优化:Pre-LN、混合精度计算、梯度聚集、进一步优化 LAMB optimizer;

使用了有限资源,约 100 张 V100 显卡。

下文会分别从数据、模型结构 & 训练任务、位置编码、两阶段训练、计算加速这几个方面来介绍摩天。

数据

RoBETA、T5 等论文均对预训练模型的训练语料大小、质量进行过实验分析。通常需要几十到几百 GB 的无监督数据。随着预训练模型参数的不断扩大,现阶段也出现了吃几 TB,甚至几十 TB 数据的预训练模型。

QQ 浏览器搜索语义团队语料的收集的标准主要有以下三个:规模大、质量高和覆盖广。QQ 浏览器搜索场景下,涉及到的 Document 语料非常丰富,包括企鹅号、小说、各类百科、新闻、社区问答等内容。最终我们得到了近 1TB数据,并在此基础上完成了数据清洗与低质过滤。

模型结构 & 训练任务

Pre-trained Models(PTMs)可以从 4 个方面 Representation Types、Architectures、Pre-training Task Types、Extensions 来进行分类。

表达信息角度来看,第一代的预训练模型,比如 Skip-Gram 和 GloVe,通常是一些浅层模型, 用来学习一个比较不错的 word embeddings,尽管包含了一些语义知识,但通常也是上下文无关的,也就没有办法进一步捕捉更高级的概念。第二代的预训练模型,比如 CoVe、ELMo、OpenAI GPT 和 BERT 则可以捕捉到上下文信息。

从模型结构解读来看(见下图):

预训练任务来看:可以分为监督学习(Supervised learning)、无监督学习(Unsupervised learning)和自监督学习(Self-Supervised learning)。

这里包括了最常见的 NLP 无监督任务语言模型(Language Modeling, LM),以及由 Taylor 提出的掩码语言模型(Masked language modeling, MLM),之后 Devlin 把 MLM 进一步应用到预训练模型中来克服 LM 的缺陷(只有单向)。但是 MLM 的方式也同样带来了另一个问题,即预训练阶段与微调阶段存在一个 mismatch。排列语言模型(Permuted Language Modeling, PLM)应用而生,进一步解决了 MLM 遗留下来的 mismatch 问题。

其他任务:降噪自编码器(Denoising autoencoder, DAE)通过破坏部分输入信号,之后通过模型恢复原始的输入;还有对比学习(Contrastive Learning, CTL) ,其中包含了 NSP、SOP、RTD 等任务。

在摩天上,采用了更符合搜索特色的预训练模型,预训练阶段任务分为两个:一是MLM,另一个是搜索点击曝光任务。两个预训练任务运用 Multi-Task 的方式同时训练,通过衡量任务的不确定性(Uncertainty)去表示两个任务的 loss 权重

在预训练任务 MLM 上。扩展了Whole Word Mask(WWM)为 Phrase + 词级别结合的 Mask 方案,迫使模型去通过更长的上下文信息去预测被 Mask 的连续字符,而不仅仅是根据词或短语片段中的字共现信息去完成预测。

另一方面,BERT 存在预训练任务与下游微调任务时不一致的问题,即预训练阶段的 [MASK]token 在下游微调中并不出现。为缓解这个问题,BERT 原始论文中对需要 Mask 的 token 按照 8:1:1 的比例替换为 [MASK],随机词,保留。

针对这个问题,我们进行了多种不同方案的实验,目的是加强预训练与微调阶段的一致性,比如按照全随机词替换的方式、以一定概率分布的随机词、近义词替换等。同时实验也证明以一定概率分布的近义词替换的效果更好。

在搜索点击曝光任务上,QQ 浏览器搜索语义团队利用自有海量的点击曝光日志构建了搜索点击曝光任务来辅助训练。这样保证可以进一步提高下游句对任务的效果。另一方面也是一种隐式的 DAPT 方案,进一步保证预训练模型可以更加适应自有搜索业务场景。

位置编码

早期 RNN 模型,后一时刻的输入依赖前一时刻的输出,这样的结构天然捕捉了自然语言中 term 的先后顺序。而自然语言中的序列信息通常又是非常关键的。对于 Transformer block 计算的组件,为了引入不同位置 Token 的信息,选择在输入层引入位置信息的 Embedding,从而保证了 Attention 组件可以捕捉自然语言语序信息。

在探究 Transformer 位置信息的引入方式上可以大体分成两种,第一种是绝对位置编码,第二种是相对位置编码

绝对位置编码是一种比较常见的位置编码方案,比如 BERT、RoBERTa、AlBERT、ERNIE 等均是采用这种编码方案。这种编码方案的优势是直接、朴素,即每一个绝对位置表达为一个特定的 Embedding 表示,这种 Embedding 表示的形式又可以细分为可训练的或者函数式的。

其中可训练的绝对位置 Embedding 随着模型训练而得到更新,函数式的绝对位置则是 Attention is all you need 中提出 Sinusoidal 位置编码。

同时,从自然语言的特点去理解,更多的时候关注的是 term 和 term 之间的相对位置,而不是绝对位置。比如短文本:北京到深圳,北京、深圳的相对位置要比绝对位置蕴含更多的语义知识,所以摩天考虑通过更加直接的方案引入相对位置编码。

整体来看绝对位置编码的方案,不管是可学习的位置编码方案还是 Sinusoidal 位置编码方案都可以完成对位置信息的编码这个任务。

同时这里延伸出另一个问题,即原生的绝对位置编码信息是否隐含了相对位置编码信息。要解答这个问题,可以关注 Attention 模块是如何应用位置编码信息的:

其中:

这里对 QK 进行展开,一共有 4 项。其中第 1 项不包含位置信息,第 2、3 项是位置信息和 token 信息交互,也不包含位置信息,只有第 4 项存在两个绝对位置信息的交互。那么如果模型能通过绝对位置编码信息间接捕捉到相对位置信息基本上只可能在这。

仔细观察第 4 项,如果去掉中间的两个参数矩阵,单独看两个位置编码的乘法(以 Sinusoidal 的表示方法为例)只和两个位置的相对差值有关,所以是包含了相对位置信息的。但是第 4 项中有两个不可省略的参数矩阵,在经过这两个参数矩阵的映射,是否还包含相对位置信息?从理论上如果两个映射矩阵经过学习,只有在相乘结果刚好是单位矩阵 E 的情况下,才会隐含着包含相对位置信息。

同时,从自然语言的特点去理解,更多的时候关注的是 term 和 term 之间的相对位置,而不是绝对位置。比如短文本:北京到深圳,北京、深圳的相对位置要比绝对位置蕴含更多的语义知识,所以摩天考虑通过更加直接的方案引入相对位置编码。

结合当前 NEZHA、XLNET、T5、DeBERTa 等相当位置编码方案,提出了一种相对位置编码方案,更敏感捕捉短文本位置信息契合搜索场景。在实验中发现,在使用这种相对位置编码方案之后,预训练模型的PPL 在相同配置下可以压的更低,同时在下游多个任务上也均有不同程度的提升(百分位 1 个点)。

两阶段训练

BERT 家族针对超长的文本的处理一直是一个研究方向。其中也有很多基于不同角度的解决方案,比如 Transformer-XL、稀疏注意力机制、层次分解位置编码等。

对于 BERT、RoBERTa、ERNIE 等最多能处理 512 个 token 的问题。算法上的原因是在预训练的时候使用了可学习的绝对位置编码方案,所以最多只能处理 512 个 token。在工程上,Attention block 的计算时间复杂度和句子长度成平方关系,这导致了在资源相对受限的情况下,预训练模型训练过程中很难承受非常大的句子长度。

针对第一个问题,上文提到的相对位置编码方案可以比较好地解决。

针对第二个问题,我们引入了两阶段的训练方式,即第一阶段以 max_seq_len=128 的配置完成第一阶段的预训练。第二阶段以一阶段产出模型热启动,之后以 max_seq_len=512 的配置完成第二阶段的预训练,进一步压低 PPL,并产出最终模型。这种方案可以在训练资源相对受限的情况下,尽可能的兼顾长文本训练效率与效果。

通过第二阶段训练,模型效果在下游任务上有千分位的效果提升。另外对于长句任务,收敛性得到比较大的改善。

计算加速

从 18 年 BERT 论文发表至今,预训练模型的效果不断的被更大的模型持续刷新,且目前还未看到天花板。通常一个预训练模型需要几十张 V100/A100 显卡,不过随着预训练模型参数量的不断扩大,Google、Facebook、Nvidia 等企业更是先后用上千张 GPU 卡训练了百亿、千亿参数的 GPT、BERT 模型。在中文预训练模型上也不断有百亿、千亿参数量的预训练模型被发布。这些不断向我们揭示了大规模预训练的成功,以及算力的重要性。

QQ 浏览器搜索语义团队在基础建设方面搭建了百张卡的大规模训练集群用于训练预训练模型。采用基于 Horovod 的多机多卡并行方案,同时为了进一步提搞训练效率,使用了混合精度计算、梯度聚集、重计算等算法加速计算、节省显存。

这里需要特别指出,梯度聚集算法相当于在训练过程中引入了超大的 batch_size,甚至在模型调研中曾一度使用了 64k~128k 的超大 batch_size。为保证模型的收敛,我们借鉴了LAMB 算法,并在此基础上引入梯度正则进一步保证优化器更关注梯度的方向,而不是梯度的大小;另一方面对动量和冲量进行修偏,保证模型在迭代初期的收敛。

另一方面,摩天大模型升级了 Post-LN 为Pre-LN提升预训练模型效果、并进一步保证模型收敛。

团队简介

QQ 浏览器搜索团队以 QQ 浏览器为主要阵地,依托腾讯内容生态,致力于打造年轻人爱用、爱玩的浏览器产品。用户在浏览器搜索内可享受到文章、图片、小说、长短视频、便捷服务等众多形态的搜索体验。通过用户研究驱动产品创新,拉动用户增长,提升搜索商业变现能力,使浏览器搜索成为新一代搜索引擎的代表。在搜索算法方面,以 NLP、深度学习、富媒体内容理解、知识图谱等技术为基础,建设内容处理、Query 理解、相关性计算模型、搜索推荐、搜索增长等技术方向,吸收业界先进的技术成果,打造更优秀的搜索体验。在搜索工程方面,建设搜索技术中台工业化系统,打磨高并发、高可用、低延时的百亿级检索系统,并为腾讯 PCG 各个内容业务的搜索场景提供基础的搜索引擎服务;当前服务已经支持 QQ 浏览器,QQ 看点,快报,腾讯视频,腾讯新闻,腾讯微视等 PCG 重要产品线。

参考文献

[1]Pre-trained Models for Natural Language Processing: A Survey

[2]Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks

[3]LARGE BATCH OPTIMIZATION FOR DEEP LEARNING: TRAINING BERT IN 76 MINUTES

[4]TENER: Adapting Transformer Encoder for Named Entity Recognition

[5]RoBERTa: A Robustly Optimized BERT Pretraining Approach

[6]Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

[7]Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

[8]BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

[9]Attention is All You Need

[10]Self-Attention with Relative Position Representations

[11]Revisiting Pre-Trained Models for Chinese Natural Language Processing

[12]SpanBERT: Improving Pre-training by Representing and Predicting Spans

[13]Rethinking Positional Encoding in Language Pre-training

[14]NEZHA: Neural Contextualized Representation for Chinese Language Understanding

[15]DeBERTa: Decoding-enhanced BERT with Disentangled Attention

[16]Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity

[17]On Layer Normalization in the Transformer Architecture

千亿参数大模型时代,QQ浏览器团队十亿级小模型「摩天」登顶CLUE相关推荐

  1. #今日论文推荐# 千亿参数大模型首次被撬开,Meta复刻GPT-3“背刺“OpenAI,完整模型权重及训练代码全公布

    #今日论文推荐# 千亿参数大模型首次被撬开!Meta复刻GPT-3"背刺"OpenAI,完整模型权重及训练代码全公布 千亿级参数AI大模型,竟然真的能获取代码了?! 一觉醒来,AI ...

  2. 仅480块GPU搞出万亿参数大模型!达摩院3个月打造,出手即商用

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 不要6000张GPU!不要2000张TPU! 只要480,万亿参数大模型"抱回家"! 还没完,更惊艳的在后边. 同为万亿 ...

  3. 专访唐杰:万亿参数大模型只是一个开始

    机器之心原创 作者:闻菲 智源悟道团队不仅会在「大」这条路上走下去,还将对构建「神经-符号结合模型」进行更深入和底层的探索. 图灵写于 1950 年的论述<计算机器与智能>被誉为人工智能的 ...

  4. 商汤首付56亿!上海建成亚洲最大AI“发电厂”,万亿参数大模型训练无压力

    梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 刚刚,商汤又多了一项"亚洲第一". 就在上海临港,商汤自建的人工智能计算中心(AIDC)交付使用,一举成为亚洲最大的AI ...

  5. 【AI周报】谷歌、Meta如何给大模型瘦身?;Meta开放1750亿参数大模型,媲美GPT-3

    01 行业大事件 谷歌.Meta如何给大模型瘦身?谷歌工程师亲述部署秘籍(免费书) 这是一本正在写作的新书,目前前四章已经放出了草稿. 过去几年,GPT-3 等几个大模型展示了大数据.大算力的力量,它 ...

  6. 150亿参数大杀器!Facebook开源机器翻译新模型,同传人员或失业

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源:Facebook 编辑:QJP [导读]Facebook 今日开源了一个多语种机 ...

  7. 复旦邱锡鹏新作:单机微调650亿参数大模型,业内人士:对大模型普及意义重大...

    鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 单台机器,就能微调全参数羊驼大模型! 这一令开源党狂喜的最新成果,来自复旦邱锡鹏团队. 具体而言,研究人员提出了名为LOMO(低内存优化)的新优化 ...

  8. 6个月火速炼成千亿参数大模型!背后是披荆斩棘的华为云哥哥们

    6个月的时间为约定,他们就这样硬生生地打造了个全球领先--华为云盘古大模型: 业界首个千亿级生成与理解中文NLP大模型. 业界最大的CV大模型. 而在这场攻坚战中,华为云人工智能领域首席科学家田奇和团 ...

  9. 文心ERNIE 3.0 Zeus千亿参数大模型,一键生成“学术范儿”论文标题

    文章整理自哔哩哔哩科技区UP主"同济子豪兄"(张子豪)的主题分享「文心雕龙,一键生成学术灵感」. 文心ERNIE 3.0 Zeus作为基于知识增强的千亿模型,在各类真实场景的生成准 ...

最新文章

  1. amd支持嵌入式linux,AMD 发布针对 Linux 的 Radeon Software 19.30,支持Radeon RX 5700
  2. [Eclipse]GEF入门系列(九、增加易用性)
  3. Spring Cloud sleuth with zipkin over RabbitMQ教程
  4. ES6——举个例子理解Promise的原理和使用
  5. ssh图片上传 java_ssh上传并显示图片
  6. React ref的转发
  7. python sympy安装_SymPy (A) 环境搭建与简介
  8. 第一次学游泳技巧_游泳前,让自己不再怕水的5堂准备课
  9. Pecl和Pear的区别和联系?
  10. MYSQL主从不同步延迟原理分析及解决方案
  11. FP Tree算法原理总结
  12. php的异步非阻塞swoole模块使用(一)实现简易tcp服务器--服务端
  13. python毕业论文开题报告范文_毕业论文的开题报告怎么写?
  14. VS2008下 天龙客户端编译
  15. IDE、SATA、SCSI、SAS、iSCSI
  16. Ansible 配置Windows Update
  17. 安装Hadoop3.2.1(很多坑)
  18. mybatis开启日志打印
  19. C/C++在线餐馆预订管理系统
  20. 娱乐至死?不,我偏要活着

热门文章

  1. 微软Win8将有多个版本 四款面向ARM平台
  2. 如何解决现有的问题——VBA课程第五次讨论2007年12月13日
  3. elk日志分析系统_部署ELK企业内部日志分析系统
  4. 选择排序算法(基于Java实现)
  5. 当使用视觉SLAM对一个环境建图之后,如何让机器人能够“理解”地图并导航呢? - 知乎
  6. eclipse配置springboot开发
  7. 交叉熵损失函数在多分类深度学习中的应用 转
  8. pandas loc()与iloc用法
  9. 数据分析IJCAI 2020:录用率12.6%,华人占据半壁江山,表征学习、GNN成热点 | AI日报...
  10. 嘿 Siri,有没有「三天速成深度学习」的课程?