ModelScope pretrained model| 学习笔记

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 快速学习 ModelScope pretrained model

开发者学堂课程【模型社区实战课程:ModelScope pretrained model】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1199/detail/18152


ModelScope pretrained model

 

内容介绍:

一、多模态预训练大模型背景&价值

二、通用统一多模态预训练 M6-OFA

三、中文多模态基础模型 Chinese CLIP

四、大规模中文多模态数据集和评测基准

五、总结&近期发布

 

今天给大家分享的是关于多模态预训练相关的一些技术分享,以及这里开发的多模态预训练大模型在 model scope 上的应用。

接下来详细的为大家来介绍今天要分享的内容,首先今天分享主要分为五个部分:

第一部分是多模态预训练大模型相关的背景和价值。阐述这两年会专注于多模态预训练的工作,以及后续需要做大模型这件事的原因。

第二部分是介绍今年重磅推出的 M6-OFA 系列,它是通用统一的多模态预训练大模型。

第三部分会介绍这里近期所制作的一个比较重要的基础模型。这个基础模型可以服务比较多的相关的下游的应用,名字叫做 Chinese CLIP。

第四部分在模型开发以外还包括了一些数据集,以及评测基准的开发,这部分也会做一些介绍。

第五部分做简单的总结。

 

一、多模态预训练大模型背景&价值

首先先给大家介绍一下做多模态预训练大模型的原因,其相关的背景及价值是什么?首先可以看到在 LP 的发展历程中模型发展其实是越来越大的状态。在2014年的时候,也就是大概在 word2vec 的时代,第一次见证像神经网络这种方法,其实可以应用到 LP 这一领域里的,随着深度学习或者是神经网络技术跟 LP 的技术文化产生的一些结合,也就是让 LP 成为了一个相对比较火热的领域。

但是一个比较重要的提出,也就是 transformer 这个架构的提出,在此之前深度学习应用在 LP 的模型当中,主要还是以 SCM 以及 GRU 等等这种 in 的模型为主,这种模型劣势其实非常明显。

随着2017年的时候,Transformer 这样基于 self attention 的这种特殊的架构提出,使大家可以看到,随着模型规模的持续扩大,可以看到模型效果的持续增长,并且它能够很好的进行数据并行和模型并行,把模型规模以及数据量给它扩上去。

那么接下来比较重要的一发展转折点应当是 GPT 和 BERT 技术的提出,GPT 本质上是一个 like model,那么对于做 MP 的同学,like model 本身并不陌生。因为在很久以前就是一直在做统计语言模型。后续也是在做 RNN 的语言模型,但是和 transformer 结合的情况下,GPT 只能算是第一个,并且它能做到比较好的地方是 transformer 和这种两个 model 的技术的结合,能够非常有效的去支持下游的任务,让下游任务达到一个全新的水平,包括下游的分类,以及检索,甚至是生成等等这些任务,都能够有比较显著的提高。而 BERT 的提出,虽然对于 GPT 来说,从模型结构以及训练任务上,没有太大的改动,但是其效果确实是非常的惊人。

让这里开始充分的意识到,基于大规模的数据化去做的预训练,是能够帮助取得非常好的效果的。在下游任务将它提升到一个全新的水平。这是 GPT 和 BERT 以及后续像 excellent 这些工作都产生一些非常大的影响,但是也可以看到除了像这一类模型以外,模型的规模化其实是在持续的扩增的,那么模型规模化到 T5的话,达到了百亿级别,GPT-3甚至达到1750亿的这个让人非常惊讶的级别,可以看到模型随着规模的扩大,尤其是扩大到比较惊人的水准情况下,可以达到一个非常令人意想不到的水平,甚至可以在零样本和少样本的场景当中,发挥出一个非常好的效果。

image.png

也可以看到预训练逐渐成为 AI 发展的主流,如果朝着需要的人工智能的方向,预训练这种大量的学习无监督数据的这种方式,会是一个非常可行的方案。

随着这种方式在自然语言处理的领域大获成功,可以看到它也逐渐在迁移到别的领域,比如视觉领域,尤其是多模态的领域,也就是以图文为主的领域,可以看到一系列的工作的提出,可以看到它本质上很多其实只是把 BERT 迁移到多模态任务上面取得一个非常好的效果。

预训练之所以能起到这么好的效果,本质上还是因为第一个阶段,其能大量的学习无监督的数据,比如通过 legends model 这种方式,通过前面 contact 预测下一个词,让其具备将大量的文本知识储存在参数当中的这样一种能力。

当进行微调的时候,只需要在顶上加上一个相应的分类层,就能够把此前学习过的知识,给它调动起来,然后取得一个比较好的下游的微调分类的效果。那么这种非常简单的范式,其实也是替代掉传统的 train well 的范式,从此开始走向了 between 再加下游 function 的这样一种模式。

image.png 

在多模态预训练的方式,其实也是一种类似的方案,只不过在多模态的研究领域里主要分成两派会比较多,在这里将其称之为生成式预训练,以及是对比学习范式的这种预训练,首先先介绍第一种是生成式的预训练,所谓的生成式预训练这里指的是它的预训练的任务,主要是以生成相应的 token 为主要的目标,比如说把 BERT 迁移到多模态领域,其实还包含了 much language modeling 这样的任务。那么其实本质上它也是一个完形填空,那么包括图像可以去做图像的物体的分类,或者是特征的匹配等。

那么这种将其称为生成式的预训练,这种主要是以 unite 为代表,后续也是有一系列的工作是 follow unite 然后去进行。当然也会有一些为了兼容理解和生成的能力,会将其以不同的方式将其生成能力去进行融合。比如说在去年提出的 M6,其实是把 include 通过不同的 master 方式让其兼容理解和生成的能力。

这个是生成式的预训练,还有另外一派是去年提出的 CLIP 这一类模型,这一类模型其实非常的简单,如果有做比如搜索推荐相关的背景的话,对这一类的模型其实应该会非常的熟悉,这里一般亲切的会称之为双卡模型,它主要的特点是通过非常大规模的弱监督的图文的数据,建立了图像和文本之间的联系,那么这个文本也就可以称为它的一种弱标签,这样将其两者关系给建立起来后,图像的表征能力会变得非常强,它在迁移到一些零样本的分类场景中,能取得非常好的效果。

所以其实类本化也扮演着非常基础模型的角色,这也是今年在做相关的研究,会推出 offer Chinese CLIP 这两个系列的工作的原因,两者是各有其优势。

image.png

所以在这相关方面,其实也做了比较多相应的工作。可以看到大模型现在的发展模式,正在改革着现在整个业界的应用深度学习模型的范式,那么此前其实针对每个特定的任务,都要有特定的模型任务的比较清晰的定义,然后每一个模型可能会有比较复杂的设计,每一个任务都要做相应的模型。但是其实可以看到今天的 AI 的发展趋势,其实是在逐渐的收敛,不管是模型架构在收敛,例如 transformer 以及现在的范式开始转向 between function 的这种范式,可以看到就是其实未来可以有一个通用的大模型,然后它能够同时处理这个多类的输入和多类的任务,从而去取得更好的一个效果,或者在比较小样本的场景取得一个非常好的迁移泛化的能力。

image.png

那么对于业界来说,其实它也是在改变着工业界的发展,因为大模型的生态不仅能够帮助下游的任务去做提效,同时其实能够产生一些新的能力,比如现在看到 GPT-3其实很多时候,它会产生一些此前没有见过的能力,随着参数数据规模扩大化,模型能做的事比此前要多,通过一些 prom 能让模型激发出来,让其去做一些新的事情。

这背后也可以看到其对基础技术的依赖,其实也非常的严重,这里需要有非常好的算力去支持大模型的开发和研究,同时也得有大规模的数据化去支持预训练这样的事情。这里其实可以看到大模型,逐渐在成为 AI 发展的未来这样的重要方向,这也是这两年非常发力去投入到多模态大模型相关的一些研究的原因。

image.png


二、通用统一多模态预训练 M6-OFA

接下来给大家介绍一下这一年多的相关进展,主要首先介绍今年在2022提出的 OFA 的工作,然后这是 M6系列的最新的工作。

1.多模态预训练待解决问题

(1)预训练往往缺少对海量单模态数据的利用

所以这里称为他们的 offer,其实本质上是一个通用统一的多模态域训练模型。那么通用统一其解决的是什么样的问题呢?

首先可以看到这里是传统的预训练的模型,在多模态域训练的领域往往需要收集一些图文对的数据,往往希望图文的数据的质量越高越好,这样多模态的效果才能取得更好的提升。但是事实上真正海量的数据往往来源于单模态的数据,因为单纯的文本以及是单纯的图片其实收集的难度,是远远要小于图文对的收集。

(2)不同任务需要任务特定的模型层设计,不利于多任务训练

另外方面的问题在于不同的任务,往往是需要这个不同的特点的一些模型层类的一些设计和支持,比如做分类和生成的任务都需要对模型去做一些相应的改造,尽管相比于传统的模式,现在的多模态域训练是相对比较简单,但同样这里面的话也包含了很多一些 trip,同时也不好去验证任务和任务之间能不能实现一些相互的一些帮助。

(3)不同模态信息的输入输出需要I/O支持

另外就是传统的多模态域训练输入输出都得有特定的I/O支持,那么没有比较统一的I/O。

(4)通用统一的模型可能实现模态间及任务间互相促进

(5)通用统一的模型能较好的迁移到新任务和新领域数据上

另外是通用统一还有比较大的好处,就是同时学习多种任务能够让企业相互促进的同时,还有可能会轻易发放出一些新的能力,从而到新的任务,领域的数据上去能够取得比较好的效果,那么这就是专注于解决的问题。

2.通用统一模型应当满足的性质

所以在工作当中,其实提出了三个比较重要的性质。如果今天要打造一个通用统一的模型应当满足这三个性质。

(1)任务无关,也就是模型要有一个比较统一的任务表示方式,这样不同的任务,都能够以统一的表示投入到模型当中,让模型去做统一的处理。

(2)模态无关,就是要解决每一个模态都有一个特殊的模态输入的方式。这里可以看到不同的模态过去都得做一个比较复杂的设计,然后才能让不同的模态,同时接入到统一的一个模型当中去。

(3)任务全面,也就是在解决了前面的任务无关与模态无关时,如果能够把足够多的任务的话,给放到统一的模型当中去,足够大的一个任务容量,能够让它组合泛化到一些新的这种任务,以及新的场景当中去。

3.OFA(One-For-ALL)模型

这其实在LP里面已经有比较多的一些突破了,近期可以看到像 fun、T0以及最新的 national extra me two 把1600个 LP 的任务,都放到一个模型去进行训练,也取得了非常好的效果。

所以提出叫做 One-For-ALL 的模型,将其称之为 OFA,那么它的理念就是把多模态的多任务,都给它放到一个模型当中去训,让它同时去学多个任务。这样能够实现刚才所说的目的,这里其实把这个任务的话做了一个展现,可以看到这里上面的任务包括 introduction,也就是根据图片生成文字,以及第二个 zero question answering 就是根据图片提问,然后让模型去回答问题,以及 visual branding 输入文本去把对应的物体的所在的位置的给它找出来等等。

还包括一些下面的这些单模态相关的人物,比如图片的分类,以及图片的生成,还有自然语言的理解,以及自然语言生成等等,不管是单模态还是多模态都把它给融入到统一的 One-For-ALL 模型当中去,那么具体是怎么做的呢?

4.OFA 三大统一

这里的工作其实主要就是做了三个方面的统一,这三个方面的统一称为 IO 统一,模态统一以及任务统一,这都是为了解决刚才所说的那个相应的目标。

(1)第一个是IO的统一,主要解决的是不同的模态,需要有特定的输入方式,将其接入到统一的 transformer 这种架构中来。所以实现了一个统一的IO,让它可以支持不同模态以及不同的任务。

(2)第二个是模态的统一,模态的统一的是让不同的模态能共享一个统一的模型架构,那当前的发展趋势就是 transformer 的这种经典架构其实就可以解决这个问题了,具体而言其实做的是紧扣的 difficult 的架构,同时针对不同的模态也不需要去做相应的一些特殊的设计,让其实现一些接入,或者做一些特殊的处理。

(3)第三个方面是最重要的点,就是把不同的任务都以统一的方式给它表达出来的方法,这样才能够实现多任务的学习,所以做法其实是把任务都给统一成序列到序列的生成的这种形式,不管是分类还是其他等等的一些任务,都用这种形式的话来进行任务的表达。

首先可以看到 IO 的统一所做的事情,IO的统一将其分为三个方面,IO的统一可以看到主要处理,将其列为三个模态的信息,第一个是文本;第二个的话是图像;第三是坐标。

这里可以看到文本的处理,其实是天然和离散化的思想是匹配的。那么它接入到模型当中,其实是不需要做任何模型的改动。所以其实用经典的 Byte-Pair Encoding 方式去做这件事情其实就可以。那么相对比较麻烦的事是在图像上,因为图像是一些连续值,这些像素的这种连续值,如果要跟文本的话给融合在一起,或者说接入到一个基于seven to seven的include difficult 模型当中不是一个很容易的事情,但是这两年可以看到在这个图像生成领域的相关技术方面,其实发展的非常迅速,所以 vector quantization 其实也变得非常流行。此前提出的一些方式也开始流行起来了,其核心思想还是把一张图片转换成离散的 code 形式,所以使用这种现成的方式将图片可以转换为离散型 code 的形式,这样就解决了最难处理的图像问题。

第三个问题其实是在 bounding boxes 的方面,bounding boxes 其实也是一些连续的值,但是可以根据图片的宽和高去给它定一些并出来,然后将图片沿着高和宽去切分成并,这样就能够把这个连续值的这坐标的所在的位置,以离散值给它表示出来。

具体而言,其实用到的这个坐标的表达方式,其实只需要用到左上角以及是右下角的所在的坐标的 XY 的离散的这个值,其实就可以解决相应的坐标表达问题。

image.png

接下来架构层面的统一,因为表达形式是 transformer 是 symphony的形式,所以采用的是基于 transformer 的 encoder 和 decoder 的方案,具体而言在输入到 transformer encoder 当中文本,只需要采用经典的输入就可以,那么图像是使用比如 back home 将其接入进去,那么采用的方案其实也非常简单,直接使用像 reset 这种方式其实就可以接入进去,这里采用 reset 的成本,其实是非常的低的专用参数,这个比例也是非常的小,所以这里的计算成本往往相比于 transforming encoder 来说可以忽略,那么主要的计算成本,都在 transforming encoder 或者 decoder 上,那么随着规模的增加,训练其实会存在一些稳定性上的问题,除了规模的增大以外,还包含多模态信息的处理,所以 transforming encoder 或者 decoder 其实也是对其做了一些改造,主要是 follow no former 的方法去增强了每个 transformer 层的稳定性,那么在不同的地方加入their organization 以及是 heschille 的 motivation 都是对收敛的稳定性以及最终的模型效果都带来比较好的提升,这是架构统一的层面。

image.png

第三个是比较重要的事情,就是指任务层面的统一。任务层面的统一其实最大的难点在于怎么样把不同的任务,统一的表达出形式,那么其实因为解决了前面的 IO 统一,以及是架构统一的问题以后。任务统一更多是怎么去对它进行设计,首先可以看到这上面列出了八个任务,那么上面的蓝色的部分,其实是多模态的任务,然后红色部分,是图像册的任务,以及是黄色是纯文本的任务,在蓝色的多模态任务里,其实有几种类型,包括 berogrounding 以及它的反任务grounding captain,那么这里主要先介绍一下 begrounding,因为Branding 本身是根据文本以及是对应的图片,然后去相应的整除最符合文本描述的相应的坐标,每个任务都会给定一个 instruction,就是一个任务的表达,这样模型可以对不同的任务去做出一些区分,比如说 zero branding,给这个任务的表达叫做 Which region does the text,然后 text 就是具体输入的文本,比如叫many white shirt despite,那这样其实模型就能识别出来今天该做的任务,是定位的任务。

那么刚才提到的 bonding box,其实可以给统一到离散化的表示当中。所以其实像这种 bonding box 的这种 been,其实都会加入到整体的词典当中,所以只需要正常的 sequence 将其输出其实就可以。

那么 cautioning 其实就比较常见了,这里用一个 instruction,比如叫what does the image describe,这样模型就会根据图片,输出相应的文本的表示,对于像 VQA 这种任务来说,其实也可以将其列为 second sequence 这样的形式,这也是比较好办的事情。

像图文匹配其实把它变成去向模型提问,然后观察其两者是否匹配,只要回答是否即可,这个就是多模态方面对任务的一些表达。这里其实单模态的任务,其实也可以将形式给融入其中,就可以把一些经典的单模态的任务加入其中,这其实是根据图片,然后将其物体框画标出,以及它 label 标出,这样 Label 其实无非就是一些词,就把它按顺序给排进 decode 当中就可以让它去学习把这些方面 box 以及它对应的 label 都生成出来。那么像文本的 in feeling 以及图片的 in feeling,其实无非就是完形填空的任务。所以其实只要抠取掉一些文本,以及图像的 patch 的一些信息,然后再将其进行还原,其实就可以完成。

所以其实核心点还是在于将不同的任务的话都统一到一个形式,这样就能够让多任务去进行训练,当然 OFA 现在其实目前只用了八个任务去做训练。后续的工作其实是想在 OFA 的基础上,再更进一步将其融入更多样的任务中去进行训练,甚至不只是包含图文两种模态,这样模型化才能够去学到更多一些知识,然后实现融会贯通。

image.png

5.预训练数据

这里也想看看真正的去学习广泛识别知识的模型能够起到什么样的效果。这里是主要介绍 OFA 模型设计。具体做实践的同学可能会比较关心的细节是 OFA 这个模型化用了哪些预训练的数据,其实做这个工作的初衷是偏学术的工作。所以所用的数据集没有包含私有的数据集,那么包括多模态的数据,以及单模态的数据,其实都是可以在网络上公开下载到的,并且多模态的图文的数据量整体的规模并不是很大,加起来大概是两千万的样子。相比于现在比如 Google 系列的一些工作,动辄上亿规模的数据量,这个数据规模其实相对来说是要小很多的。

image.png

6. 模型规模

那么同时其实除了在数据方面,就是在模型方面,其实做了一些比较细致的多个规模的模型研究,这里相比于此前一些工作,可能只有 base 和 large 规模其实还做了更小的模型,这里包括 tiny 和 medium 的模型,具体的参数其实也都列在这上面。

那么 base 和 large 模型在这里的对标对象其实是像 bird 和 but 这种。Base 和 large这种规模模型它们的参数规模其实是比较接近的,但是 tiny 和 medium 其实可以看到它的参数量的话,就要远小于base 和 large,比如 medium 只有9300万,以及 tiny 是3300万的样子。这种模型一般小规模模型会更加适合落地。这里主要是做小规模模型。后续会根据一些轻量化技术文化,将大模型的能力给其 transfer 到小模型上,然后小模型也能够有接近大模型这样的能力。最后最大的模型,大概是做到10亿的规模。这个模型在六七月份的时候也取得了多项的任务的 SOTA 的表现。

image.png

7.效果:多模态理解

这里其实包括以下一系列的任务,首先就是动态理解的任务,这里主要做的两个数据集,一个是经典的 VQA,第二个是 SNLI 和动态结合的数据集,SNLI -VE,那么在 VQA 的数据集上面在推出的时候,其实是达到了 SOTA 的效果,那么不发 huge 在 test step 和 test standard 都达到82.0,后来像算 Flamingo 以及是 Coca 也是把这个效果给它超出,那么SNLI -VE在这地方也是维持了比较长时间的 SOTA 的水平,那么在数据规模,参数规模上其实可以看到这个参数规模相比于 Coca 以及是 Flamingo,包括数据规模方面其实都是要远小于他们的。这里其实也是用比较小的模型,以及比较小的数据量,但是用多任务的这种方式做比较精细的预训练,能够取得比较好的效果。

image.png

8.效果:图像描述生产

第二个是图像描述生成,在图像描述生成的榜单 MSCOCO 的官方榜单上大概是维持了两个多月的第一名的水平,那么在一阶段和二阶段这个评分当中其实也是比较长时间达到了 SOTA 的效果,近期才被 base-3已经是最新 Google 的170亿参数的大模型化给超过。那么在视觉定位方面做的是 ref coco 和 ref coco+,以及ref coco g 的数据集,这里就相比于此前的像 MDETR,以及 unicorn 的这种方法,其实被子规模就可以取得超出他们的效果,那在多个测试集上面都可以达到比较好的效果,那随着这个规模增大效果还能在进一步的持续增长。这里也是证明就是一个是预训练的有效性,第二个是离散化坐标其实是可以让模型化也能够精确的把 only box 化给它预测出来,这也是证明这种方法的有效性。

9.效果:图像生成产出高质量图片

另外一方面还做了比较有挑战性的任务,任务其实不是 OFA 主要做的任务,而是去 transport 场景去看看其是否同样能够给它做好,因为核心理念是在于模型有一个预训练任务叫做 image in feeling,也就是说抠掉一些 patch,让它去还原这些 patch,还原方式就是生成它对应的 liquid 的 code。所以模型应当是具有一定的图像生成的能力,所以就把它 transfer 到 coco 数据集上面。

在同期的 case 的对比当中,其实可以看到当时是超出了 CLIPSIM 以及 grid 的效果,当时在 coco 数据集上 FID 也达到10.5的水平,超出了此前的一系列的工作。

image.png

这里也希望追求更好的效果,所以在这个基础上进一步的去在更大的数据上去进行,发现其实在一些绘画方面会展现出比较好的效果。可以看到 OFA 生成出来这些图片整体的质量还是比较高的。

image.png

10.多模态模型同样能在单模态任务取得突出效果

另一方面还会去评估 OFA 的能力,其实就是它单模态任务的能力,因为相比于此前的一些模型主要是在图文 pair 的数据上去做预训练。那预训练其实在图文 pair 基础上还加入了大量的单模态的数据,想看此模型在单模态任务上是否也能够取得专一于单模态任务的预训练的 comparable 的这种效果,这里就可以看到在几个数据集上面做一些实验,包括 natural language 的 understanding,以及 natural language 的 generation,包括 image 领域就做了image net classification,在 understanding 上主要做了 blue 的六个的分类的数据集,可以看到 offer 的 huge 的模型,其实基本上是可以跟 Robert 保持一致,甚至是超出它的水平。如果是相比于deberta 其实也不会差太多,这里其实可以看到多模态模型,即使在单模态上面其实也是可以取得一个比较好的效果,至少可以做到 comparable 这样的水平。后面其实也想再去看一下融入了多模态数据的预训练模型是不是可以在单模态上面取得更好的效果,在生成方面在 guitar word 上其实做的会相对更突出一些。guitar word 上面就是可以达到最高的水平。

在 Internet 分类上目前可以做到的水平大概是超出 MOCO BE three 可以跟 BERT 以及 MAE-L 可以去做一个相提并论的水平。

但是整体来说就是在这种纯视觉任务上,应该还有更大的一些提升的空间。后面其实也会把模型化迁移到更多一些视觉的任务,比如分割检测等等,去看模型能不能取得一些比较好的效果。

11.零成本任务&领域迁移

这是 OFA 在单模态领域取得的一些表现,还有一个点是会去考虑 OFA 这样的多任务的模型在零样本的场景中的表现如何,以及说迁移到一些新的领域上是否也能够取得比较好的表现。在这里零样本方面,除了 benchmark 的分数以外,这里举一个例子,同一张图片但针对不同的区域进行提问,模型能不能做好,这个任务在预训练当中其实没有见过,但是模型在预训练里做过几件事情,第一个就是学习根据文本在图片中去找相应的物体的定位,以及根据定位去写 captain这件事情,那么模型还学过 VQA 经典任务,那么如果用的是传统的  prom,那输入的问题应该是 what color is the car,但是如果今天变成新的场景,新的场景就根据对应的物体框,然后针对物体框来进行提问。

这样新的 prom 除了 what color is the car 还加入 in the region,然后把 region 对应这个坐标,以离散化的方式传入到这个模型中。可以看到模型可以根据不同的坐标,以及图片去做出相应的回答。

image.png

12.零成本任务&领域迁移

这里看到其一定的迁移到新任务的能力。另一方面也去观察模型迁移到新领域方面的一些能力。首先可以看到任务,也就是根据文本和图片去找出最相关的物体所在的位置,那么一般这种数据都是在一些真实的场景接着拍照,然后去把相应的一些物体找出来,在一个管理的任务,也就是根据文本和图片去找出最相关的物体所在的位置,那么一般这种数据都是在一些真实的场景,比如街景的一些拍照,然后去把相应的一些物体给它找出来,但是在动画上面其实是没做过这个事情的,但预训练的过程当中的模型是见过相应的图片的,那么两者其实可以进行一些组合和产生一些新的能力,也就是在动画场景能够做相应的定位,这也可以看到给定不同的文本,其就能够把不同的 pokemon 给他圈出来,甚至在海贼王场景当中有很多人在这里边,只要给定相应的描述,也能在动画场景里把最相关的角色给圈出来,这也可以看到这种大规模数据进行预训练的多模态的模型,并且进行这个多任务的能力,其能把不同的能力也是把不同领域的数据进行一些组合,产生一些比较好的迁移的效果。

后面其实还会再持续的去扩增这个数据规模以及任务规模,让它能够产生出更强的迁移和泛化的这种能力。

image.png

13.OFA 持续升级:轻量化调优

除此之外在 OFA 的基础上,其实也是不断的在做持续的升级。那么升级包括几个方面,第一个方面就是轻量化调优的方面,因为 OFA 的模型化,比如像 large 模型,甚至是 huge 模型,其实它的规模化对于很多用户来说是不小的,这么大的规模如果想让其动起来,其实在一些多模态这些数据集上面成本其实是不小的,所以其实是开发了相应的 fortune 的这种方法,核心其实就是把大模型的参数化冻住,让其不要进行调优。

那么这里调优的话,只有在每一层新加入了这种 PT,也就是一些新的带领,只调这一部分的参数,然后让模型去观察它能不能达到比较好的效果。

在规模模型上面,其实是可以取得 fighting 的相应的效果,但是其实只需要 tune 相对只需要大概1%的参数,就可以取得比较好的效果,这种方法还有待进一步的推广和提升,因为这种方法虽然本身它的训练成本其实是比较低的,但是往往可能需要更多的调参的经验,或者是更长的训练时长,才能取得更好的这种效果。

所以其实也是在进一步的去探索,这种轻量化调优能否让其真正的推广起来,让 promptune 可能在未来能够取得替代 fighting 的范式,但 promptune 还有额外的好处,做的实验其实是做对抗攻击的实验,那么面对攻击其实 Prormpt tuning 这个效果下降,是远比其要来的更少,这样也可以看到大模型的参数给它冻住这种额外的好处。

image.png 

14.OFA 持续升级:OFA增加中文版

同时 OFA 的升级包括 OFA 不仅仅在英文的公开数据集上去做,因为OFA 有很多用户都是国内的用户,所以其实也增加中文版。因为去年其实做 M6这个系列,在中文的大规模训练方面,有了非常多的积累,包括数据的积累,以及模型训练的积累。所以把这些经验迁移到 OFA 上面,也是一个比较自然的事情,用比较大规模的数据去对 OFA 进行训练,得到 BASE和 large 的规模和模型。那么在 benchmark 上面,一个是此前推出的牧歌的系列 action 上取得分数上的很好的效果。

第二个是 ref coco 将其翻译为 ref coco- CN 系列,其实可以看到分数上可以取得很大的提升,并且在这个任务上面也观测到相比于这个 random internationalization 的提升也是非常明显的,也就是预训练这件事情,不管是对 captain 来说,还是对 ref coco 这种定位任务来说都是非常的重要的。如果今天只有下游的任务数据,是很难取得非常突出的效果的。

15.OFA Github 开源以及 Demo 建设

目前 OFA 其实已经在多个地方进行开源,首先是在 get up 上进行了开源,在 get up 上面的开源现在已经达到了1100的 star 然后在 hanging face 上也有比较多 demo,大家可以去做体验。然后目前的开源,其实已经推荐到最新推出的 model scope 上,Model scope上其实包括更加简单的模型的调用,以及非常直接的模型的 demo 体验,大家这样可以通过 demo 去感受效果决定使用,然后用非常简单的方式将其调用起来,那么在开源上面,其实做的工作会比较详尽,包括预训练以及是 evaluate 的这些步骤,其实都有比较详细的一个文档去进行提供。所以大家如果 follow 这里的 read me,其实是可以非常简单的将其训练起来。

并且这里也尽可能的可以 relief 一些数据,都可以提供出来帮助大家去做复线的相应的这样的工作。现在其实有很多用户都在用 OFA 的模型,这里其实有接近200个1500,然后都会非常积极进行回复,所以有问题都可以直接进行提出。

这里是刚才所提到的介绍上面开源的情况,在 models go 上面其实只要在 model scope 平台上面搜索 OFA,可以看到 OFA 的多个模型都可以直接给搜索出来。

16.Model Scope 的 Demo 展示(图像描述)

那么如果直接点击进去可以看到它上面会有对应的 demo,以及模型的使用教程,那 model scope 的使用相比开源代码会来的更加简单,开源代码更多是帮助用户去做的学术工作的完整的复现,那 Moscow 是想让大家更好的去使用 OFA,只需要用四到五行的代码,就可以把 OFA 的结果产出出来。demo 是一个更加直接的体验,可以看到模型对于图片的生成其实是非常的精准的。现在也有很多用户直接调用服务去做一些相应的业务支持。

17.Model Scope 的 Demo 展示(VQA)

VQA方面不管是虚拟场景还是一些真实场景,其实都可以做相应的这样的回答。现在其实也是做开放式的 VQA,这样模型能够在开放域对问题进行相应的回答。

image.png

18.Model Scope 的 Demo 展示(基于文本的物体监测)

刚才所提到的物体检测,其实可以看到需要按照在线 demo 教程就可以将不管是动画以及是真实的场景,然后把对应的文本的描述所描述的物体给它找出来。这里的把相关的一些链接,包括 paper、code、ModelScope、Demo、Colab、checkpoint等等可以直接下载这个链接都在这里做相应的提供。

Paper:http:/axri.org/abs/2202.03052

Code:https://github.com/0OFA-Sys/OFA

ModelScope:https://www.modelscope.cn/models

Demo:https://huggingface.co/ofa-sys

Colab:https://github.com/OFA-Sys/OFA/blob/main/colab.md

Checkpoints:https://github.com/QFA-Sys/OFA/blob/main/checkpoints.md

三、通中文多模态基础模型 Chinese CLIP

接下来介绍的是近期推出的中文 CLIP 的系列,刚才其实提到的就是现在多模态预训练的话,其实分为两支,一种是生成式预训练,第二种是对比学习的方式。对比学习的方式主要能够获得非常强的 in-batch,在很多业务应用里边,其实往往是 prefer 这样更加简单易用的应用方式,并且可以扩展到比如说检索,或者零样本的场景当中去。

1.图文对比学习预训练

图文对比的预训练思想非常简单,核心就是有双塔的模型,每个塔就是一个back been,对应处理相应模态的信息比如图片文本,学习的方案其实就是根据样本更近,sampling 更远的思想去做 in batch 的 negative family,这样可以在 in batch 里做 constructive learning 的这种方式,从而就能够学出图像和文本之间概念的对齐。所以这种方式,因为它非常简单,并且通过大规模数据取得非常好的效果,现在其实是得到了很多研究人员的 prefer,这个其实在很多领域也是被迁移给应用起来,现在也是非常 popular 的模型。

image.png

2.预训练数据

在中文领域方面,其实在对比学习的方向发展的工作不是太多,并且相应的这些工作可能会存在一些变化,就是不是非常纯粹的对比学习的模型。在顶上可能加了一些 introduction 的模块等等,或者加了一些更加复杂的对齐方式,而这样其实会给用户带来一些 concern,这样就不太确定这个东西是否真的符合使用,并且大家使用的经验会相对较少。所以其实会想做更加纯粹的 LAION,并且是基于中文数据去进行开发的,因为在这里看来就是图文的数据,除了语言的不同以外,不同语言领域的图片数据也有很大的差异。

那么由于各方面因素,比如文化等等,所以图片其实是具有一定的中文特色,采用数据其实没有使用非常复杂的内部一些数据,本质的考虑其实也是,首先先出让大家能够 follow 上的,可以复现的这样的东西,所以用的只是 LAION-5B 的中文部分,以及华为的悟空数据集,其实是一些经典的英文数据集做的翻译等等。

image.png

3.两阶段预训练

这里是预训练数据的部分,为了让训练的这个效率更高,或者取得一个更好的效果,相比 CLIP 多了一个两阶段的训练,这个其实也是有一个非常成功的经验,叫做 long image training 的方式。

第一个阶段,其实是想让文本和图片先实现一个对齐,但事实上原先的 image code 其实已经觉得非常好,所以这个时候这里可以先不动它,先让文本对齐到图像的空间,接下来再让其适应到新的数据领域上面,再将它解锁。

让两个塔都参与到训练当中,这种两阶段的方式可以取得比较好的效果。同时其实也是对于这样的 tower 模型做了不同规模的开发。

image.png

4.模型规模

目前相应的轻量化技术文化,其实也是 on the way,现在有 base large 规模,以及 large 规模化会用更大的分辨率去做。之后还会再持续的推出 huge 的规模,现在就是内部,外部其实已经有很多用户在把 CLIP 给它实际的用起来,也可以看到在很多场景化实现比较好的帮助,因为它确实非常简单的将数据进行对齐,然后图像和文本的空间化进行对齐。

5.实验结果(中文电商检索)

在多个数据集上都取得非常突出的效果。首先在牧歌的检索数据集上面可以看到,它相比于悟空,包括阿兔迪兔,阿兔迪兔是360最新推出的图文的多模态域训练模型,在对比学习的基础上,还有模块相比之下在优上的场景,这种电商领域的检索可以取得更好的效果。而这里其实没有额外加入比较擅长的电商领域的数据集。

6.实验结果(通用检索-翻译数据集)

在通用的检索领域,它主要是来自于翻译数据集,那其 domain 会更加接近英文世界的图片,所以可以看到随着规模增大,然后包括分辨率的这个提升,其实它的提升会非常明显,并且都能够达到最优的效果。目前主要是在检索上去做一些验证。后面其实也想让大家去验证,说 Chinese CLIP 是否在更多场景能够取得更好的效果。所以这里也会做更多的实验,比如一些零样本分类的实验,甚至是迁移到更加复杂的场景,比如分割检测,甚至是视频的检索当中去看看它是不是取得更好的效果。

7.在 Model Scope 上使用

那在 Model Scope 上的使用方式非常的简单,大概就是七八行代码的规模。要做的事情就是将图片以及文本,通过 pipelines 得到相应的表征。接下来计算 probability 就能够将其概率预测出来,可以做一些比如零样本分类这样的事情。如果仅仅是取表征其实只需要通过 pipelines forward 就可以拿到相应模态的表征。所以 model scope 上使用其实不用去 take care 一些模型和细节,甚至不用改动代码,只需要把接口给它调用起来其实就可以完成任务。这是做中文 CLIP 的部分。

image.png

四、大规模中文多模态数据集和评测基准

最后其实除了做模型、算法本身以外,也想让中文多模态的领域有更好的评测方式。所以在今年年初的时候这里也推出了牧歌的数据集,现在也有很多大厂,以及大学同学都在使用数据集上去做评测。

1.数据集建设

这个数据集的想法非常简单,就是把一些多模态的任务的这种数据,利用本身优势去构建出比较大规模的数据集,包括多模态理解和多模态生成,包括图文检索等等,现在其实有很多队伍去参赛。包括快手,美团等等,以及北大,浙大等学校都参与其中。

1月份正式发布MUGE数据集和榜单,是当前中文多模态领域最大的任务数据集和榜单(https://tianchi.aliyun.com/muge )

任务覆盖面广,包括图文描述、基于文本的图像生成、跨模态检索在内的3个多模态理解和生成任务,数据集包含超过40万图文对数据。

目前有来自各高校和企业的80多支队伍参赛,包括快手、美团、腾讯、华为诺亚实验室、北大、浙大、北航等。

image.png

2.数据集内容

那它的数据集其实就是刚才所说的那三个任务,跟刚才所做的一些任务形式也比较类似,这里就不再赘述。

目前覆盖图像描述、图像生成和图像检索三大任务

图像描述:根据-张图像生成相应的文字描述,要求生成的描述须如实反映图中的物体以及关键细节。

图像生成:根据一段文本描述,生成符合相应描述的图像

图像检索:从给定的图片中检索出与搜索query相匹配的图片

image.png

3.赛事进展

这里除了很多企业会去验证算法,在榜上去进行打榜行为以外,像这个公开的学术工作,包括有悟空以及阿兔提兔,其实都在牧歌上去做评测,这也是刚才对比实验里提到事情,所以可以看到牧歌数据集也是逐渐的变得更加的 popular 起来,也欢迎大家在牧歌的数据集上面去做评测,去验证相应的动态模型的效果。

目前有超80只队伍在榜单上提交成绩

企业单位包括快手、华为、腾讯、字节、美团等

高校单位包括北大、清华、北航、北邮等

近期华为及360先后发布大规模数据集和预训练模型,并在MUGE提交评测,发表的论文上引用了在MUGE.上的实验结果。

image.png


五、总结&近期发布

最后做一个简单的总结来结束今天的分享。

首先是今天介绍的团队主要的两项工作,第一个是今年发表在 SM2022的通用统一的多模态预训练模型 OFA,主要的核心思想还是将多模态多任务都统一到一个形式去做多任务训练,并且能够取得一个很好的表现。在此的基础上也做了很多后续的工作,包括推出轻量化的模型,轻量化的调优的方法,以及是中文版本的 OFA 等等。所以大家其实可以根据自己的需要在model scope上拿到模型,然后去进行 influence。

然后另外是中文的动态基础的模型,方案采用最简单的方案核心思想,用最简单的方式,合适的数据,合适的训练方法是否能拿到很好的对比、学习的效果,并且 CLIP 的用户经验是非常丰富的。所以是 CLIP 能怎么用,那 Chinese CLIP 也应当能怎么用。现在其实在中文领域的解锁的数据技术上取得比较突出的效果。所以也欢迎大家去使用 Chinese CLIP 去观察它在其他领域的效果能够达到什么样的水平。当然有什么问题也非常欢迎大家去积极的反馈,然后这里可以去做一些相应的优化。目前这些模型也都是在 model scope 上发布,目前有 demo 以及 inference 的服务,后续很快也会把服务文化支持起来。这是今天在技术上的工作,当然除此之外还有比如数据集方面以及 benchmark 的方面,也是在帮助大家去评测这些模型。后续还会做更多的事情,就比如 OFA 将利用通用统一的特性扩展到更多的项目任务,所以会做一些更加精品的 factor 的一些模型供大家去使用,比如 OCR 视频描述、生成等等。

还有是大家可能会觉得这些这么强的模型规模都非常大,原先的小规模模型化的效果损失还比较多。所以也会配合团队的轻量化技术,让这些模型在规模缩小的同时,不产生太大规模的效果损失。同时也会将这些模型化应用到更广泛的领域,本质上还是让这些模型去接受更大的挑战,这也是在变相的推动去做更好的工作。真正的去把通用统一的模型化建设起来。

●通用统-模型0FA将多模态多任务统到一个形式,实现多任务预训练,并在多个数据集上取得了SOTA表现,并在后续推出轻量化模型、轻量化调优方法以及中文版0FA

●中文多模态基础模型Chinese CLIP采用最简模型方案,单纯依靠对比学习和大规模图文数据即去的中文领域SOTA表现

●目前OFA和Chinese CLIP均已在ModelScope上发布,提供Demo以及inference服务

●同时我们还提供了中文多模态大规模下游数据集及benchmark,供研究人员和开发人员评测多模态模型

●OFA将利用其通用统一-的特性扩 展至更多的下游任务,如OCR、 视频描述生成等

●中文CLIP将持续升级,配合蒸馏和量化技术推出小规模但效果微损的轻量化CLIP

●中文CLIP也将持续扩展到更多领域,如视频等,并将其通用的表征能力应用到更广泛的场景以及小样本学习中

以上是分享的全部内容。

相关文章
|
机器学习/深度学习 自然语言处理 达摩院
Modelscope 工程介绍及实战演示| 学习笔记
快速学习 Modelscope 工程介绍及实战演示
2045 0
Modelscope 工程介绍及实战演示| 学习笔记
|
机器学习/深度学习 人工智能 达摩院
ModelScope 社区介绍和操作入门| 学习笔记
快速学习 ModelScope 社区介绍和操作入门
1193 0
ModelScope 社区介绍和操作入门| 学习笔记
|
人工智能 开发者
ModelScope pretrained model |学习笔记
快速学习ModelScope pretrained model
ModelScope pretrained model |学习笔记
|
人工智能 开发者
ModelScope pretrained model | 学习笔记
快速学习ModelScope pretrained model
137 0
ModelScope pretrained model  | 学习笔记
|
人工智能 开发者
ModelScope pretrained model
快速学习 ModelScope pretrained model |学习笔记
209 0
ModelScope pretrained model
|
人工智能 开发者
ModelScope pretrained model
快速学习 ModelScope pretrained model.
99 0
|
2月前
|
API 语音技术
ModelScope-FunASR**有支持热词又支持时间戳的模型**。
【2月更文挑战第30天】ModelScope-FunASR**有支持热词又支持时间戳的模型**。
28 2
|
2月前
|
人工智能 API 决策智能
Modelscope结合α-UMi:基于Modelscope的多模型协作Agent
基于单个开源小模型的工具调用Agent,由于模型容量和预训练能力获取的限制,无法在推理和规划、工具调用、回复生成等任务上同时获得比肩大模型等性能。
|
3月前
|
文字识别 并行计算 语音技术
ModelScope问题之下载模型文件报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
228 3
|
3月前
|
数据采集 自然语言处理 搜索推荐
ModelScope问题之模型encoder配置报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
80 0