整理:马瑞军

校对:裘捷中

智源导读:3月20日,在「智源大规模预训练模型交流论坛」,由智源研究院副院长、清华大学教授唐杰带头,发布了「悟道1.0」四大模块的进展工作,分别包括

  • 悟道·文源——以中文为核心的超大规模预训练语言模型;

  • 悟道·文澜——超大规模多模态预训练模型;

  • 悟道·文溯——超大规模蛋白质序列预测预训练模型;

  • 悟道·文汇——面向认知的超大规模新型预训练模型。

其中,「悟道·文溯」是「超大规模蛋白质序列预测预训练模型」,最终目标是研发出超大参数规模、可以处理超长蛋白质序列的超大规模预训练模型,在基本性能、可解释性和鲁棒性等多个方面达到世界领先水平。目前,「悟道·文溯」已在蛋白质方面完成基于Pfam数据库训练的BERT模型,同时搭建训练软件框架并验证其可扩展性。团队成员来自清华计算机系KEG实验室,清华药学院鲁白实验室和腾讯量子实验室。

清华大学计算机系五年级博士生、青源研究组成员裘捷中在论坛详细介绍了「悟道·文溯」项目中的突破性进展。以下为「悟道·文溯」报告总结:

01

蛋白质预训练模型

预训练,即在大量无标注数据集上训练,在少量有标注数据集上微调。其始于2018年google开发的BERT,发展到如今已经在NLP以及其他诸多领域取得了大量进展。

图1:预训练语言模型家族谱

图 2所示为语言模型的进步图。可以看到在预训练模型出来前,模型的表现相较于人类差距较大,但是预训练模型出现后,模型的表现逐步超越人类,表现出令人惊叹的结果。

图2:预训练模型表现发展

在预训练模型如火如荼的发展时代背景下,一部分学者将其引入蛋白质检测序列任务中。

图3:蛋白质序列特征

如图3所示,蛋白质包含一级结构,二级结构和三级结构。从一级结构上看,蛋白质和语言具有相似的序列特性,这为将语言预训练模型引入蛋白质序列检测提供了有利条件。于是,科学家们直接将Transformer模型,转移到蛋白质序列检测的预训练模型中,发现具有很高的可行性。同时,科学家还发现,在蛋白质二级结构和三级结构预测的下游任务中,例如Contact Prediction等任务中和蛋白质折叠中,Transformer模型依旧有效,这为蛋白质序列检测模型的发展打开了新的大门。

此外,文溯团队的成员还联合清华大学计算机系 KEG 和 PACMAN 实验室一起开发了超大规模分布式预训练框架FastMoE

(github.com/laekov/fastmoe),未来计划将FastMoE和蛋白质预训练模型结合起来。

02

文溯模型发展

在蛋白质序列检测领域中有三大模型,分别是:

1) 由Berkley主导完成的TAPE;

2) 由FAIR主导完成的ESM-1b;

3) 由慕尼黑工大和Google主导的ProTrans。

三者均采用了预训练模型,不同之处在于模型使用的训练数据集、模型的规模以及蛋白质序列个数有所不同,具体信息如图4所示。

图4:蛋白质序列预测模型信息

悟道-文溯在蛋白质预测的规模选择上,选取了与Berkley相同的38M模型规模。在性能方面,将要面世的文溯V1模型在TAPE的下游任务预测实验中表现良好,复现了TAPE的大部分功能,其中在Secondary Structure、Contact Prediction、Remote Homology Detection等子任务中超越了TAPE,实现了新的性能高度,具体信息如图5所示。

图5:文溯对比TAPE

预训练模型的规模,近年来正朝着大规模化方向快速发展。蛋白质预训练也正是如此。

目前蛋白质预训练模型的规模与语言预训练模型在2019年2月规模相当,但是在未来,蛋白质预测也将朝大规模方向发展。在此前景条件下,悟道-文溯团队的成员还联合清华大学计算机系 KEG 和 PACMAN 实验室一起开发了超大规模分布式预训练框架FastMoE(github.com/laekov/fastmoe),未来计划将FastMoE和蛋白质预训练模型结合起来,开发出可以与现有万亿规模语言预训练模型相当的蛋白质预训练模型。

图6:预训练模型规模发展

03

大规模混合专家预训练框架FastMoE

MoE(Mixture of Experts)是在模型计算量不显著增加的前提下训练大规模预训练模型的核心技术,例如Google发布的具有1.6万亿参数的预训练模型Switch Transformer,其核心技术就是MoE结构。

MoE结构是一种由n个专家(expert)组成的专家池技术,每个专家池可以是任意的神经网络,结构示意图如图7所示。

图7:MoE结构

对于每个输入X,由门网络gating network对专家的适用性进行打分,再根据打分结果选择具体选用哪个/些专家来计算,例如图8所示的的例子中,门网络最终选用2号和n-1号专家作为计算网络。

Switch Transformer使用MoE改造了Transformer的FFN模块,在计算量基本不变的情况下,大幅度增加了参数量,但是Google的分布式训练框架需要依赖于Mesh-Tensorflow分布式训练框架和定制的TPU硬件,相当程度上限制了学术界和业界的使用和研究。

为了降低训练万亿规模模型的经济成本,打破Google在大规模预训练平台的垄断,弥补现有平台对于框架和硬件选择具有严重缺陷等问题,开源分布式MoE模型训练系统FastMoE应运而生。为广大GPU用户和PyTorch用户提供了研究平台,使得部分学者可以研究MoE结构和基于MoE结构开发的大规模预训练模型。

FastMoE系统具有以下4个优异的特性:

(1)易用:只需一行代码即可完成MoE改造。FastMoE系统可以作为PyTorch网络中的一个模块,快速插入模型中。代码可以如下所示:

model = ...
from fmoe.megatron import fmoefy
model = fmoefy(model, num_experts=<number of experts per worker>)
train(model, ...)

(2)灵活:支持自定义专家网络、自定义门网络。FastMoE系统的专家网络配置十分灵活,研究者可以根据自己的需求和实际要求对专家网络搭建和改造。

(3)高效:针对常见专家网络进行专门性能优化。FastMoE相对于用朴素PyTorch实现的MoE结构,可以实现47倍的大幅提升。

图8:FastMoE实战表现

(4)分布式支持:提供多种并行模式可供选择。FastMoE可以为用户提供数据并行模式和模型并行两种方式,采用两种策略实现模型的大规模化。

图9:FastMoE 的并行模式

数据并行模式可以将包含少量专家的专家池(Worker)复制多份并行计算,这种特性可以与PyTorch的数据并行模式和分布式数据并行模式无缝契合,方便PyTorch用户开发,但是缺陷在于专家池容量不能太大。

如图9左图所示为数据并行模式情况下的两个MoE结构,该结构中包含两个Worker,每个Worker包含三个专家和一个门网络,且不同Worker上的专家和门网络共享参数。

FastMoE采用模型并行模式时,gate门网络仍然在每个Worker上复制,但是专家在专家池之间被分开放置,通过引入通信机制,FastMoE拥有一个与Worker数量成比例的大型专家库,当算力的数量增加时,专家的数量会线性增加,以此可以实现模型参数的快速叠加达到大规模化。

如图9右图所示为模型并行的6专家MoE的正向传递结构,其中专家1-3位于Worker 1中,专家4-6位于Worker 2中,同时Worker 1和2均包含共享参数的gate门网络。

目前,FastMoE已经深度集成到了业界常用的大规模预训练模型Megatron-LM框架中。相对于原始的GPT版本,在使用64个专家的FastMoE模型并行模式下,使用FastMoE修改后的GPT在相同浮点运算量的情况下,收敛速度更快,具体如图10所示。

图10:FastMoE分布式训练收敛图

此外,由于Megatron-LM中没有提供FastMoE模型并行模式下需要使用的平行策略,FastMoE提供了相应的模块用以代替PyTorch中的DDP模块,具体可以查看fmoe.DistributedGroupedDataParallel文件。

04

未来展望

在未来,悟道-文溯团队将从以下5方面出发,促进文溯模型的快速发展:

(1)发布悟道-文溯V1模型,为广大用户提供蛋白质预训练平台;

(2)在设计训练任务时,更加偏向于有生物学意义的预训练任务;

(3)将模型朝更大规模方向发展,将模型的性能持续提高;

(4)开发基于FastMoE的超大蛋白质预训练模型;

(5)欢迎广大学者,厂商使用文溯模型以及共同参与相关的开发工作。

更多内容请关注后续项目发布


推荐阅读:

悟道 · 文汇详解:少样本学习等近十个数据集取得第一

悟道 · 文澜详解:目前最大的中文多模态通用预训练模型

【关于智源社区】

智源社区隶属于北京智源人工智能研究院,我们致力于创建一个AI领域内行人的交流平台。

在这里你有机会参与全年线上线下百场专题论坛,与顶尖学者零距离接触;也可以与同行探讨领域前沿,碰撞思想火花。如果你更想进入微信群与更多同行人发起实时讨论,或者加入「青源会」结识更多研究伙伴,或者成为智源社区编辑参与更多文字工作,欢迎填写以下表单(扫描二维码)进行申请。

悟道 · 文溯详解:蛋白质序列的大规模预训练相关推荐

  1. 悟道·文澜详解:目前最大的中文多模态通用预训练模型

    近年来,BERT等预训练语言模型在多类自然语言处理任务上取得了显著的性能提升,从而极大地改写了研究范式.随着OpenAI超大规模语言模型GPT-3的发布,预训练语言模型在自然语言理解能力上再次被推至新 ...

  2. 《预训练周刊》第22期:Fastformer:加法注意力就是你所需要的、用于蛋白建模的大规模预训练语言模型...

    No.22 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第22期&l ...

  3. 英集芯ip6809规格书pdf芯片文档详解及典型电路原理图

    英集芯ip6809芯片是一款无线充电发送端控制器SOC芯片,兼容WPC Qi v1.2.4新标准.支持2-3线圈无线充电发射端应用,支持A28线圈.MP-A8线圈,支持客户线圈定制方案,支持5W.苹果 ...

  4. 前端页面预览word_详解html实现在线预览word、excel、pdf等文件的功能(附代码)_WEB前端开发...

    JavaScript判断"字典"为空的方法_WEB前端开发 字典是一种存储键值对的数据结构,Javascript中的Object类内部即实现为一个字典,本文就来为大家介绍一下判断字 ...

  5. DL之AlexNet:AlexNet算法的架构详解、损失函数、网络训练和学习之详细攻略

    DL之AlexNet:AlexNet算法的架构详解.损失函数.网络训练和学习之详细攻略 相关文章 Dataset:数据集集合(CV方向数据集)--常见的计算机视觉图像数据集大集合(建议收藏,持续更新) ...

  6. PyTorch学习(8)-问答系统、文本摘要和大规模预训练语言模型

    问答系统 1. SQuAD数据集 给定一段文字作为context,给定一个问题question,从context中寻找一段连续的文字(text span)作为问题的答案. 网址:https://raj ...

  7. 论文解读丨LayoutLM: 面向文档理解的文本与版面预训练

    摘要:LayoutLM模型利用大规模无标注文档数据集进行文本与版面的联合预训练,在多个下游的文档理解任务上取得了领先的结果. 本文分享自华为云社区<论文解读系列二十五:LayoutLM: 面向文 ...

  8. 手把手系列!大规模预训练语言模型

    最有价值的AI技术之一 预训练语言大模型 在如今的AI圈子里,人们对于AI技术的追求不仅体现在学术水平的领先性上,还越发强调技术是否能落地.是否给能人类生产生活带来实际的价值.可以看到,无论是学术圈和 ...

  9. 在ViT、MLP-Mixer等进行4800多次实验,谷歌发现大规模预训练存在瓶颈

    视学算法报道 机器之心编辑部 大规模预训练模型在各种任务上取得了不错的性能,但是也存在一些限制.来自谷歌的研究者系统地研究了大规模预训练模型在图像识别任务中扩大数据.增加模型大小和训练时间对各种下游任 ...

最新文章

  1. Microsoft Azure 云存储服务概念
  2. 数据不够怎么训练深度学习模型?不妨试试迁移学习 ——重用神经网络的结构2...
  3. Linux基础笔记_01
  4. js 操作 select option
  5. 征战蓝桥 —— 2014年第五届 —— C/C++A组第8题——地宫取宝
  6. C/C++中ASCII与Unicode字符串相互转换
  7. java 文件下载 jsp文件_jsp文件 Java实现文件上传与下载
  8. 或许是单选的飞鸽传书
  9. 杭州SEO大熊:百度分享插件的SEO研究心得
  10. Altium Designer实现原理图到PCB板的转换
  11. 为什么要测款,直通车测款怎样设置
  12. C++源文件的编译流程简介
  13. 关于openssl 的几个key的生成方式
  14. 人工智能( AI )将如何颠覆项目管理?看看这六大关键领域
  15. SSM整合,非常详细的SSM整合
  16. Sql语句查询之内连接与外连接
  17. 红叶倾城一键网页游戏服务端+客户端(无须安装Java)源码
  18. 电商婴儿商品销售数据分析
  19. 初级会议演讲者的建议
  20. texstudio引用文献顺序

热门文章

  1. 全国志愿信息服务器,全国志愿者服务信息系统官网登录,2020全国志愿者服务信息系统官网登录注册入口预约 v1.0-手游汇...
  2. android动态设置错误页面,Android中替换WebView加载网页失败时的页面
  3. mysql多表连接 索引_MySQL多表查询之外键、表连接、子查询、索引
  4. word顶部有一道线_为什么顶角线不会过时?文章内容告诉你
  5. 【c语言】计算三角形面面积
  6. oracle怎么打代码,使用DOS打Oracle代码技巧
  7. 如何取消linux响铃_linux初学者入门:VIM编辑简易指南(常用操作)
  8. 双链表偶数节点求和java_java--删除链表偶数节点
  9. 乐观锁 -业务判断 解决高并发问题
  10. 洛谷P1006 传纸条 (棋盘dp)