M6: A Chinese Multimodal Pretrainer
摘要
我们构建了最大数据集的中文多模态预训练模型,包含多个领域的1.9T的图片和292G的文本。我们提出了一种称为M6(Multi-Modality to MultiModality Multitask Mega-transformer)的跨模态预训练方法,以便对单模态和多模态的数据进行统一的预训练。我们将模型的参数扩展到100亿和1000亿,构建了有史以来最大的中文预训练模型。我们将这个模型应用到一系列下游任务,模型性能超过之前的基准。进一步,我们特地设计了一个文本图像的生成任务,表明,经过微调后的M6模型可以生产有高分辨率和丰富细节的高质量图片。
关键词:多模态预训练;多任务;文本到图片生成
1 引言
数据集是从网页来的各种类型的数据,包含:百科全书、问答、论坛、产品描述等。
模型基于transformer构建,设计了多任务进行训练。
特别要指出的是,应用已训练的量化向量生成对抗网络已离散图像编码来表征图像,然而使用预训练M6来学习文本和编码之间的关系。这种学习方法可以桥接两种模态,并实现可控的文本到图像的生成。
总结下来,本研究的贡献包含以下内容:
- 搜集和创建了工业界最大的中文多模态预训练数据,包含300G文本和2T的图片。
- 提出了M6的中文多模态预训练模型,将参数扩大到100亿和1000亿。
- M6用途丰富,超过VQA的基础11.8%、图像理解18.4%、图像-文本匹配10.3%,M6也可以生成高质量图片。
- 经过精心设计的大规模分布式训练任务,M6在训练速度上具有明显的优势,并大大降低了训练成本,从而为更广泛地使用多模型预训练模型提供了可能性。
2 数据集
2.1 现有数据集
中文维基百科是最常用的训练中文语言模型的数据集,包含1.6G的文本(大概4亿的token),覆盖了1亿左右的百科全书实体。另一个常用的数据集是THUCTC,包含74w新闻文章。然而,随着语言模型容量的快速增加,数据集的规模显得捉襟见肘。GPT-3包含1750亿参数,在570GB上训练。针对多模态预训练模型,数据集应该涵盖图片-文本对,而不仅仅是纯文本。
2.2 高质量数据集标准
用于多模态预训练的语料库满足以下特点是比较好的:
1)句子长度正常,语言流畅,不含有无意义的标点符号、随意的字符组合等无意义的字符。
2)图片应该自然逼真,分辨率应该足够高,以人类能够识别为准。
3)文本和图片都不应该包含非法内容,如色情、暴力等。
4)文本和图片应该具有语义关联性。
5)数据集应该覆盖广泛的领域,如体育、政治、科学等。目的是赋予模型足够的世界知识。
2.3 数据集构建
数据集从百科全书、网页爬虫、社区问答、论坛、产品描述等搜集而来,涵盖自然、娱乐、体育、政治、社会生活等广泛领域。
针对数据集清洗,我们设计了复杂的预处理程序,对于文本数据,移除了HTML符号、重复标点符号、仅保留中英文字符和标点符号。删除了小于5个字符长度的标题和小于15个字符长度的内容。此外,还应用内部垃圾邮件检测器筛选某些包含政治问题、色情、脏话等内容,并予以删除。为了保持语言的文本接受度,我们构建了一个语言模型来评估文本的困惑度,高困惑度的句子被丢掉。对于图片数据,分辨率超过5000像素的才会被保留。并利用一系列分类器和启发式规则来过滤含有非法内容的图片。此外,我们还应用已训练好的图片评分器来评估图片质量。对于爬取的图片和文本,我们只考虑图片和它周围的文本作为图片-文本的相关语义对,网页中的其它内容则被丢弃。
3 M6框架
多模态预训练框架既利用了基于transformer的自注意力结构,同时利用了大规模的训练数据。我们尝试赋予模型跨模态理解和生成的能力。
3.1 视觉和语言输入
主流的多模态预训练方法通过目标检测将图像转换为特征序列。然而,目标检测器的性能及其主干的表征能力极大地影响预训练模型在下游任务的最终性能。我们发现有很大比例的图像仅涵盖一部分对象。以电商图像数据为例,我们随机抽取一百万张图像,并测试目标检测的性能。结果表明,90%的图像包含的对象少于5个,且对象之间的重叠度也很高。为了解决上述问题,我们采用了一个简单而有效的方法:将图像分割成块,用训练好的特征提取器(resnet-50等)提取2D特征。然后按照特征的位置排成一个序列。
针对单词序列的处理比较简单,将wordpiece和mask应用到单词序列,并在bert之后整合到嵌入层。
3.2 统一的编码和解码
我们集成了图像表征和单词表征
到跨模态表征序列
中。将特征序列输入到transformer框架中用以提取更高层次的特征。为了区分表征,针对不同的模态,我们加入了相应的片段表征。为了统一跨模态表征学习,我们充分利用自注意力机制的transformer模块。具体来说,框架和bert、GPT类似,由自注意力和逐点FFN构成。在transformer之上,我们加入用以单词预测的输出层。
3.3 预训练方法
结合多任务的设置预训练模型,包括:文本到文本变换,图像到文本变换,多模态到文本的变换。模型可以处理不同模态的信息,且可以做单模态和多模态的理解和生成任务。
文本到文本变换:模型学习文本去噪和语言建模。文本去噪中,按15%的比例mask,采用spanMask的方式。此外增加了语言建模,encoder部分不需要输入,decoder部分可根据之前内容生成文本内容。
图像到文本变换:和图像理解类似,模型输入为视觉信息,学习生成相应的文本描述。增加图像片段特征序列到输入中,将被mask部分置空。模型学习编码片段特征,解码出响应的文本。
多模态到文本变换:基于图像到文本变换的设计,增加mask语义输入,模型可以学习基于视觉信息和带噪语义信息的目标文本生成,这个任务可以使模型利用视觉和语义输入自适应学习下游任务。
3.4 扩展到100亿和1000亿参数
为了充分利用GPU内存,应用混合精度训练和激活检查点节省内存,尽管如此,模型太大,还是不能装在一块GPU中,因此,设计了并行模型,将FFN和Attention heads分割到多个GPU中。
由于计算资源的限制,直接扩展到千亿模型非常困难。受最近研究的启发,融合了混合专家模型(MOE)到M6中。此外,原始MOE需要mesh-TensorFlow和TPU环境。我们设计了结合MOE的M6模型 ,运行在自研的Whale(关于Whale,参考解密万亿参数M6模型预训练背后的分布式框架Whale)分布式训练框架上,并可用GPU并行训练。
和传统的FFN层不同的是,MoE层是多个FFN并行组合,也叫专家并行。由于实现了数据并行和专家并行,模型非常高效。针对一个token x,其在MoE层的计算过程如下:
表示稀疏门控函数,
表示
的前K个最大值的索引。MoE的输出是被选为专家FFN的线性组合。
针对端到端通信耗时较长的问题,我们采取了一系列优化方法,包括:半精度通信。
此外,还对比了top2门控和top1门控,在困惑度方面,两者基本取得相似的模型性能。后者收敛稍微慢一点,top1门控计算更快。全局梯度裁剪会增加端到端的通信成本,因为它要计算所有专家之间的范数,因此我们采用局部梯度裁剪的方法已节省内存。
4 应用
4.1 文本到图像生成
设计两阶段的框架,用以图像生成,离散表征学习和语言模型。
离散表征学习:将图像编码为序列特征,有许多可选方法,包括VQVAE和VQGAN等。
语言模型:构建语言模型用来学习文本生成和序列编码。将词汇序列和编码序列拼接起来,设计自回归语言模型作为训练目标函数。
4.2 视觉问答
4.3 图像理解
三个指标评价图像理解的性能:语法、正确性、丰富性。
4.4 问答
4.5 诗歌生成
4.6 图像-文本匹配
5 相关工作
略
6 结论
我们提出了用于中文预训练的最大数据集M6语料库,包含1.9T图片和292G文本。该数据集覆盖众多领域,包括百科全书、问答、论坛、网络爬虫等。提出了M6的模型,可以处理多模态信息,在单模态和跨模态的理解和生成上都可应用。结合复杂部署,将模型扩展到百亿和千亿的参数规模上,这两个模型都是最大的中文多模态预训练模型。