知识是内涵,算力设施和训练框架是根基。
作者 | 青暮
编辑 | 岑峰
或许很难想象,从晶体管的每个具有确定性的0和1之间的变换,到最后也能变成一场科学实验般的探索。自人们用计算机证明四色猜想以来,这个硅质人造物就充满了无限的不确定性。
如今,深度学习再次向人类表明:计算机不是单纯地复刻人类的思维逻辑并加速的机器,它也可以产生新的思维方式。
如果说图像识别、机器翻译、语音生成等等应用都还是小试牛刀,其表现都还在人类预料之中,那么百亿甚至千亿参数规模的预训练模型展现的多任务能力,便是人类不断地体会惊讶的开始,也是接近理解自身的开始。
难以想象,当初仅仅作为NLP子领域之一的自监督学习语言模型,却在扩大了参数规模、采用了Transformer架构之后,在2018年横扫11项NLP任务,成为AI社区人尽皆知、3年时间引用量接近3万的BERT。
自那以后,基于预训练构造大型语言模型便成为一种基本操作,这是大模型时代开始的标志。
到如今,作为AI的底座能力,大规模预训练模型已成为全球AI领域的技术新高地。
12月8日,鹏城实验室与百度联合召开发布会,正式发布双方共同研发的全球首个知识增强千亿大模型——鹏城-百度·文心(模型版本号:ERNIE 3.0 Titan),该模型参数规模达到2600亿,是目前全球最大中文单体模型,在60多项任务中取得最好效果。
同时,百度产业级知识增强大模型“文心”全景图首次亮相。
中国工程院院士、鹏城实验室主任高文,百度首席技术官王海峰联合发布鹏城-百度·文心
目前,鹏城-百度·文心已在机器阅读理解、文本分类、语义相似度计算等60多项任务中取得最好效果,并在30余项小样本和零样本任务上刷新基准。
在鹏城-百度·文心背后,得益于鹏城实验室的算力系统 “鹏城云脑Ⅱ”和百度自研的深度学习平台“飞桨”强强联手,解决了超大模型训练的多个公认技术难题,使鹏城-百度·文心训练速度大幅提升,模型效果更优。
为解决大模型应用落地难题,百度团队首创大模型在线蒸馏技术,模型参数压缩率可达99.98%。
鹏城-百度·文心是百度文心“知识增强大模型”系列中十分重要的基础通用大模型。
为推动技术创新和落地应用,百度文心既包含基础通用的大模型,也包含了面向重点领域和重点任务的大模型,还提供丰富的工具与平台,支撑企业与开发者进行高效便捷的应用开发。
文心全景图
此次发布的鹏城-百度·文心在ERNIE 3.0基础上全新升级,后者此前曾在国际权威的复杂语言理解任务评测SuperGLUE上超越谷歌的T5、OpenAI的GPT-3等大模型,以超越人类水平0.8个百分点的成绩登顶全球榜首。
百度是业界少有的专注攻关知识增强型预训练大模型的企业,有知识加持的文本数据自然让模型更有内涵。此次升级的意义,不仅仅是简单地放大参数量,在这背后支撑的是坚如磐石的根基——也就是基础设施能力:鹏城实验室的E级超算,以及飞桨的超大模型训练与推理框架。
1内涵
大规模预训练语言模型的基本训练方法是自监督学习,自监督学习语言模型的一般过程,是基于前文或上下文,来预测被掩盖的单词或短语,通俗来说就是做填空题。
为什么这样的学习范式有效?用反事实学习的原理简单理解就是,只要多试试一个单词出现与否对另一个单词出现与否的影响,就可以总结出两者的关联程度。
如果是在涉及现实知识的句子中训练,语言模型也可以学到这些知识。社区中也出现了从预训练语言模型中提取和构建知识图谱的研究。但问题在于,从这些模型中提取出来的知识可靠度有限。
人们发现,预训练语言模型倾向于依赖表面信号或统计线索来挖掘知识,并且可以很轻易地被愚弄,比如“鸟可以__”和“鸟不可以__”,模型都会输出“飞”。这些模型学习到的,似乎更多是语法规则,而不是现实知识,比如给定一组概念 {狗, 飞盘, 抓住, 扔},GPT2 会生成"狗将飞盘扔向足球运动员",T5 生成“狗抓住了飞盘,并扔向足球运动员”,这两者都不符合人类的常识。
这就向我们提出了这些问题:我们需要让大模型做这种事吗?现实知识的学习需要依靠大模型以外的手段吗?大模型学不到现实知识吗?
百度的回答是:需要;不需要;可以。
大模型的字典
在医疗、法律等领域,AI的应用落地也在如火如荼地展开,而它们对结果的准确性要求严格。人们已经开始将大模型部署到这些领域中,在这些场景中涉及的现实知识非常专业和密集,自然不可能让只学会语法的算法来冒充专家。
引入现实知识,一个比较基本的方法是在模型本身引入归纳偏置,比如引入了空间平移对称性归纳偏置的多层感知机,就是卷积神经网络。但这种操作过于基本,也就是在先验地获取现实知识的同时,会过早限制模型的通用性,同时在理论探索上也非常困难。
另一个比较直接的方法是,保留模型本身的通用性,在数据和任务上入手。我们之前提到,预训练语言模型的一个缺点是,过分关注语法关联,因为语法关联在句子中出现最多,而对现实知识关联关注过少。
这其实也是因为,人类很少在日常交互中,强调和重复已知的知识,我们对于“鸟拍打着翅膀在天空飞翔”中隐藏的知识“鸟会飞翔是因为有翅膀”不会太在意,也不会刻意去表达,因为太过习以为常,这也就使得这些知识很少出现在模型接触的数据中。归根结底,人类和语言模型接触的并不是相同的数据源。
这种区别,就好像一个英语母语者可以轻易理解别人说的英语,而刚学习英语的中文母语者就需要字典的支持,字典凝结了大量的人类知识。
那么,为了学习现实知识,大模型需要什么样的“字典”?
当然是,知识图谱。
更加关注现实
知识增强建模方法
正如上图所示,对于“《夜莺》是丹麦作家安徒生唯一的以中国为背景的童话故事。”这句话,如果我们在输入中加入“安徒生 作品 夜莺”这样的实体关系,就可以让模型更多关注“作品”这样的关系,而不局限于关注“是”、“唯一的”等等常见的关系类词汇,从而对现实知识有更多的积累。
百度早就开始挖掘知识增强型预训练模型的潜力,2019年3月,百度就已经发布了第一代知识增强的预训练模型 ERNIE1.0。到今年7月,百度还训练出了百亿参数规模的知识增强型预训练模型——ERNIE 3.0。这是当时业界首次在百亿级预训练模型中引入大规模知识图谱。
这种方法被称为平行预训练方法(Universal Knowledge-Text Prediction),也就是将大规模知识图谱的实体关系与大规模文本数据同时输入到预训练模型中进行联合掩码训练。
这种做法可以促进结构化知识和无结构文本之间的信息共享,从而大幅提升模型对于知识的记忆和推理能力。
ERNIE 3.0在中文和英文数据集上均表现优越,其中在中文方面,ERNIE 3.0在54个数据集上均取得SOTA,同时零样本能力表现优越,另外在英文方面,ERNIE 3.0在国际权威的复杂语言理解任务评测SuperGLUE上超越谷歌的T5、OpenAI的GPT-3等大模型,以超越人类水平0.8个百分点的成绩登顶全球榜首。
克制的才华
但ERNIE 3.0还能更进一步。
通过知识图谱的加持,ERNIE 3.0已经学富五车,但它的能力展现需要稍加克制,否则便显得才华横溢而又语无伦次。也就是说,ERNIE 3.0需要进行可控学习。
通过将模型预测出的文本属性和原始文本进行拼接,构造从指定属性生成对应文本的预训练数据,模型通过对该数据的学习,实现不同类型的零样本生成能力。用户可以将指定的体裁、情感、长度、主题、关键词等属性自由组合,无需标注任何样本,便可生成不同类型的文本。
另外,百度还提出了可信学习,让ERNIE 3.0学习到的知识更加可靠。
具体来说,通过自监督的对抗训练,让模型学习区分数据是真实的还是模型伪造的,使得模型对生成结果真实性具备判断能力,从而让模型可以从多个候选中选择最可靠的生成结果。
高可信的可控生成预训练
学成出师的ERNIE 3.0,变得更加强大,和庞大——2600亿参数的鹏城-百度·文心。
架构设计上,鹏城-百度·文心采用了双层的语义表示,从而可以同时处理情感分析等语言理解任务,以及机器翻译等语言生成任务。它还能做无标注数据的零样本学习(Zero-shot Learning)和有标注数据的微调训练(Fine-tuning)。
鹏城-百度·文心模型结构图
基于知识的学习力
具备知识内涵的大模型,也就具备了更多对现实的先验洞察,自然在学习新事物时会更加的快,也就是小样本能力更强。
目前,鹏城-百度·文心已在机器阅读理解、文本分类、语义相似度计算等60多项任务中取得最好结果。
在落地场景应用中,模型仅利用少量标注数据甚至无需标注数据,就能解决新场景的任务已成为AI工业大生产的关键。鹏城-百度·文心在30余项小样本和零样本任务上均取得了最优效果。
鹏城-百度·文心小样本学习效果
鹏城-百度·文心零样本学习效果
传统的机器学习或深度学习依赖海量的数据,样本量过小容易过拟合,模型表达能力不足。但某些实际场景下样本很难收集,小样本学习致力于在数据资源比较稀少的情况下训练出比较好的模型。
例如在医学领域,部分罕见病例(或新型病例)的数据信息极少。可以利用小样本学习能力的特点,针对性的解决这种病例。
2根基
从百亿级到千亿级的跨越,不是简单的线性扩展过程。
正如摩尔定律在发展过程中,随着器件尺寸越来越小,晶体管结构设计变得越来越重要,人们不再简单粗暴地考虑尺寸缩小问题,而是耗费很大的成本去探索晶体管的新型材料、器件结构和工作原理,从而更好地控制其工作电流。
预训练模型也是一样。同时,不同于稀疏专家模型比如 Switch Transformer可以轻易地扩展到万亿参数规模,对于单体模型而言,扩展一个数量级也是非常困难的大工程。
一方面是并行策略。百亿大模型的训练一般用单台V100就可以实现,采用数据并行可以进一步加速。但是,千亿大模型是无法用单机负载的,比如对于2600亿参数的鹏城-百度·文心,一般至少需要32台V100才能负载,而这需要分布式训练的算法来合理编排部署训练模型。
而且,还需要混合使用多种分布式的并行策略,比如层内Tensor并行、层间流水线并行、数据并行、Shard数据并行、优化器并行,同时叠加offload策略、重计算策略。这要求深度学习框架能够支持这些策略的灵活配置,保证收敛性的同时,让用户方便地使用这些算法。Paddle之前也曾就此提出4D训练的概念,也就是混合并行的四个常见维度——层内、层间、数据、优化器。
另外一方面是收敛算法。模型越大,训练成本越高,进而对模型的收敛效率的要求越高。比如鹏城-百度·文心在训练过程中,就需要通过学习率预热策略、渐进式学习策略以及优化的大批量(batch)优化策略,来实现模型的高效收敛,进而保证最终训练效果。
而且,长时间的大规模训练对集群稳定性和调度也是一个考验。机器都是有出错概率的,集群越大出错的概率也就越大。而目前单体模型一般采用的高性能训练模式中,只要单台机器出错就会影响整体过程,底层带来的不稳定性会对训练的进度和运维带来直接的影响。Paddle和集群调度结合可以在训练过程中屏蔽掉出错的机器,减少因而造成的重新调度的时间损耗。
总之,训练一个千亿的大模型是对框架、算法、集群调度的全流程的一个考验。
深度学习本身是一个工程性质很强的学科,而大模型训练的第一步也正是:选择正确的基础设施。
因此,为了实现这次升级,百度在基础设施上下了大功夫,而基础设施的核心是算力以及训练框架。
E级AI算力加持
首先,在算力方面,鹏城-百度·文心模型基于百度百舸集群初始化,然后采用“鹏城云脑II”高性能集群训练。
“鹏城云脑II”是由鹏城实验室联合国内优势科研力量研发的我国首个国产自主E级AI算力平台。在国际超算排行榜上,“鹏城云脑II”实力超群,曾两夺IO 500总榜和10节点榜双料冠军,并在权威AI基准测试MLPerf和AIPerf也收获颇丰,获得多次榜单冠军。
这些成绩充分展现了“鹏城云脑II”优越的智能计算性能和软硬件系统协同水平,也为鹏城-百度·文心大模型强大技术能力奠定基础。
自适应的效益
其次,在训练框架方面,鹏城-百度·文心面临着适配性问题。
超大规模模型的训练和推理给深度学习框架带来很大考验,需要利用大规模集群分布式计算才能在可接受时间内完成训练或推理的计算要求,同时面临着模型参数量单机无法加载、多机通信负载重、并行效率低等难题。
早在今年四月,国产深度学习框架百度飞桨就发布了4D混合并行技术,可支持千亿参数规模语言模型的高效分布式训练。但鹏城-百度·文心的训练任务对深度学习框架带来了全新的挑战。
分布式训练的基本步骤有四个:分配所需资源;对 NN 模型进行分区;将每个分区分配给指定的设备;以特定顺序独立执行任务并进行必要的通信;并监控资源状态,调整训练流程。
分布式训练的基本步骤
不同模型通常需要适配不同的并行策略,这些策略受到以上四个步骤,也就是:资源分配、模型分区、任务放置和分布式执行的影响。
但现有的框架通常因为专门性、启发自受限的实践、对并行性支持不足、与资源管理解耦等原因,导致无法实现端到端的分布式训练,也就是无法在考虑以上所有步骤的情况下,进行全局优化。
具体而言,一方面,鹏城-百度·文心的模型结构设计引入诸多小形状的张量计算,导致层间计算量差异较大,流水线负载不均衡;另一方面,“鹏城云脑II”的自有软件栈需要深度学习框架高效深度适配,才能充分发挥其集群的领先算力优势。
针对以上挑战,并综合考虑当前主流硬件、模型的特点与发展趋势,飞桨设计并研发了具备更强扩展能力的端到端自适应大规模分布式训练架构。
在这项研究中,百度从系统的端到端角度来设计分布式框架,通过考虑上图中分布式训练的所有基本步骤来满足上述通用自适应要求。
架构图概览
首先,采用统一的分布式计算视图和统一的异构资源视图来表示任意的并行性和资源配置。然后,基于这两种统一表示,开发了全局成本模型和全局规划器。
在全局成本模型的驱动下,可以利用全局规划器来根据给定的神经网络模型和集群的配置自动选择更好的并行策略,包括分区和放置决策。
许多研究表明,前向和后向计算的调度顺序对性能和内存利用率都有比较大的影响。尤其是,对于分布式训练来说,计算和通信尽可能地重叠以达到高水平的性能是极其重要的。
为此,团队还优化了分布式异步执行器,它可以尽可能地自动重叠计算和通信,也就是尽可能减少同步化,并支持不同粒度和复杂的控制流。
最后,通过分布式训练框架和平台调度器之间更好的内置交互,来实现容错和弹性的分布式训练,从而提高整体资源利用率。当硬件故障、有空闲资源或资源紧张时, 弹性资源管理模块能感知硬件资源变化,如故障、扩容、缩容,来自动重新构建资源视图,并触发飞桨框架的各个模块来自动的做出反应,如模型切分、硬件映射、流水执行,在不中断训练的情况下,弹性调度集群可用资源,来进一步提升训练的性能。
飞桨超大模型训练框架
论文链接:https://arxiv.org/abs/2112.02752
模块化或者解耦通常是为了更好的灵活性,但该架构的设计注意到了背后的基本原则:解耦只是一种实现相关模块分离的机制,不应妨碍全局优化。
总体而言,该架构可以针对不同的模型和硬件,抽象成统一的分布式计算视图和资源视图,并通过硬件感知细粒度切分和映射功能,搜索出最优的模型切分和硬件组合策略,将数据、模型参数、梯度、优化器状态按照最优策略分配到不同的计算卡上,达到节省存储、负载均衡、提升训练性能的目的;同时当资源变化时,整个框架的各个模块能自动的做出反应。
飞桨自适应大规模分布式训练架构使得鹏城-百度·文心的训练性能较传统分布式训练方法提升了2.1倍,并行效率高达91.7%。此外,为进一步提高模型训练的稳定性,飞桨的容错功能,可以在不中断训练的情况下自动替换故障机器,加强模型训练的鲁棒性。
在推理方面,飞桨基于分布式推理框架Paddle Serving,通过多机多卡的张量模型并行、流水线并行等一系列优化技术,获得最佳配比和最优吞吐。通过统一内存寻址(Unified Memory)、算子融合、模型IO优化、量化加速等方式,鹏城-百度·文心的推理速度得到进一步提升。
具备了内涵和根基的鹏城-百度·文心,大步走向现实应用。但在迈出这一步之前,百度还多考虑了一步。
3大模型的绿色落地
众所周知,大模型训练、推理所消耗的资源极其昂贵和密集。
此前,Paddle Serving已提供了超大模型的高速推理方案,但为了进一步打造大模型时代的绿色落地方案,降低大模型成本应用成本,百度团队首创大模型在线蒸馏技术。
在线蒸馏技术
通俗来说,这种蒸馏技术采用了“一师多徒”、“多代传承”的形式。
具体而言,“一师多徒”技术在鹏城-百度·文心学习的过程中周期性地将知识信号传递给若干个学生模型同时训练,达到蒸馏阶段一次性产出多种尺寸的学生模型的目的。
相对传统蒸馏技术,该技术极大节省了因大模型额外蒸馏计算以及多个学生的重复知识传递带来的算力消耗问题。
这种新颖的蒸馏方式利用了鹏城-百度·文心规模优势,在蒸馏完成后保证了学生模型的效果和尺寸丰富性,方便不同性能需求的应用场景使用。
此外,百度还发现,鹏城-百度·文心与学生模型尺寸差距千倍以上,模型蒸馏难度极大甚至失效。
为此,研究团队引入了“多代传承”,也就是助教模型进行蒸馏的技术,利用助教作为知识传递的桥梁以缩短学生模型和鹏城-百度·文心表达空间相距过大的问题,从而促进蒸馏效率的提升。
鹏城-百度·文心压缩版模型效果
鹏城-百度·文心在线蒸馏方案的效果非常显著,模型压缩率达到99.98%。压缩版模型仅保留0.02%参数却能达到和原有模型相当的效果。相比直接训练参数规模是自身2倍的BERT Base模型,鹏城-百度·文心在5项任务准确率上绝对提升了2.5%,而相对于同等规模的RoBERTa Base,准确率则绝对提升了3.4%。
大模型的开发和应用不仅仅关系到企业和用户,它的影响边界非常广阔,涉及的人群也非常多样,包括了:数据运维人员、模型研发人员、下游应用开发人员、软件和硬件开发人员、领域专家等等,每个人都有责任让大模型产生更好的社会价值。百度作为模型研发者这一角色,亦深刻意识到了自身的义务。
文心大模型也已通过百度飞桨平台逐步对外开源开放,它代表着百度对人工智能下一代范式的展望——同质化。
4同质化范式
如今,NLP 领域几乎所有的 SOTA 模型都是少数几个基于 Transformer 的大模型进化而来。
而在整个AI社区中,一场范式转变正在蔓延。随着BERT、GPT-3、DALL-E等大规模预训练模型相继出现,人们意识到,大模型似乎就相当于通用模型。无论是图像、语音还是蛋白质序列预测,都在见证这场范式转变——同质化。
这种图景似乎指向了认知科学中一个非常著名的概念——全局工作空间理论(GWT)。GWT是一种意识模型,最初由美国心理学家Bernard J. Baars等人提出,是当代主要的神经科学意识理论之一。
该理论提议将大脑分为执行不同功能的专用模块,模块与模块之间具有长距离连接。通过注意选择的过程确定输入或任务要求后,专用模块内的信息可以在不同模块之间传播与共享。
而基于深度学习大模型的通用性,来实现GWT似乎已经不再遥不可及。近年来有论文曾提出,可以通过深度学习“全局隐工作空间”将不同的专用预训练网络关联起来,并通过Transformer的注意力机制进行选择性关联。
这些专用网络可能涉及:感知(物体识别,检测,分割,语音识别...),运动(机器人手臂控制,语音生成…),语言(文本理解,机器翻译,文本-语音转换...),记忆存储,或更高级别的与认知和行为相关的功能(直观物理引擎,RL策略,任务嵌入...)。
在这个多模态专家网络族群中,百度的足迹已经不止于语言、知识,也跨越到了图像领域。
2020年7月,百度提出了知识增强视觉-语言预训练模型 ERNIE-ViL,首次将场景图(Scene Graph)知识融入多模态预训练。
ERNIE-ViL在 5 项多模态任务上刷新世界最好效果,并在多模态领域权威榜单 VCR 上超越微软、谷歌、Facebook 等机构,登顶榜首。
自2019年发布初代文心ERNIE 1.0至今,百度已经借助注意力机制在这个“全局隐工作空间”中实现了多重跨越,包括:知识增强、跨语言、跨模态等。
知识增强大模型能够同时从大规模知识和海量无结构数据中持续学习,如同站在巨人的肩膀上,训练效率和理解准确率都得到大幅提升,并具备了更好的可解释性。
除了将知识和数据融合学习,百度文心还通过知识增强跨语言学习与知识增强跨模态学习,从多种语言、多种模态数据中学习到统一的语义表示和理解能力,具有很强的通用性。能够有效提升效果、减少应用成本、降低应用门槛,满足真实场景中的应用需求。
百度文心自2019年诞生至今,在语言理解、文本生成、跨模态语义理解等领域取得多项技术突破,在公开权威语义评测中斩获了二十余项世界冠军。
目前,百度文心已大规模应用于搜索、信息流、智能音箱等互联网产品,并通过百度智能云输出到工业、能源、金融、通信、媒体、教育等各行各业,助力产业智能化升级。比如在金融领域,文心可以实现比人工识别快30倍的合同智能解析。
百度智能云的智能客服也基于文心提升了服务的精准性,目前已经在中国联通、浦发银行等企业广泛应用,落地全国各地。
本次发布的鹏城-百度·文心将进一步解决 AI 技术在应用中缺乏领域和场景化数据等关键难题,降低门槛,加快人工智能大规模产业应用。