简介: 7 月 8 日,中文语言了解权威评测基准 CLUE 公开了中文小样本学习评测榜单最新后果,阿里云计算平台 PAI 团队携手达摩院智能对话与服务技术团队,在大模型和无参数限度模型双赛道总成绩第一名,决赛问难总成绩第一名。
作者 | 同润、归雨、熊兮
起源 | 阿里技术公众号
一 概述
7 月 8 日,中文语言了解权威评测基准 CLUE 公开了中文小样本学习评测榜单最新后果,阿里云计算平台 PAI 团队携手达摩院智能对话与服务技术团队,在大模型和无参数限度模型双赛道总成绩第一名,决赛问难总成绩第一名。
中文语言了解权威评测基准 CLUE 自成立以来公布了多项 NLP 评测基准,包含分类榜单,浏览了解榜单和自然语言推断榜单等,在学术界、工业界产生了深远影响。其中,FewCLUE 是 CLUE 最新推出的一项中文小样本学习评测基准,用来评估机器学习模型是否可能通过极少样本的学习来把握特定的自然语言解决工作。基于这项评估,科研人员能够更精准的掂量机器学习训练进去的模型的泛化性和准确率。比方智能客服场景中的用户用意辨认,仅需人工标注几十条样本,就能让用意辨认的准确率达到 90%。
家喻户晓,大规模预训练模型尽管在各大工作外面获得十分大的成果,然而在特定的工作上,还是须要许多标注数据。因为收集和标注模型须要的训练的数据收集老本低廉,所以须要攻关小样本学习技术,应用远小于经典深度学习算法须要的数据量,靠近甚至超过经典深度学习算法的精度。此次,阿里云 PAI 团队携手达摩院提出了一套大模型 + 小样本的联结计划,在大规模通用预训练根底之上,联合了基于常识的预训练和 Fuzzy-PET 少样本学习,一举获得了优异的问题。甚至在一个小样本学习工作上的精准度超过了人类。
二 赛题剖析 & 建模思路
较量数据集总体特点如下:
- 小样本:训练集和测验集均为每个类别 16shot,考验算法在小样本情境下的鲁棒性
- 泛化性:工作特色差别显著,须要模型有较好的泛化能力
- 无标签数据:少数工作提供了数量可观的无标签数据,能够尝试 continued pretrain 和 self-training
基于对赛题的解读,咱们设计了三段式的建模办法:
- 通用畛域数据的从头预训练:借助 PAI-Rapidformer 提供的各种减速策略以及预训练套件,咱们从头预训练了 3 亿量级和 15 亿量级的中文预训练模型,预训练过程采纳融入常识的预训练算法 (详见 3.2)。
- 多任务的持续预训练:目标是进一步强化双句匹配工作(OCNLI, BUSTM, CSL)的 Performance。咱们将分类工作转化为文本蕴含工作,应用文本蕴含数据进行 Continued Pretrain。例如 [CLS]I like the movie[SEP]This indicates positive user sentiment[EOS]
- 针对每个工作进行小样本算法微调:抉择 PET(Pattern-Exploiting Training)作为上游微调的外围办法, 开发 Fuzzy-PET 算法,缩小了 PET 算法标签词人工抉择带来的稳定,并且在工作上带来成果晋升。同时应用了 self-training 的半监督办法,在上游微调阶段利用上半监督学习(详见 3.3)
三 核心技术
1. PyTorch 大模型训练减速
自从 2020 年推出 PAI-EasyTransfer 面向 NLP 和迁徙学习的框架之后,PAI 团队开发了 PyTorch 版本的 EasyTransfer,命名为 EasyTexMiner。较量所用的模型,是通过 EasyTexMiner 的高性能分布式预训练实现的。EasyTexMiner 的分布式训练有机整合了微软的 DeepSpeed 和英伟达的 Megatron 长处,整体框图如下:
EasyTexMiner 的分布式训练交融了以下外围的技术:
1)激活检查点(Activation Checkpoint)
在神经网络两头设置若干个检查点 (checkpoint),检查点以外的两头后果全副舍弃,反向流传求导数的工夫,须要某个两头后果就从最近的检查点开始计算,这样既节俭了显存,又防止了从头计算的繁琐过程。
2)梯度累积 (Gradient Accumulation)
以 batch\_size=16 为例,能够每次算 16 个样本的均匀梯度,而后缓存累加起来,算够了 4 次之后,而后把总梯度除以 4,而后才执行参数更新,这个成果等价于 batch\_size=64。这是一种无效的减少 Batch Size 的办法。通过该策略能够将每个 step 的 batch size 裁减到很大,联合 LAMB 优化器会晋升收敛速度。
3)混合精度训练(Mixed Precision Training)
采纳混合精度训练的益处次要有以下两点:
- 缩小显存占用,因为 FP16 的内存占用只有 FP32 的一半,天然地就能够帮忙训练过程节俭一半的显存空间。
- 放慢训练和推断的计算,FP16 除了能节约内存,还能同时节俭模型的训练工夫。具体原理如下图所示,外围是在反向流传参数更新的时候须要保护一个 FP32 的备份来防止舍入误差,另外会通过 Loss Scaling 来缓解溢出谬误。
4)即时编译 JIT
当 PyTorch 在执行一系列 element-wise 的 Tensor 操作时,底层 Kernel 的实现须要重复地读写访存,然而只执行大量的计算,其中大部分工夫开销并不在计算上,而在访存读写上。比方,实现一个带有 N 个元素的 Tensor 的乘 / 加法 Kernel,须要 N 次加计算,2N 次读和 N 次写访存操作。咱们称计算少, 访存次数多的 Kernel 为访存 Bound。为了防止这种重复的读写,以及升高 Kernel Launch 的开销,能够采纳 Kernel Fusion。访存 Bound 的 Kernel Fusion 的外围原理是通过访存的局部性原理,将多个 element-wise 的 Kernel 主动合并成一个 Kernel,防止两头后果写到内存上,来进步访存的利用率;同时因为多个 Kernel 合并成一个 Kernel,Kernel launch 开销也缩小到了 1 次。
5)3D 并行
3D 并行策略指的是:数据并行,模型并行,流水并行三种策略的混合使用,以达到疾速训练百亿 / 千亿量级模型的目标。该项技术最早由 DeepSpeed 团队研发,能够减速大模型的训练。
6)CPU Offload
反向流传不在 GPU 上计算,而是在 CPU 上算,其中用到的两头变量全副存储在内存中,这样能够节省下 GPU 的显存占用,用工夫换空间,以便能放到更大尺寸的模型。
7)Zero 显存优化器
ZeRO(The Zero Redundancy Optimizer)是一种用于大规模分布式深度学习的新型内存优化技术。ZeRO 具备三个次要的优化阶段:
- 优化器状态分区 (Pos):缩小了 4 倍的内存,通信容量与数据并行性雷同;
- 减少梯度分区 (Pos+g):8x 内存缩小,通信容量与数据并行性雷同;
- 减少参数分区 (Pos+g+p):内存缩小与数据并行度和复杂度成线性关系。
吞吐性能评测
本次公布应用了最新的阿里云 EFLOPS AI 集群零碎,应用 NVIDIA A100 GPU 和 100Gbps Mellanonx CX6-DX 网卡,联合全零碎拓扑感知的高性能分布式通信库 ACCL 和 EFLOPS 集群多轨网络能力,实现无拥塞通信,大幅减速了模型的训练速度。如下图所示:
可扩展性评测
咱们采纳比 BertLarge 更大一点的单卡放不下的模型来做模型并行下的可扩展性评测。具体配置是 num-layers=24,hidden-size=2048,num-attention-heads=32,该模型的参数总量大概是 1.2B。咱们别离在 8 /16/32/64 卡上进行来吞吐评测,从下图的指标来看,随着卡数的减少,吞吐简直是近线性的晋升。
2. 融入常识的预训练算法 KGBERT
在通用预训练模型根底之上,咱们思考融入常识的预训练来晋升预训练模型的成果。
数据和常识:通过与达摩院 NLP 数据团队单干,获取了大规模、高质量且具备多样性的数据与常识。
- 大规模:5 亿中文图谱常识,通过远监督获取 2 亿 Sentence-SPO Pair;
- 高质量:针对原始语料庞杂,存在大量冗余、噪声的问题,通过 DSGAN 常识降噪算法,精选上亿高质量 Sentence-SPO,用于模型训练;
- 多样性:FewCLUE 数据集除了通用畛域,还蕴含电商、游览、教育、金融等垂直行业,而这部分数据和常识比拟稀缺,为此咱们构建了一套高效的常识生产零碎,可能对各类垂直行业的文档、网页进行主动三元组抽取,从而极大的晋升了常识的丰盛度。
模型和预训练任务
为了高效的利用常识,咱们基于“Sentence- 正向 SPO- 负向 SPO”对齐语料,设计了多粒度语义了解预训练任务:
- Mention Detection:加强模型对外围实体 Mention 的了解;
- Sentence-SPO joint Mask:将大规模文本数据及其对应的 SPO 常识同时输出到预训练模型中进行预联结训练,促成结构化常识和无构造文本之间的信息共享,晋升模型语义理解能力;
- SPO Margin Magnify:设计比照学习的预训练任务,拉开 Sentence 相干 SPO 与无关 SPO 语义距离,使其具备更强的语义辨别能力。
技术创新:常识筛选与融入机制
1)动机
NLP 工作中,常见的做法是依据以后输出的自然语言进行建模,然而这样通常用到的信息只有以后字面部分信息。这和人类在了解语言的时候具备显著差异,人类会用到咱们之前学习到的常识辅助了解。人类会利用这些内部常识来增强本人的了解,如果没有额定的常识,比方接触到咱们一个不相熟的畛域,咱们也很难齐全了解语义。而目前 NLP 常见做法只利用了输出信息,没用利用内部常识,了解档次偏低。
事实中常识是宏大且繁冗的,须要针对性的采样常识,缩小引入无关的常识,最大化常识的收益。
2)办法
设计一种新鲜的 Gated 机制,先对句子进行编码,再通过 GCN 聚合出子图信息,通过门控机制,管制信息的流入;在预训练阶段,通过设计最大化常识增益指标函数,让模型更好的学习到有价值的信息。
3)后果
基于 Gated 机制的常识筛入,可能无效捕捉到高增益的三元组进行融入,在政务、金融属性辨认工作上准确率有 2% 的晋升。这样的常识筛选机制在学术公开数据集验证无效,并获得 SOTA 的成果,相干工作已发表在 SIGIR2021。
3. 小样本学习算法
在融入常识的预训练语言模型根底上,计算平台 PAI 和达摩院团队联合推出了自研的多任务小样本学习算法 Fuzzy-PET。因为 FewClue 榜单具备一系列不同类别的工作,如果在针对特定工作进行小样本微调之前,模型能学习到跨工作的可迁徙的常识,模型在针对特定工作进行小样本微调过程中会取得更好的初始参数设置。基于计算平台 PAI 团队在 Meta-Learning 相干算法的积攒根底上,咱们在融入常识的预训练语言模型的持续预训练阶段,引入了多个 FewClue 工作的无标注数据进行学习,在学习过程中,模型主动从这些工作相干的数据中学习到这些工作的背景常识,从而更有利于特定工作的小样本学习。Meta-Learning 的相干算法曾经发表在 EMNLP2020 和 ACL2021 上。。
在特定小样本工作学习阶段,咱们对 Pattern-Exploiting Training(PET)算法进行了改良,引入了 Fuzzy Verbalizer Mapping 机制。举例来说,在经典的 PET 算法中,对于 FewClue 的工作 OCNLI,咱们设计了如下模板:“其实我感觉你不懂球啊”和“你不懂篮球。”的关系是 MASK。
对于输入的 Masked Language Token(即 Verbalizer),如果预测后果为“相干”,咱们将其映射为类别标签“entailment”;如果预测后果为“无关”,咱们将其映射为类别标签“neural”; 如果预测后果为“相同”,咱们将其映射为类别标签“contradiction”。利用 Verbalizer 到类别标签人工映射,PET 实现了对文本分类工作的建模。在 Fuzzy Verbalizer Mapping 机制中,咱们假如多个 Verbalizer 可能对某一个类别标签有映射关系,从而进一步晋升模型在小样本学习过程中的泛化性。参考先前的例子,咱们设计三组标签词:相干, 无关, 相同 / 蕴含, 中性, 矛盾 / 蕴含, 中立, 反向。训练时每一条样本应用多组标签词输出,在推理时每个类别计算所有候选词的预测概率并相加,最终抉择总概率最高的类别。如上述例子,若预测“相干”,“蕴含”,“蕴含”的概率和大于预测“无关”,“中性”,“中立”或预测“相同”,“矛盾”,“反向”的概率,则预测后果为“entailment”。
这一机制在 FewClue 的多个工作中对预测精度晋升有侧面作用,并且肯定水平上加重人工抉择不同标签词产生的稳定。此外,咱们也思考在小样本学习阶段引入无标注的数据进行 Self-training,即依附现有模型对无标注数据进行打标,实现模型的迭代优化。
四 业务 & 产品
值得一提的是,基于机器学习平台 PAI 平台,这项技术已在理论业务场景落地且有很好的体现。这些技术加强了达摩院云小蜜 KBQA 能力,使其具备疾速冷启动、精准问答的能力,并在政务、金融、通用线多个业务场景落地。在理论我的项目中,在少样本情景下(20 条),能够做到疾速冷启动,从而实现精准问答。同时,这些技术无望给阿里云上的机器学习算法赋予小样本学习的能力,通过很少的数据标注,就能够大大晋升上游工作的成果。这意味着阿里云模型已具备低成本疾速落地的施行能力,能高效且麻利的赋能企业的业务。
基于 PAI,阿里云心愿构建大规模 AI 端到端的能力,从底层芯片到分布式系统,再到下层算法和数据的规模化,打造 AI 工程化团体作战的能力,服务于各行各业。目前,PAI 平台反对千亿特色、万亿样本规模减速训练,内置 200+ 成熟算法、以及图像视觉、音视频、文本等 AI 畛域高质量深度学习预训练模型 50 余个,全面晋升企业 AI 工程效率。在平台能力根底上,PAI 平台还提供了成熟的行业解决方案,成为泛滥企业的优选服务,曾经在智能举荐、用户增长、端侧超分、主动驾驶等泛滥场景成熟商用。
版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。