Blog  []

OFA:走向通用统一模型

2022年可以说是属于通用模型的一年!随着多模态预训练的蓬勃发展,尤其是通用模型,我们看到实现一个具有处理多种模态的多种任务的能力的通用模型的机会。因此我们提出OFA1,即One-For-All。它是一个统一的多模态预训练模型,以统一的模型架构和任务形式兼容多模态和单模态的理解与生成任务。我们使用多模态多任务的方式预训练OFA,使其成为一个接近全能的模型。我们将OFA的模型和代码全部开源到社区,希望能推动通用模型的发展。 论文 GitHub ModelScope 体验 背景 自BERT2成功迁移到多模态领域,多模态预训练蓬勃发展,代表性的工作包括UNITER3、VilBERT4等。这些工作将基于Transformer的BERT2结合到单流或双流的架构中,并将图像处理成物体特征接入Transformer中。而到了2021年,随着ViT5的兴起,越来越多放弃物体特征的工作出现,不再依赖复杂的如Faster-RCNN6的流程,比如最简单的使用patch映射ViLT7、使用CLIP8的CLIP-ViL9,等等。而SimVLM10作为这个领域一个代表工作,利用了T5/BART的特性将理解和生成任务兼容并实现多项最优表现。这些进展都奠定了通用统一模型的发展基础,2022年涌现了一批工作,包括我们的OFA、Unified-IO11、Flamingo12、BeiT-313等。 方法 OFA希望实现的是任务、模态和架构的统一。我们提出统一模型应当具备三大特性,即任务无关、模态无关和任务全面性。任务无关即统一模型应当能接受多种任务形式而无需针对性做模型结构和训练方法的改变,模态无关即不需针对模态做特定模型结构和训练方法修改,任务全面性即模型应当尽可能学习多的任务从而让自己能力更全面更能融会贯通迁移到没学习过的新任务上。因此我们提出了三大统一,即模态、架构和任务的统一。下面我们逐一解释。 统一模态最大的难题是不同模态的离散化表示,不然我们就需要使用diffusion模型14来解决问题。文本表示无需改动,主要的变化在于图像和物体框。得益于近年来vector quantization的快速发展1516以及基于Transformer的文本生成图像模型1718,图像可以用VQ token来进行表示。而针对物体框,则可以采用分桶的方式对连续的坐标值实现离散化。 模型架构上我们选择的是基于Transformer的编码-解码器。它已经在NLP领域取得巨大成功,如T519。而对于图像输入,我们使用ResNet的前3个stage。而对于Transformer,我们加入Normformer20的方法提升模型训练稳定性和最终迁移效果。 多任务学习是OFA的一大特点。我们使用了8个任务做预训练,其中包括5个图文任务、2个视觉任务和1个自然语言任务。图文任务包括视觉定位、定位物体描述、视觉问答、图文匹配和图像描述,视觉任务包括目标检测和图像还原,语言任务则是文本还原。为了让模型识别不同任务,我们为每个任务增加相应的文本提示,说明任务的内容。我们希望模型遇到新的提示能实现零样本学习。 我们使用了公开数据集进行预训练。我们希望研究人员能够利用我们的开源复现相应的结果。 我们一共开源了5个规模的模型,分别是OFA-Tiny (33M),OFA-Medium (93M),OFA-Base (180M),OFA-Large(470M)和OFA-Huge (930M)。具体数据查看下表。 实验 我们在多模态和单模态任务上都做了实验。在视觉-语言理解上,我们在视觉问答和视觉推理上做了实验。在VQA上,OFA的效果和800亿参数的Flamingo以及基于50亿图文数据训练的20亿参数的CoCa效果相当,并且在视觉推理上取得最优成绩。而在视觉-语言生成上,OFA在两个阶段的图像描述评测均取得最优效果。而在视觉定位任务上,base规模的模型就可以超出此前最好的模型,也反映了生成式的方法和多任务训练的有效性,并且随着规模的增加,模型效果也能实现稳定增长。 此外,我们还在文本图像生成任务上做了测试,因为预训练中我们设计了图像还原任务,模型应当具备一定的图像生成能力。可以看到OFA可以达到非常低的FID分数,并且在更大的数据上微调能明显提升它的生成效果。 单模态方面,我们在GLUE上验证OFA的自然语言理解能力,Gigaword上验证自然语言生成能力,以及ImageNet上验证视觉理解能力。可以看到OFA在GLUE上可以取得匹敌RoBERTa和DeBERTa的效果,而此前的多模态模型距离最优的自然语言模型差距都很大。在摘要生成上,OFA也取得最优效果。而视觉分类上,OFA也能取得匹敌BeiT21和MAE22的效果。 另外,我们观察到OFA具备一定的新任务和新领域的迁移能力。如下图所示。 这个例子说明OFA对提示的理解和组合多项技能的能力。我们设计了一个基于定位的视觉问答的任务,相当于视觉问答和定位描述的组合。具体实现方式就是修改任务的提示。包含了问题和定位信息的提示引导模型做出了正确的回答。 另外,OFA迁移到新领域的能力也比较不错。在动画领域数据的定位上,模型能实现较为精准的物体定位。这是因为模型学过这个任务而预训练又见过该领域数据。这也体现了模型的组合能力。 总结 这是我们通用统一模型研究工作的起点。我们认为这个方向很有前景,因为Transformer有着一统天下的趋势,同时它能很好地兼容多种模态和任务。我们相信,多模态领域很快也会迎来属于它的GPT-323! Wang, P., Yang, A., Men, R., Lin, J., Bai, S., Li, Z., Ma, J., Zhou, C., Zhou, J., & Yang, H. (2022). Unifying Architectures, Tasks, and Modalities Through a Simple Sequence-to-Sequence Learning Framework. International Conference on Machine Learning. ↩︎ Devlin, J., Chang, M....

2022年11月14日 · 4 分钟 · 729 字 · Qwen Team

OFASys:一行代码带你搞定多任务学习!

引言 通用模型非常火!我们现在跟随多模态多任务学习的发展似乎看到了实现一个真正的通用模型的机会。我们此前推出的OFA便是朝着这个目标迈向的重要一步。但是,我们在实际实现过程中遇到了非常多的困难。比如说,把多任务训练的模型搭建起来,组织多任务的训练比如给数据打batch和保证训练稳定等等,都非常困难。因此,我们推出一个AI系统OFASys,它主要解决多模态多任务学习的实现问题。简单来说,它主要通过一个叫做“Instruction”的接口来实现。Instruction 即指定了任务描述和输入信息的模板。因此,用户只需要写一行代码构建好自己的 Instruction,就可以构建一个多模态多任务学习的任务。后续的复杂步骤用户无需关心,包括数据处理、模型构建和训练等。总而言之,OFASys帮你摆脱很多复杂的实现细节,让你专注于设计任务和模态组合等。 论文 GitHub 背景 Transformer和预训练技术的蓬勃发展让我们看到了实现通用AI的机会。在自然语言领域,我们见证了GPT-31以及不可思议的ChatGPT及其背后的GPT-3.5系列,它们都具备了极强的问答、对话、以及文字创作能力等。而在多模态领域,我们也看到通用统一模型的快速崛起,包括我们的OFA2、GATO3、Unified-IO4等。实现这样的模型和系统是困难的,难点往往在于实现中。算法工程师最难受的事情往往是如何实现这样一个模型,并且成功把它训起来,接入不同类型的数据和任务并且对它们实现良好的管理。尽管我们针对深度学习有了PyTorch和TensorFlow这样的基建,以及很多诸如Hugging Face Transformers和fairseq这样的帮助实现Transformer的框架,但当前依然没有一个专门针对多模态多任务学习的提供良好抽象和相关工具的系统。 用户接口 介绍系统设计前,我们先看看如何在OFASys中使用1行代码实现一个多任务学习模型。具体而言,你需要写一个合适的 Instruction 。下面是一些例子。 以上例子中,两个句子用“->”分隔,表示输入和期望输出。“<tt>[IMAGE:img]</tt>”表示有一个图像输入和 数据集中的<tt>img</tt>字段关联。Instruction 中的文本则表示这个任务是图像描述。任务输出是文本序列,即对应数据集中的<tt>cap</tt>字段. 另一个例子是自然语言推理的例子,我们以MNLI为例: 和上述例子类似,我们用模板和指示词来构建 Instruction 。不同的是,输入侧包含2个输入。此外,由于我们发现在解码器重复输入有助于效果提升,我们在输出端用一个<tt>no_loss</tt>的信号表示不计算这段序列对应的损失函数。而由于标签是一个封闭集,我们用<tt>closed_set</tt>来表示。 简而言之,使用OFASys可以让一切变得简单。你也许只需要1行代码就可以解决问题! 系统实现 一个良好的系统实现是一个易用接口的基础。系统实现的整体架构如下所示。 OFASys通过解析 Instruction 来将任务定义和任务数据传入任务计划中。每个计划有一个模型的层次结构,其中包括模态特定的前处理和后处理模块以及模态无关的计算引擎。通用模型在这里负责融合多模态输入以及获得输出。由于输入输出都是表示序列,因此通用模型是非常灵活的。通用模型的输出最终传入后处理模块得到最终输出。而诸如损失函数计算以及生成器等都有大量实现方式。 而在多任务学习场景中,有多个上述计划。OFASys共享大部分可训练的参数,这样通用模型能使用尽可能多的数据进行训练。任务调度器在这里负责安排任务优先级以及管理多任务优化,而逻辑调度器则负责安排到多台物理机上。 应用实例: OFA+ 我们训练了一个基于OFA的通用模型OFA+,它首次实现同时处理文本、图像、语音、视频和动作多种模态。具体包括一个通用的OFA+ (Generalist)以及一个基于多模态MoE的升级版本OFA+ (Generalist MoE)。对比对象则为我们此前的OFA,它需要针对每个任务单独微调,我们称之为OFA+ (Specialist)。 从上述结果可以看出,OFA+整体能保留接近95%的OFA+ (Specialist)在各个下游任务的效果,其中涵盖7种模态的23个任务。这也能看出来多任务学习不仅赋予模型实现多任务的基础能力,同时能让它在各项任务上都能达到顶级的表现。 总结 随着通用模型快速发展,特定系统和库的空缺成了一个棘手的问题。OFASys就是为了解决实现多模态多任务学习难的问题而生。我们希望它能推动多模态多任务学习的研究同时帮助实现更加通用的通用模型。 Brown, T.B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., Agarwal, S., Herbert-Voss, A., Krueger, G., Henighan, T.J., Child, R., Ramesh, A....

2022年12月28日 · 2 分钟 · 219 字 · Qwen Team

Chinese CLIP: 中文图文对比学习预训练

CLIP1是多模态表示学习领域一个现象级的模型。它不仅扮演基础模型,并且建立了视觉和语言的桥梁。它还推动了很多其他领域技术的发展,尤其是文本生成图像。然而,我们还需要特定语言的CLIP,尤其在现实应用中,比如跨模态检索。在此之前还没有效果较好的开源中文CLIP。因此我们希望通过这个项目推动中文多模态的发展。 论文 Github ModelScope 体验 背景 在诸如跨模态检索的图文应用中,语言往往扮演重要的角色。假设直接使用CLIP和翻译文本,翻译质量将严重影响下游任务表现。此外,预训练数据的分布也同样重要。我们希望能够有一个模型较好地建模中文世界的数据,那么CLIP的图像学习同样需要适应到中文世界图像的领域中,这些图像在很多维度都有自己的特色,比如它所蕴含的文化价值、展现的社会风貌等。 下面是一个多语言CLIP2检索的例子。不难看出,模型难以理解一些中文概念,甚至只能召回一些西方文化类似的概念的图片。 并且,我们还做了相关实验,对比原始CLIP配合翻译文本和中文CLIP在跨模态检索任务上的表现。原始CLIP的效果远低于中文CLIP,这也一定程度反映语言特定的CLIP模型的必要性。 方法 我们尽可能采用和原始CLIP一致的设定,不去增加模块或者设计复杂化的训练方法。而为了更加高效的训练,包括训练效率和最终迁移效果的提升,我们没有选择从头开始预训练,而是提出一个两阶段预训练的方法。 在第一阶段中,我们将CLIP的双塔用已有的预训练模型进行初始化,分别是CLIP的视觉侧(如ViT-B、ResNet等)以及中文RoBERTa RoBERTA-wwm-Chinese。我们冻结图像塔,通过对比学习让文本塔的输出表示和图像塔的一致。在第二阶段中,我们解冻图像塔,进行对比学习继续训练,从而图像塔也能学习建模中文领域的图像数据分布。 在可复现性方面,我们尽可能采用公开数据集,其中包括LAION-5B3的中文部分、悟空数据集4、来自VG和MSCOCO等的翻译数据。总数据量大约2亿。 我们推出了5个规模的中文CLIP模型,其中包括ResNet-50、ViT-B/16、ViT-L/14、ViT-L/14@336px和ViT-H/14。具体数据详见下表。 实验 我们做了3个跨模态检索的实验,其中包括中文原生的MUGE和英文原生的Flickr30K-CN和COCO-CN。在所有数据集上,中文CLIP都取得了最好的效果,而尤其在MUGE上中文CLIP相比此前模型的优势最为巨大。这也反映中文CLIP在中文原生数据集上能够取得更好的表现。 我们也尝试了中文CLIP的零样本分类能力,并在ELEVATER5上做了测试,具体实现包括翻译标签和提示词。实验结果也反映中文CLIP在英文原生的基准上同样能取得有竞争力的表现。 我们补充了实验说明两阶段训练方法的有效性。对比从头训练,不管是收敛效率还是最终迁移效果上,两阶段的方法都取得更好的效果,并且对比单纯的一阶段联合训练,第二阶段预训练的加入还能进一步提升效果。这也意味着当我们打造一个语言特定的中文CLIP其实不需要从头来,可以在已有模型的基础上站得更高。 Ablation studies. 局限性及未来工作 尽管上文介绍了中文CLIP的强大之处,但我们仍需要认识到当前中文CLIP还没有充分验证其作为视觉基础模型的作用。经验上,它应当在中文原生数据上表现更好。因此,在下一阶段的工作中,我们将研究构造一个针对中文多模态表示学习和视觉表示学习的基准。 欢迎大家访问我们的GitHub存储库和ModelScope模型库,并使用我们的代码和模型。希望能够帮助到你们的研究和应用! Radford, A., Kim, J.W., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., Sastry, G., Askell, A., Mishkin, P., Clark, J., Krueger, G., & Sutskever, I. (2021). Learning Transferable Visual Models From Natural Language Supervision. International Conference on Machine Learning. ↩︎ Carlsson, F., Eisen, P., Rekathati, F., & Sahlgren, M....

2022年12月24日 · 1 分钟 · 203 字 · Qwen Team