华人澳洲中文论坛

热图推荐

    AliceMind大范围预训练理论及AIGC在ModelScope中的运用

    [复制链接]

    2023-3-5 09:25:32 26 0

    导读跟着 ChatGPT 的火出圈,AIGC 开始遭到普遍的关注。数据量,硬件本钱,预训练范式等多方要素的开展培养了 ChatGPT 亮眼的效果。本次由阿里达摩院为大家分享文本及多模态生成在过来几年的效果。
    明天的引见会环抱上面四点展开:
    1. AIGC 配景引见
    2. AliceMind 纯文本生成大小模型协同
    3. 多模态一致生成模型 mPLUG
    4. 总结
    分享佳宾|李晨亮 达摩院 初级算法工程师
    编纂整顿|刘一全
    出品社区|DataFun
    01
    AIGC 配景引见


    AIGC 的胜利开始于 OpenAI 提出的 GPT-3。以前没有预训练的生成模型成果和当初有差距,即便用监视学习 + fine-tune 的形式能够在某些 task 失掉不错的成果,然而它的泛化才能对比差,因此过后的 AIGC 并无被大家关注。所以当 OpenAI 提出的 GPT-3 能够按照 Prompt 提醒词或者 instruction 指令去生成代码以及各种各样的文本时,大家才开始更多去关注和探究 AIGC 标的目的。此外,除了文本生成之外,DALL-E 和 DALL-E2 在图片生成方面的停顿也是推进 AIGC 开展的首要要素。


    02
    AliceMind 纯文本生成大小模型协同
    1. AI 文本生成的三个阶段
    本次分享次要关注文本生成,上面回顾一下文本生成开展的进程。
    最先的生成是Encoder-Decoder 架构,没有预训练,只是做一些工作上的 fine-tune 任务,过后成果对比差。跟着 GPT-1 预训练的提出才开始有不错的成果,之后 BART 和 T5 这两个模型提出之后发现,用一个生成模型能够做得多 task,并且这些 task 其实成果均可以对比好。好比 T5 能够把各种不同的 NLP 工作都转化成生成的形式。AliceMind 在 20 年的时分自研了一个PALM(Pre-training an Autoencoding & Autoregressive Language Model)的生成预训练模型,前面会引见。
    第二阶段的开展从大范围 Language Model开始。大家发现 GPT-3 有很强的 few-shot 生成和泛化才能,所以也开始普遍地去做一些大范围的预训练。包罗咱们自研中文 PLUG 模型、M6、以及 Google 提出的PaLM(Pathways Language Model,留意假如疏忽大小写和下面的模型缩写都是 PALM,这俩模型全称纷歧样,不是一回事),这几个都是大范围预训练模型。比拟于 GPT-3,前面的模型更并重于 Prompt,instruct 的生成。咱们的 PLUG 也是基于 Prompt,区分在于它是 Encoder-Ddecoder 架构,这个架构和 Decoder-only 纷歧样之处在于,它会更偏了解类的一些生成工作。Google 的PaLM,走的是推理的线路,更能体现模型的智能。
    第三阶段想要解决的问题是,无监视的大范围预训练模型在指令方面生功效果对比差。由于它是经过无监视训练 Language Model 工作去训练失掉的,所以更多倾向续写的模型。当用户有一些指令输出进来,让模型去做甚么事,模型会按照用户输出的最初一个词做续写,而不是根据指令去回复问题或者回复指令。所以 OpenAI 在 2022 年一月份的时分提出了 Instruct GPT。
    Instruct GPT 经过人工标注的指令和 Label 数据训练,使得模型能够根据指令去生成这个数据,好比我要模型帮我用某种言语写一个算法。论文中写到用了 13K Prompt,在无监视训练失掉的 GPT-3 根底下来做 Supervise 的 fine-tune。这样模型获取了对指令的了解才能。同时它由于通过了少量无监视训练,指令还能够泛化到更多类似的指令。这就是当初 ChatGPT 能在得多场景上都有不错成果的缘故。之后的进一步降级是利用人工标注数据的谜底品质高下,再用 Reinforcement Learning 去学习排序,这样能够晋升模型生成的句子。
    2. AliceMind 文本生成模型的开展
    接上去次要引见 AliceMind 在文本生成大模型上的一些探究。AliceMind 总体是个预训练模型体系,它包孕了得多预训练模型,明天次要引见其中的三个。
    第一个是生成式预训练模型PALM,第二个是咱们自研的超大范围中文预训练的PLUG,以及咱们基于 GPT-3 架构在中文少量无监视数据下来训练的一个中文 GPT-3。以上是纯文本的大模型,还有一个是在图象多模态上的大模型mPLUG,它做的是图文场景、多模态场景的文本生成。


    首先引见纯文本的这几个模型。比较一下后面引见过的大小模型,它们各自合用于文本生成哪些场景。
    小模型更倾向资源无限,同时又有一些数据集,并且要求精度和 RT 对比高的一些上游场景。这也能够用预训练生成小模型,好比 GPT-1,BART 以及 T5,还有咱们的 PALM 模型。这些都是参数范围对比小一些的模型,好比这几个模型的 base、large 范围分别为 1 亿、3 亿参数。
    大模型次要是合用于多生成工作场景。好比我有得多生成工作,但同时我又没无数据,或者只要很大量数据的状况下,我能够用大模型的一些 few-shot 的泛化才能去完成得多才能。好比当初大模型其实有得多通用才能,好比小说续写、诗词生成,对联生成,还有 QA 问答这些。比拟于小模型 fine-tune 之后的成果确定会差一些,然而能够兼容更多场景。


    这里看一下文本生成工作外面几种首要的方式。


    AliceMind 走了一条先做小模型,取得效果再迁徙到大模型,最初再从文本迁徙到多模态这样的路途。上面先从 20 年提出的小模型 PALM 讲起。
    (1)PALM
    过后的生成预训练模型,在预训练工作上都是更偏生成类的,好比 GPT 是 Language Model,把一切的文本去预测下一个词。BART是把输出端去做一些 mask,再 decoder 去做一些复原。
    咱们以为有一类生成类工作,好比文本摘要,有输出序列长,输入序列短的特征,这类场景很依赖 encoder 的了解才能。motivation 是看到 EMNLP 上有一篇 paper ,把 BERT encoder 间接拿过去,再加一个随机 decoder,fine-tune 训练摘要工作,都得能够失掉很好的成果,这阐明了 encoder 的首要性。所以咱们在做 PALM 的时分结合了自编码和自回归的预训练。
    ① 自回归相似于 Language Model 这类去做生成,只不外咱们这里会把一个 document 随机从两头切开,切成两部份,一部份输出到 encoder 外面,让 decoder 去预测后半部份。
    ② 自编码预训练就是在 encoder 侧加一个工作,让模型去晋升模型的了解才能。encoder 工作咱们采取的是 maskLM,相似于 BERT 的,通过验证无效的形式去做 mask,间接在 encoder 去做预测。
    联结自编码自回归的预训练它既有 encoder 的了解才能,同时 decoder 也有很好的生成才能。


    上面来看试验的后果。从右边的表能够看出,把自编码和自回归工作独自去掉之后,模型的成果都会降落一个点。此外还比较了几个生成预训练模型在大部份数据集上都有晋升。


    PALM 2.0 在 1.0 版本上次要是针对中文场景的降级,咱们发现经过多阶段多工作渐进式预训练能够进一步晋升模型成果。采取课程学习(curriculum learning)的思想,从易到难的学习思绪。由于以前的词编码这类词级别的 mask,关于生成有点太简略了。所以咱们这里采取了一个 text infilling,同时也对句子做一些 Shuffle。相似于 BART 的这类形式,只不外它会 mask 更多的词,同时也会把句子打断,这样会使模型生成起来难度更高。至关于从最简略的这类 maskLM 工作到两头第二阶段 text infilling工作。第三阶段是连续 PALM 1.0 的自回归工作。
    咱们比较了模型在预训练过程当中的这几个工作的 Accuracy,从 Accuracy 目标的后果能够看出,这几个工作的确是从易到难的。第一个工作,咱们训练过程当中 Accuracy 能够达到 90% 多。第二阶段 text infilling & Shuffle 工作,能够达到 80% 的后果。第三阶段模型至多可以达到 40% 以上。毕竟是一个凋谢性的生成工作,即便人去写也是对比难的。


    上面看一下多阶段渐进式预训练的试验后果。开始的词级别的 mask 作为 Baseline,在此之上参加 text Infilling 对片断 mask 之后,能够看到对比明显的晋升。第三阶段再参加自回归生成之后,模型除了在 ADGEN 数据之外,都有进一步的晋升。ADGEN 数据集成果降落是一个对比乏味的景象,缘故多是由于预训练的工作,假如和上游工作贴合,就会失掉不错的成果。这时候候假如进一步进行三阶段训练,成果反而会降落。


    PALM 2.0 在几个中文数据集下面的试验成果,base/large 均高于其余的 SOTA 模型。


    PALM 2.0 模型以及预训练的 backbone 都曾经上传到 ModelScope 社区中,能够获得到 modelcard 以及 checkpoint。


    上面引见上游和训练场景的运用。上游场景之前面引见的摘要工作为例,只需求写几行代码调用 Pipeline 便可间接做摘要工作的预测。


    训练场景中,用户只需结构本人的数据集,配置超参就能做训练了,也能够改换其中的模型和 backbone。此外训练过程当中会对罕用的评估目标进行自动评价,最初保留最佳的 checkpoint 模型。之后调用 Pipeline 便可对训练好的模型做 inference。假如没有 GPU 机器,也能够用咱们提供的一些收费时长,使用在线 notebook 体验。
    (2)中文 GPT-3


    下面讲的次要是针对小模型,对预训练的 backbone 做 fine-tune,上面讲两个大模型,中文 GPT 和咱们自研的 PLUG。中文 GPT 连续了英文 GPT Decoder-only 的架构,数据方面用的更多的是中文的无监视语料。由于没有 Instruct GPT 那末多的标注数据,所以模型的泛化才能差一些。在推理上咱们基于 allSpark 做了一些优化,13B 模型生成十二8 个 tokens 只需求 1 秒。斟酌到不同开发者的硬件前提不同,咱们目前凋谢了 6 种不同大小的模型,大家能够按照本人的机器前提选择。


    咱们也提供了在线体验版本供大家测试。诗词生成场景,模型能够预测诗词的下半句。小说续写场景,模型能够按照小说的前半部份续写。代码生成场景,能够按照用户要求的功用以及编程言语生成相应的代码。


    上面展现一个 GPT-3 的训练体验样例。本来的模型不反对诗词生成(生成的后果并非一句五个字),对模型使用 Pipeline 从新训练之后就能生成诗词了。
    (3)PLUG


    PLUG 中文大模型连续的是 PALM 的思绪,结合 NLU 和 NLG 的工作,失掉一个了解和生成同时做的模型。NLU 工作是咱们自研的 StructBERT 模型,在 BERT的根底上引入三分类以及对词级别打乱。NLG 是 PALM 的自编码自回归纳合。训练分为两个阶段,第一阶段是 StructBERT 的思绪,把模型大小晋升。第二阶段连续 PALM 的思绪,用 encoder 做初始化,加之 decoder 之后做生成的训练。这样能够失掉一个 Encoder-Decoder 一致了解生成模型。做了解相干工作,好比分类/预测时,只需求把 encoder 部份拿出来,沿用 BERT 的办法。做生成相干工作时,再使用整个的 Encoder-Decoder 架构。这里也做了一些推理减速的任务,和中文 GPT 是相反的技术,获取了 10x 减速的成果。


    PLUG 模型在 GLUE 榜单上测试,了解和生成工作都取患了很好的成果。


    270 亿参数的 PLUG 模型曾经在 ModelScope 上凋谢,大家能够根据流程请求获得下载链接,而后使用 Pipeline 做部署推理。


    03
    多模态一致生成预训练模型 mPLUG
    上面引见多模态场景的任务,次要是针对输出图+文,输入文字的状况。


    多模态相干次要的工作有两种。一个是 VQA,输出图片和针对图片的问题,模型预测谜底。另外一个是 COCO Caption,输出图片,模型预测图片的形容。
    咱们提出了多模态一致生成的预训练模型 mPLUG,次要解决的是多模态融会时,视觉特点序列太长致使的低效性和信息吞没问题。Vit 构造的问题是,在切 patch 的过程当中,假如切的对比小且图片分辨率高,切上去序列就会很长,序列长会带来训练低效的问题。此外在和文本模态融会的过程当中,假如图片数据太长,会吞没一部份文本的信息。


    mPLUG 构造的底层仍是先分别对文本和图片做编码,之后用比较学习把两个维度的特点拉到同一空间,再传入咱们提出的 skip-connection 网络。以前的 co-attention 或者图文拼接的形式会存在信息吞没问题,咱们的中心点在于只做非对称的 attention,即只将视觉特点 cross 到文本侧。由于训练速度慢次要在视觉,这样能够极大晋升模型训练速度。然而假如只采取这类形式,由于文本序列对比短,会带来视觉信息的丧失。所以咱们在 skip-connection 网络外面,先经过一个多层的非对称的 co-attention 网络,之后把视觉信息拼接进来,而后再过一层的 connected attention。这样既能够包管视觉信息不丧失,同时避免文本信息被视觉信息吞没。
    以上就是图片和文本信息融会的 encoder,之后再加之 decoder 做生成的预训练。这就是咱们总体的架构了。这类架构的劣势在,一方面经过这类模块化多流的 Transformer 构造,能够一致了解和生成。同时它又能够灵敏地拆拔不同模块进行微调。好比做图文检索工作,能够不要 decoder,只把 vision 和 text encoder 拆出来做向量检索,也能够用 ITM 图文婚配 Score。假如是 caption 工作,则不需求 text encoder,只需求 vision encoder 间接 cross 到 decoder 做图片形容的生成。假如做凋谢域的视觉问答,则整个的模块都会用到。


    在 VQA 工作中,只用了 1400 万数据就超过了得多用更少数据的模型。在 caption 工作中,咱们经过模型的 fine-tune 和加 theta 的优化能够达到很好的成果。图文检索中咱们用向量和 ITM 的两个 Score 失掉了很好的成果。
    在训练时间方面,skip-connection 比拟于以前的几种形式会增加一些。非对称 attention 节俭的时间更多,然而成果差一些。成果差的缘故是,假如只是视觉信息 cross 到文本,文本信息序列过短,缺乏以承载全部视觉和文本的表现。


    展现几个 VQA 在凋谢域上的样例。


    mPLUG 模型一样放在 ModelScope上。






    一样也有疾速体验和调用,以及针对用户共性化场景的训练优化。
    04
    总结


    05
    问答环节
    Q1:中文 GPT-3 代码生成是怎么做的,用的甚么数据?
    A1:第一阶段预训练数据的 co妹妹on crawl 中包孕一些代码数据。第二阶段还专门加了一些代码数据,此外做了一些 Prompt 整顿,优化和标注。
    Q2:PLUG 2 万亿是 Dense 的吗?
    A2:不是。开始想尝试 Dense,然而训练难度大,所以实际上是 MOE 的模型。咱们也做一些测试,它在机能下等价于百亿千亿这类级别。
    Q3:中文 GPT-3 开源了吗?
    A3:开源在 ModelScope 社区了。
    Q4:海量数据做预训练,如何减速?
    A4:和 NVIDIA 做了一些协作,使用 Megatron 框架做了一些算子,并行上的优化。
    Q5:训练用了多少资源?
    A5:base/large 级别的模型,用了 8 卡 A100 的机器训练了 4-5 天实现的。1.3B/2.7B,用 32 卡的 A100 训练一两周的时间。更大的模型,好比 13B/30B 要上百卡级别,接近一个月时间训练。
    Q6:一个是 GPT-3,用于了解类上游工作成果欠好?
    A6:Decoder-only 构造,不是双向了解。构建 Prompt 的形式去生成,不如用 encoder 的形式成果好。
    Q7:中文 GPT 和 ChatGPT 的区分?
    A7:中文 GPT 的架构和 GPT3,ChatGPT 差未几。差异次要在训练数据上,ChatGPT 使用了有 Label 的 instruction 数据集,成果的确好一些。
    明天的分享就到这里,谢谢大家。
    |分享佳宾|


    |《数据智能常识地图》下载|
    上下滑动????,查看《数据智能常识地图》预训练模块,残缺版请关注大众号“大话数智”下载


    |DataFun新媒体矩阵|


    |对于DataFun|
    专一于大数据、人工智能技术运用的分享与交流。发动于2017年,在北京、上海、深圳、杭州等城市举行超过100+线下和100+线上沙龙、论坛及峰会,已约请超过2000位专家和学者参预分享。其大众号 DataFunTalk 累计出产原创文章900+,百万+浏览,16万+精准粉丝。

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题28

    帖子35

    积分165

    图文推荐