©PaperWeekly 原创 · 作者 | 金金

单位 | 阿里巴巴研究实习生

研究方向 | 推荐系统

简介

近日,超大规模的智能模型越来越受到大家的关注,但是仅仅依赖于超大的计算资源并不足以完成这件事,技术上的精巧设计对模型性能和训练速度同样有着巨大的影响,本文包含最近的一些相关工作,包括编程实现框架、算法模型、微调技术以及具体的应用。

GLM:更通用的预训练模型

现有各种类型的预训练架构,主要存在如下的三种:

  • 自回归模型如 GPT,从左往右学习的模型,在长文本的生成以及少样本学习能力很强(参数量大);缺点就是单向的注意力机制不能完全捕捉 token 的内在联系。

  • 自编码模型如 BERT,双向的 transformer 作为编码器+去噪目标,在语言理解相关的文本表示效果很好。缺点是不能直接用于文本生成。

  • 编码解码模型如 T5,编码器使用双向注意力,解码器使用单向注意力,并且有交叉注意力连接两者,在有条件生成任务中表现良好(文本摘要,回答生成)。

然而,没有一个预训练框架对所有任务都执行得最好,这给模型开发和选择带来了不便。本文 [1] 提出了一个新的预训练框架 GLM(通用语言模型)来解决这个问题。

与之前的工作相比,本文体系结构有三个主要的优点:1)它在分类、无条件生成和条件生成任务上表现良好;2)它优于改进预训练-精调一致性的 BERT-like 分类模型;3)能很好地处理变长问题,其模型图如下:

整体来说与 BERT 相似,但是包含两个修改--重新安排了归一化和残差的顺序,在 largeBERT 模型中有效;替换前馈网络为线性网络。另外,GLM 采用了自回归空白填充,具体来说它清空输入中的多个跨度,为了捕捉跨度之间的内在联系,随机交换跨度的顺序。这里与 spanBERT 的区别是跨度的个数是不知道的;跨度的预测是自回归的。

而 mask 注意力矩阵如上图所示,从矩阵可以很明显看到,在 Part A 部分,采用的是自编码注意力,而在 Part B 部分,采用的是自回归注意力。GLM 的注意力就是这样将 2 部分矩阵进行拼接,形成了即有单向,又有双向的注意力的模型。

在下游任务微调上,将 NLU 中的分类任务定义为空白填充的生成任务。先将某些标签映射为某个词,然后将映射后的词进行 Blank 预测。这种方法不同于之前的预训练方法,预训练与微调的目标的不一致。如此一来,分类和生成都可以变成生成的任务,从而打破了 bert 不知道 mask 数量和位置的问题,并且假设 mask 之间是相关的,这样可以捕捉更多的依赖关系。

和其他模型比较来看,GLM 取得了更好的效果。

具体来说,和已有模型比较如下:

  • BERT:Bert 属于自编码模型。目标任务是预测 mask,而且 mask 之间是相互独立的,因此,Bert 不能捕捉到 mask 之间的相关性;Bert 只能处理单 token 的 mask,不能处理多个连续的 mask token,即只能预测单个 token。

  • XLNet:XLNet 属于自回归的模型。需要知道预测 token 的长度;使用双流注意力机制解决了信息泄漏的问题,改变了 transfomer 的结构,增加了耗时;XLNet 决定一个 token 是否被独立预测。

  • T5:T5 也是处理的 Blank 填充的任务目标,但是 GLM 使用了单个的 transformer 编码器学习单向和双向的注意力。T5 在编码和解码阶段使用不同的位置编码,使用哨兵标记来识别不同的 mask 跨度,哨兵标记造成了模型能力的浪费和预训练微调的不一致性。而 GLM 通过共享参数使参数比编码解码模型更有效。

  • UniLM:UniLM 是通过在自编码框架下改变在双向,单向,互相之间的 attention mask 来统一预训练目标;但还是不能完全捕捉当前 token 对于前面 token的依赖。微调 GLM,为了保持和预训练的一致性,其采用 mask 的方式做生成任务会比自回归更加低效。比如长度上就多了几个 token。

P-tuning算法:释放语言模型潜能

新兴的 GPT-3 在小样本和零样本学习方面取得了巨大成功。它的成功表明,巨大的单向语言模型与适当的手动提示一起可能有助于自然语言理解。然而,手工制作一个最佳的提示很困难,这通常需要不切实际的大验证集。在许多情况下会过拟合测试集。

此外,很容易创建导致性能大幅下降的对抗性提示。鉴于这些问题,很多的工作集中在自动搜索离散提示上并证明了它们的有效性。然而,由于神经网络本质上是连续的,离散提示可能不是最优的方案。

在这项工作 [2] 中,作者提出了一种新方法:P-tuning,连续空间中自动搜索提示,以弥合 GPT 和 NLU 应用程序之间的差距。P-tuning 利用很少的连续自由参数作为提示,作为预训练语言模型的输入。然后作者使用梯度下降作为离散提示搜索的替代方法来优化连续提示,其模型框架图如下:

我们可以看到,对比原来的模型直接搜索一些提示的方法,本文通过一个小型的 LSTM 模型把这几个 Embedding 算出来,并且将这个 LSTM 模型设为可学习的。

实验结果显示出如果配合 P-tuning,那么:1)GPT、BERT 的效果相比直接 finetune 都有所提升;2)GPT 的效果还能超过了 BERT。这表明 GPT 不仅有 NLG 的能力,也有 NLU 能力。而 BERT 配合 P-tuning 也有提升,说明 P-tuning 对语言模型潜能的释放是较为通用的。

CogView:文本生成图像的新框架

通用领域中的文本到图像生成长期以来一直是一个未解决的问题,它需要生成模型和跨模态的理解。本文 [3] 提出使用带有 VQ-VAE tokenizer 的 40 亿参数 Transformer:CogView 来解决此问题。对比已有的模型,CogView 有如下特点:

  • 根据 MS COCO 上的 FID 指标来看,CogView 大大优于 DALL-E 和以前的基于 GAN 的方法,并且是第一个开源大型文本到图像转换器。

  • 除了零样本生成之外,本文还进一步研究了对预训练 CogView 进行微调的潜力。CogView 可以适应不同的下游任务,例如风格学习(特定领域的文本到图像)、超分辨率(图像到图像)、图像字幕(图像到文本),甚至文本-图像重新排序。

  • 由于本文简单有效的 PB-relaxation 和 Sandwich-LN,CogView 是第一个几乎用 FP16 训练的大型文本到图像转换器。这些技术可以消除转发中的溢出,稳定训练,并且可以推广到其他 transformers 的训练。

具体来说,该模型实际上是在优化图像和文本联合分布的 ELBO:

固定隐变量,通过优化鲜艳的 KL term:

整体模型框架如下:

以下是该模型生成的图像,可以看到的确可以有效的理解文本并输出相应的图像。

FastMoE:首个支持PyTorch框架的MoE系统

近年来,Google 研究者提出了 MoE(Mixture of Experts)层。该层包含一个门网络(Gating Network)和 n 个专家网络(Expert Network)。对于每一个输入,动态地由门网络选择 k 个专家网络进行激活。该方法可以在计算量不增加的情况下,大大增加参数量从而增加模型的性能。

而后进一步将 MoE 应用到了基于 Transformer 的神经机器翻译的任务上。GShard 将 Transformer 中的 Feedforward Network 层替换成了 MoE 层,并且将 MoE 层和数据并行巧妙地结合起来。在数据并行训练时,模型在训练集群中已经被复制了若干份。GShard 通过将每路数据并行的 FFN 看成 MoE 中的一个专家来实现 MoE 层,这样的设计通过在多路数据并行中引入 All-to-All 通信来实现 MoE 的功能。

然而,训练万亿规模的 MoE 需要算法和系统协同设计一个经过良好调整的高性能分布式训练系统。遗憾的是,现有的唯一满足要求的平台强烈依赖于谷歌的硬件(TPU)和软件(Mesh Tensorflow)堆栈,并没有向公众开放,尤其是 GPU 和 PyTorch 社区。

FastMoE 是一个基于 PyTorch 的分布式 MoE 训练系统,具有通用加速器。该系统为灵活的模型设计和轻松适应不同的应用程序(例如 Transformer-XL 和 Megatron-LM)提供了分层接口。与使用 PyTorch 直接实现 MoE 模型不同,FastMoE 中通过复杂的高性能加速技能高度优化了训练速度。该系统的最大特点是支持在多个节点的多个 GPU 上放置不同的专家,从而可以相对于 GPU 的数量线性增加专家的数量。

总结

可以看到,超大规模智能模型相关工作目前已经呈现百花齐放的局面,在编程实现框架、算法模型、微调技术以及具体的应用等方面都有了很大的进展,目前智源所发布的悟道模型,也说明了我们国家在这方面的重视和投入。

当然,大规模预训练模型的参数规模通常远超传统的专用人工智能模型,在算力资源、训练时间等方面消耗巨大,未来在在高效编码、高效模型、高效训练、高效微调和高效推理等方面还有很多值得研究的点, 等待着研究者们去挖掘。

参考文献

[1] All NLP Tasks Are Generation Tasks: A General Pre-training Framework

[2] GPT Understands, Too

[3] CogView: Mastering Text-to-Image Generation via Transformers

[4] FASTMOE: A FAST MIXTURE-OF-EXPERT TRAINING SYSTEM

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

???? 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

???? 投稿通道:

• 投稿邮箱:hr@paperweekly.site

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

△长按添加PaperWeekly小编

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

超大规模智能模型相关工作总结:编程实现框架、算法模型、微调技术和应用...相关推荐

  1. 模型相关:SolidWorks按实际比例创建模型,在Unity中保持尺寸不变

    拟解决问题: 如题实现在SolidWorks按实际比例创建模型,在Unity中保持尺寸不变 解决方法: 1.在SolidWorks中按拟定尺寸创建模型,保存为零件: 2.打开设置-文档属性-单位,修改 ...

  2. 智源出品 | 超大规模智能模型产业发展报告(附下载)

    从2018年谷歌提出BERT预训练语言模型至今,超大规模智能模型已经走过了三年的发展历程.近年来,预训练模型成为人工智能领域一大重点研究方向. 大模型技术不仅是学术界重点关注的领域,产业领域也在期待其 ...

  3. 算法模型---支持向量机(SVM)

    来源:JerryLead 支持向量机的特点 支持向量机的用途 SVM一般是用来分类的(一般先分为两类,再向多类推广) 支持向量机的适用范围 数据类型 自变量可以数值型和标称型数据 因变量是二分类,通过 ...

  4. HTML怎么把文字分栏_算法模型怎么画?国内好用的模型图软件推荐

    算法模型主要应用于人工智能和机器学习领域,目前较为流行的算法模型有线性回归,逻辑回归,线性判别分析,决策树,学习矢量量化,Bagging和随机森林,深度神经网络等等. 算法模型的常见用途 每一种算法模 ...

  5. ​对标GPT-3、AlphaFold,智源研究院发布超大规模智能模型系统“悟道1.0”

    出品 | AI科技大本营(ID:rgznai100) 3月20日,北京智源人工智能研究院发布我国首个超大规模智能模型系统"悟道1.0"."悟道1.0"由智源研究 ...

  6. 逐飞关于第15届智能车竞赛相关工作

    卓老师您好: 昨天从卓老师微信公众号的推文里得知今年的比赛终于要办了,虽然我已不参加比赛,但依然很开心.一是因为自己的确希望大赛能在困难之中继续前进,这一部分的确是对智能车竞赛的热爱:二是比赛还在的话 ...

  7. 北京超前布局通用人工智能 我国首个超大规模智能模型系统发布

    原标题:北京超前布局通用人工智能 我国首个超大规模智能模型系统发布 北京超前布局通用人工智能发展获重要进展.北京智源人工智能研究院近日举办"智源悟道1.0 AI研究成果发布会暨大规模预训练模 ...

  8. 【调剂】河南理工大学接收调剂研究生,从事智能采矿相关的科研工作

    公众号[计算机与软件考研]每天都会发布最新的计算机考研调剂信息! 点击公众号界面左下角的调剂信息或者公众号回复"调剂"是计算机/软件等专业的所有调剂信息集合,会一直更新的. 本人主 ...

  9. 想从事UE4开发相关工作,C++学到什么程度可以开始学习针对虚幻4的编程开发呢?

    想从事UE4开发相关工作,C++学到什么程度可以开始学习针对虚幻4的编程开发呢? 想从事UE4开发相关工作,C++是一个必须要熟练掌握的语言.在学习C++过程中,需要掌握语法.面向对象编程.数据结构和 ...

最新文章

  1. Apache状态监测集重启
  2. Java 语法规定之外的命名注释规范
  3. 最近流行的12个笑话,好笑又有道理
  4. 归档和解档-Archiver
  5. lightoj 1236 正整数唯一分解定理
  6. 商业智能BI系统对企业有什么好处
  7. 电脑有电流声怎么解决_为什么音箱有电流声?电脑音箱电流声怎么消除
  8. jdbc mysql分层_JDBC和数据库访问层
  9. 《互联网的那些事之时代》第三回:滟滟随波千万里,何处春江无月明
  10. ajax treegrid 选中,easyui treeGrid异步加载子节点示例
  11. 集 8 万员工之力, Google 开放 Bard,我们将它和 ChatGPT 正面 PK 了一下
  12. KindEditor实现WORD粘贴图片自动上传
  13. catia批量转stp文件格式_CATIA,UG,PROE等等格式批量转成stp,step,igs,iges
  14. 斯蒂芬•盖斯 — 《微习惯》
  15. JS CSS 超出字符省略号,获取字符串实际所占长度,显示文字提示tooltip
  16. Android毛玻璃效果实现
  17. android chrome72,Chrome 72正式版发布
  18. 邮件退信RCPT TO command问号
  19. Visual C++ 2013 and Visual C++ Redistributable
  20. activiti 子流程

热门文章

  1. 《数据安全法》今日实施,中国信通院联合百度等企业发起“数据安全推进计划”
  2. python颜色识别原理_电脑控制手机 Python实现颜色识别功能
  3. delphi 如何判断编码格式,解决乱码问题
  4. maven国内镜像配置
  5. redis的持久化存储,RDB与AOF
  6. 20165230 2017-2018-2 《Java程序设计》第9周学习总结
  7. python(1):数据类型/string/list/dict/set等
  8. hadoop3: mkdir: cannot create directory `/usr/local/hadoop/bin/../logs’: Permission denied
  9. Kali 远程登陆SSH
  10. 媒体查询 屏幕超过页面上版心的宽度时 ,(也就是所有内容能显示出来),不让它有滚动条 【解决了因为banner图的原因出现滚动条的问题】...