mPLUG-達(dá)摩院開源多模態(tài)對話大模型技術(shù)與應(yīng)用解析
純文本大模型方興未艾,多模態(tài)領(lǐng)域也開始涌現(xiàn)出多模態(tài)對話大模型工作,地表最強(qiáng)的 GPT-4 具備讀圖的多模態(tài)能力,但是遲遲未向公眾開放體驗(yàn),于是乎研究社區(qū)開始在這個(gè)方向上發(fā)力研究并開源。MiniGPT-4 和 LLaVA 問世不久,阿里達(dá)摩院便推出mPLUG-Owl ,一個(gè)基于模塊化實(shí)現(xiàn)的多模態(tài)對話大模型。mPLUG-Owl 是阿里巴巴達(dá)摩院 mPLUG 系列的最新工作,延續(xù)了 mPLUG 系列的模塊化訓(xùn)練思想,把 LLM 升級(jí)為一個(gè)多模態(tài)對話大模型。在 mPLUG 系列工作中,之前的 E2E-VLP 、mPLUG 、mPLUG-2 分別被 ACL2021 、EMNLP2022、ICML2023 錄用,其中 mPLUG 工作在 VQA 榜單首超人類的成績。本文將分享mPLUG的工作,即多模態(tài)對話大模型技術(shù)與應(yīng)用解析。
https://github.com/X-PLUG/mPLUG-Owl。
一、多模態(tài)大模型技術(shù)發(fā)展歷程
首先介紹一下多模態(tài)大模型技術(shù)的發(fā)展歷程。ChatGPT4展現(xiàn)了非常強(qiáng)的多模態(tài)能力。在今年之前多模態(tài)的研究熱點(diǎn)主要圍繞在多模態(tài)預(yù)訓(xùn)練。
多模態(tài)預(yù)訓(xùn)練大概開始于18年前后,是多模態(tài)領(lǐng)域最重要的研究方向之一,并且在實(shí)際業(yè)務(wù)中有著非常廣的應(yīng)用場景。多模態(tài)預(yù)訓(xùn)練最經(jīng)典的四個(gè)任務(wù),比如VQA視覺問答,上傳一張圖片以及一個(gè)問題,就可以讓機(jī)器回答出相關(guān)答案;ImageCaption,給一張圖片,可以生成answer;還有跨模態(tài)檢索,以及Visual Grounding。
剛開始的18,19年是基于檢測特征的兩階段方法,包括UNITER,LXMERT等經(jīng)典方法。2021年,進(jìn)入了端到端的方法,包括CLIP、ViLT等。2022年開始嘗試大一統(tǒng)的方法,通過一個(gè)統(tǒng)一的模型解決圖文、視頻文本這種單模態(tài)的相關(guān)任務(wù),以及Scaling up增加模型size以及預(yù)訓(xùn)練的數(shù)據(jù)量。最近幾個(gè)月最主要的工作就是多模態(tài)對話大模型。因?yàn)镚PT4并沒有公開其模型和demo,所以最近有很多類GPT4的工作,包括miniGPT4以及mPLUG-Owl的工作。
在多模態(tài)預(yù)訓(xùn)練領(lǐng)域最重要的榜單就是VQA Leaderboard。mPLUG在2021年VQA Challenge排名第一,以81.26的成績首次超越了人類。現(xiàn)在最高的效果已經(jīng)達(dá)到了86.26,并且是一個(gè)端到端的模型。這些都向我們展示了多模態(tài)預(yù)訓(xùn)練發(fā)展的迅速。無論是從預(yù)訓(xùn)練的角度還得對話的角度,都是多模態(tài)研究最重要的方向。
下面介紹一下多模態(tài)預(yù)訓(xùn)練技術(shù)的發(fā)展歷程。
在18,19年,多模態(tài)預(yù)訓(xùn)練開始成為最重要的一個(gè)研究方向的時(shí)候,大家主要是基于目標(biāo)檢測的視覺特征抽取,做單/雙流的圖文特征融合,其中代表性工作包括單流UNITER,雙流LXMERT。
進(jìn)入2020年,大家開始嘗試端到端的方法,因?yàn)橹暗膬呻A段方法存在效率不高的問題,以及領(lǐng)域遷移的問題。其中代表性工作基于Resnet的Pixel-BERT、E2E-VLP,以及Transformer的VILT。
2021年,開始了數(shù)據(jù)以及模型規(guī)模的Scaling-up,其中代表性的工作包括ALBEF、SimVLM、mPLUG。
2022之后,大家開始基于大一統(tǒng)的方法,可以做單/多模態(tài),其中代表性工作包括Coca,F(xiàn)lamingo以及mPLUG-2。
今年ChatGPT大火,我們通過GPT4的一些case可以看到,它有著非常強(qiáng)的視覺內(nèi)容細(xì)粒度理解與推理能力,這已經(jīng)超越了很多之前的方法。比如上圖中左側(cè)的這個(gè)例子,它已經(jīng)能識(shí)別出插口是VGA的,以及手機(jī)是iPhone的,并且能夠給出比較詳細(xì)的結(jié)果。右側(cè)圖的這個(gè)case是對笑話的理解能力,也是非常細(xì)粒度的。
GPT4還展示了非常強(qiáng)的視覺內(nèi)容富文本圖片表格理解與推理能力。
這非常符合自動(dòng)化辦公的要求,documentAI 之前都是用一個(gè)非常復(fù)雜的系統(tǒng)來做的,既需要做OCR,還需要理解圖片布局,才能做summary,其中的步驟是非常復(fù)雜的。GPT4能用一個(gè)端到端的方法非常詳細(xì)地理解表格中的內(nèi)容,并且具有非常強(qiáng)的文本生成能力。
上圖左側(cè)是一個(gè)數(shù)學(xué)公式,GPT4能夠理解其中的內(nèi)容,并給出數(shù)學(xué)推導(dǎo)。右側(cè)是一篇論文,GPT4能夠理解得非常詳細(xì)。驚喜點(diǎn)在于這里的文本是比較長的,并且里面既有圖片又有表格,格式復(fù)雜,而GPT4能夠理解這篇論文講的是什么,要解決的是什么,并給出非常好的summary。這些都展示了GPT4非常強(qiáng)大的富文本圖片理解能力和表格理解能力。
但GPT4并沒有開源demo,現(xiàn)有的demo還是純文本模型,所以從三四月份開始相繼發(fā)布了很多類GPT4的模型。
多模態(tài)對話大模型主要分成兩類,第一類基于系統(tǒng),將ChatGPT作為一個(gè)中樞,將視覺信息轉(zhuǎn)換成文本信息,通過ChatGPT進(jìn)行信息的整理與回復(fù)。其中代表性工作有Visual ChatGPT、MM-REACT以及HuggingGPT。
第二類模型是端到端的,這種更類似ChatGPT。這類工作主要基于一個(gè)非常強(qiáng)的文本大模型,通過一個(gè)視覺backbone來做文本的對齊。這種類GPT4的工作希望能夠通過一個(gè)模型同時(shí)擁有多模態(tài)與文本的能力。代表性工作有MiniGPT-4、LLAVA、Kosmos,以及達(dá)摩院的mPLUG-Owl。
二、多模態(tài)對話大模型mPLUG技術(shù)與應(yīng)用解析
mPLUG是一個(gè)模塊化的多模態(tài)模型,圖文的mPLUG以及大一統(tǒng)的mPLUG-2這兩個(gè)工作分別在EMNLP2022和ICML2023發(fā)表。mPLUG系列多模態(tài)預(yù)訓(xùn)練工作,借鑒了人腦的模塊化思想,針對不同模態(tài)input,不同模態(tài)output,因?yàn)椴煌B(tài)特有屬性針對不同的功能設(shè)計(jì)不同的模塊,進(jìn)行層次化的預(yù)訓(xùn)練,這樣可以輕量化,可拆拔的靈活應(yīng)用到各種Zero/Few-Shot、Continue Pretrain、下游Finetuning,以及多模態(tài)表征等層次化應(yīng)用場景。所以mPLUG系列工作的主要思想就是層次模塊化、輕量化,這樣我們可以用一個(gè)比較統(tǒng)一的模型應(yīng)用到各種復(fù)雜的場景。
上圖左側(cè)是mPLUG-2的一個(gè)工作,我們針對不同的模態(tài)拆分成不同的模塊來做特定的任務(wù),比如Video captioning需要做Video-Encoder和Text-Encoder,Universal Layers用來做對齊,VL Fusion用來做模態(tài)融合然后輸入到Video-Decoder輸出結(jié)果。右側(cè)給出了現(xiàn)有的大一統(tǒng)模型,比如BEiT-3、Coca、Flamingo這些都很難在CV和NLP任務(wù)取得SOTA效果。我們分析其原因都是因?yàn)闆]有這種模塊化、輕量化的概念,所以很難用一個(gè)大一統(tǒng)的模型來做各種模態(tài)的任務(wù),并且不同模態(tài)之間沒有做好協(xié)同,不同模態(tài)之間的差距還是很大的。所以我們就提出了mPLUG模塊化多模態(tài)模型。
右下角是mPLUG給出的一個(gè)table,對于不同的單模態(tài)或多模態(tài)任務(wù)如何組合不同的module。這就是我們之前做的兩個(gè)工作,一個(gè)是圖文mPLUG,一個(gè)是大一統(tǒng)模型mPLUG-2。我們在30+的任務(wù)上取得了SOTA。這個(gè)工作也發(fā)表在了ICML上。如果大家感興趣,可以去看一下具體的文章。
接下來將重點(diǎn)介紹多模態(tài)對話大模型mPLUG-Owl的工作。這個(gè)工作我們也在github上進(jìn)行了開源。最近我們也在第三方上海人工智能實(shí)驗(yàn)室OpenGVLab組織的人工標(biāo)注評測多模態(tài)LLM榜單排名第一!與其對比的是前面提到的一些比較經(jīng)典的模型,比如LLaVA,MiniGPT4,Otter等等。
mPLUG-Owl有非常多的應(yīng)用場景,比如下圖的旅游指南和創(chuàng)意文案。
比如給出一個(gè)富士山的圖片,讓模型給出一個(gè)兩天的行程計(jì)劃。mPLUG-Owl可以給出非常詳細(xì)的旅游指南。右側(cè)的例子是創(chuàng)意文案,給出一張圖片讓模型寫一首詩,mPLUG-Owl可以給出比較優(yōu)美的一首詩。
應(yīng)用場景還包括使用指南和展覽向?qū)А?/span>
比如給出一個(gè)錘子,問模型該如何使用。我們還對說明書,以及非常長的document進(jìn)行了測試,mPLUG-Owl都可以給出非常詳細(xì)的描述。右側(cè)這種展覽向?qū)?,給模型一個(gè)圖片,模型可以為我們展示非常詳細(xì)信息,比如圖片的源頭,以及一些發(fā)散性的創(chuàng)作。
下面具體介紹一下mPLUG-Owl的工作。
mPLUG-Owl是模塊化的結(jié)構(gòu), Visual Encoder我們拿了一個(gè)預(yù)訓(xùn)練好的VIT。文本的大模型包括LLaMA,GPT等。我們也上線了中文的多語言模型。
我們拿兩種模塊化的單模態(tài)的模型加入Visual Abstractor的model,因?yàn)樵诙嗄B(tài)里面端到端的方法存在一個(gè)問題,視覺的長度比較長,所以我們需要做降序列的操作,將序列長度降下來,就很容易擬合到純文本的LLaMA、GPT這種結(jié)構(gòu)里面。
我們采用了兩階段的方法,第一階段進(jìn)行預(yù)訓(xùn)練,用海量的圖文pair,主要是為了學(xué)習(xí)視覺的對象,把文本和視覺對應(yīng)起來,比如人物、地點(diǎn)以及概念,通過預(yù)訓(xùn)練將它們對齊。所以在預(yù)訓(xùn)練階段,將視覺的Encoder、 abstract以及summarize這些模塊放開,文本模塊freeze住。讓視覺特征和文本特征更好的對齊,從而更好地學(xué)習(xí)視覺的一些概念。第二階段是為了開發(fā)視覺的一些能力,所以我們把視覺的abstract和Encoder板塊freeze住,文本的部分打開,加輕量化的LoRA。
我們也與現(xiàn)有方法進(jìn)行了對比,像MiniGPT4、Kosmos、LLaVA,大家的工作都是比較類似的,區(qū)別就在于如何做預(yù)訓(xùn)練。與其它方法相比,我們的特點(diǎn)主要在第一階段將視覺放開,因?yàn)槲覀冋J(rèn)為視覺和文本對齊是非常重要的,需要學(xué)習(xí)這些視覺的概念;第二階段是要把文本部分放開,這樣就能開發(fā)出文本的SFD能力以及多模態(tài)的SFD的能力。
之前的工作比如MiniGPT4、LLaVA等,并沒有做詳細(xì)的性能評測,只是開源了一些demo讓大家來體驗(yàn)。我們構(gòu)建了一個(gè)多模態(tài)指令評測集OwlEval來評測不同的模型,包括OpenFlamingo、BLIP-2、MiniGPT4,LLaVA,以及我們的mPLUG-Owl。
評分指標(biāo)主要分為四類,進(jìn)行人工評測。A:聽懂人類的指令,且回答滿意;B:聽懂指令,但是回答部分會(huì)存在一些錯(cuò)誤;C:聽懂指令,但是回答錯(cuò)誤或者用戶不滿意;D:聽不懂指令或者無效的回答。
我們首先對知識(shí)問答進(jìn)行評測。
對比的模型有MM-REACT、MiniGPT-4,可以看到mPLUG-Owl給出的回復(fù)非常正確。能夠清楚的理解人類的意圖,并且回答的也是非常正確的。所以我們給出的score是A,MiniGPT-4是B,而MM-REACT的knowledge不太好。
第二個(gè)是多輪對話的評測。
首先模型要能夠不停的聊,并且能夠理解指代關(guān)系,比如姚明和杜峰的這個(gè)例子,問第二個(gè)問題的時(shí)候問模型左邊是誰?更高的是誰?這種有指代關(guān)系的問題,mPLUG-Owl回復(fù)的都比較好。
接下來我們也進(jìn)行了笑話理解的測試。
MM-REACT很難理解,最終得分是c。GPT-4回答的就非常好,GPT-4的笑話理解和細(xì)粒度理解能力確實(shí)非常強(qiáng)。mPLUG-Owl回答的也算不錯(cuò),至少明白了它的意圖,給出的答案是有一些錯(cuò)誤的,稍微有一些幻覺,但整體來說回答的還是不錯(cuò)的,也展示了mPLUG-Owl非常強(qiáng)的細(xì)粒度理解能力。
我們在評測的時(shí)候也發(fā)現(xiàn)了mPLUG-Owl的涌現(xiàn)能力,超出了我們的想象。
我們在預(yù)訓(xùn)練的時(shí)候主要是通過圖文pair,并沒有加入多圖和OCR的能力,我們進(jìn)行了一些多圖的能力測試。對于上圖左側(cè)兩張姚明相關(guān)的圖片,mPLUG-Owl也展示了給出多圖之間關(guān)系的能力。右側(cè)四張圖的漫畫,也進(jìn)一步說明了mPLUG-Owl的能力。
還有OCR的能力。
針對給出的文章首頁截圖,mPLUG-Owl能夠很好的理解文章的標(biāo)題和摘要,展現(xiàn)了mPLUG-Owl的OCR的能力。
我們也將其擴(kuò)展到了視頻。我們與優(yōu)酷聯(lián)合發(fā)布了一個(gè)最大的中文數(shù)據(jù)集YouKu-mPLUG,基于此又將其擴(kuò)展到了mPLUG-Owl視頻理解。
例如上圖左側(cè),模型能夠很好地理解視頻內(nèi)容。右側(cè)是基于視頻進(jìn)行一些創(chuàng)作。并且明白了視頻里面的步驟。這些都展示了模型較強(qiáng)的視頻理解能力。
前面也提到了我們發(fā)布的多語言版本。
我們希望模型能夠支持更多的中文場景,我們也開源了一個(gè)多語言版本,上圖是幾個(gè)case,都展現(xiàn)了mPLUG-Owl的多語言能力。多語言還包含其他語言,比如法語、日語、葡萄牙語等。
這些都展示了mPLUG-Owl的多語言能力。
剛剛也提到了我們與優(yōu)酷聯(lián)合發(fā)布了一個(gè)業(yè)內(nèi)最大的中文視頻數(shù)據(jù)集YouKu-mPLUG,也是為了推動(dòng)中文社區(qū)的發(fā)展。我們也訓(xùn)練mPLUG-Video中文視頻對話模型。我們可以基于視頻進(jìn)行多輪的對話,以及剛剛提到的OCR的能力。以及knowledge的能力都表現(xiàn)的非常好。因?yàn)楝F(xiàn)在中文沒有海量的視頻數(shù)據(jù)集,如果大家對我們這個(gè)視頻數(shù)據(jù)集比較感興趣也可以到我們這個(gè)鏈接下進(jìn)行下載。
我們還做了mPLUG-Owl的消融實(shí)驗(yàn)。
證明了多模態(tài)預(yù)訓(xùn)練和文本的instruction以及多模態(tài)instruction相關(guān)的能力,針對上圖的六項(xiàng)能力,我們的策略對模型的提升是比較明顯的,也證明了我們的訓(xùn)練策略和多模態(tài)指令微調(diào)數(shù)據(jù)的有效性。
剛剛提到了我們與優(yōu)酷聯(lián)合發(fā)布了一個(gè)業(yè)內(nèi)最大的中文視頻數(shù)據(jù)集YouKu-mPLUG,我們也加入了非常多的安全策略,對數(shù)據(jù)集做了一些過濾。我們的數(shù)據(jù)集分布比較均勻,大概有45個(gè)類,我們基于數(shù)據(jù)集標(biāo)注了一個(gè)benchmark,包含了分類,檢索等等。都是為了推動(dòng)中文多模態(tài)社區(qū)發(fā)展。因?yàn)橹形亩嗄B(tài)社區(qū)發(fā)展受限的一個(gè)主要原因就是沒有中文預(yù)訓(xùn)練多模態(tài)數(shù)據(jù)集。第二是沒有benchmark,無法做公平的對比。這也是YouKu-mPLUG的初心。
上面是我們數(shù)據(jù)的一些case,分布還是比較廣泛的,包括影視,綜藝等等。模型的結(jié)果跟mPLUG-Owl比較類似,只是將一個(gè)文本的模塊擴(kuò)展成視頻的模塊。對應(yīng)的任務(wù)包括Video Category Prediction以及Video Captioning,基于mPLUG-Owl的結(jié)構(gòu)都取得了不錯(cuò)的效果和明顯的提升。
三、ModelScope實(shí)戰(zhàn)分享
mPLUG-Owl在ModelScope上開源了很多的模型,包括mPLUG-Owl模型以及mPLUG圖文模型、視頻模型等等。大家在ModelScope上搜索模型庫輸入mPLUG就能查看相關(guān)模型。
使用也是非常簡單,將ModelScope安裝之后,直接導(dǎo)入指定好的模型,輸入圖片以及輸入問題,就可以得到模型給出的答案。比如我們問這個(gè)人的情緒是怎么樣的?模型會(huì)給出“he is angry”。
ModelScope創(chuàng)空間給出了一些demo。
mPLUG-Owl的兩個(gè)demo包括英文版本和多語言版本也在創(chuàng)空間進(jìn)行了開源。點(diǎn)開后是一個(gè)聊天的界面,如果大家對我們的工作感興趣也可以通過上圖中的鏈接到ModelScope創(chuàng)空間進(jìn)行體驗(yàn)。
同時(shí),我們的工作也在huggingface和github進(jìn)行了開源,左側(cè)是huggingface的使用指南,也歡迎大家進(jìn)行使用體驗(yàn)。
四、mPLUG項(xiàng)目主頁
文中提到的mPLUG的工作都已在github進(jìn)行了開源,github項(xiàng)目名為X-PLUG,里面包含了mPLUG-2多模態(tài)模塊化大一統(tǒng)模型,以及mPLUG-Owl多模態(tài)對話大模型。項(xiàng)目主頁上還包括文中提到的我們與優(yōu)酷聯(lián)合發(fā)布的中文視頻數(shù)據(jù)集YouKu-mPLUG,我們的論文、代碼以及數(shù)據(jù)集的鏈接。歡迎大家star和fork!
如果對創(chuàng)空間感興趣,可以直接掃描上面的二維碼進(jìn)行體驗(yàn),包括英文和多語言兩個(gè)版本。
整個(gè)X-PLUG體系還包含了很多其它模型,我們也建立了一個(gè)討論區(qū),歡迎大家掃碼加入討論區(qū),或者訪問我的知乎鏈接,進(jìn)行交流。
五、問答環(huán)節(jié)
Q1:剛剛提到了和優(yōu)酷聯(lián)合發(fā)布的中文視頻數(shù)據(jù)集,能否介紹一下這個(gè)數(shù)據(jù)集可以用到什么場景去解決什么樣的問題?
A:YouKu-mPLUG這個(gè)數(shù)據(jù)集的初衷是要補(bǔ)齊中文社區(qū)沒有中文視頻預(yù)訓(xùn)練多模態(tài)數(shù)據(jù)集的短板。我們現(xiàn)在的應(yīng)用場景更多的是短視頻,比如抖音、快手等等,沒有這種視頻數(shù)據(jù)集,會(huì)非常影響這種視頻應(yīng)用場景的發(fā)展。并且我們也加入了非常多的安全策略,對數(shù)據(jù)集做了一些過濾。
第一是為了推動(dòng)中文多模態(tài)社區(qū)發(fā)展。第二是視頻領(lǐng)域比較經(jīng)典的任務(wù)沒有benchmark大家不好做公平的對比。第三是為了推動(dòng)更多的視頻應(yīng)用場景,包括視頻生成和視頻編輯。公開這個(gè)數(shù)據(jù)集也是為了讓工業(yè)界和學(xué)術(shù)界來做更多的應(yīng)用和研究,這也是YouKu-mPLUG的初心。
Q2:多模態(tài)在NLP方面可以怎么使用?用在什么方面?
A:現(xiàn)在的多模態(tài)和NLP是聯(lián)系緊密的,當(dāng)前的多模態(tài)更偏向NLP,因?yàn)槟P偷膐utput是文本。output是視覺的,比如視頻生成、圖片生成是屬于另外一個(gè)分支。output是文本的跟NLP走的是比較緊密的。區(qū)別只是輸入多了一個(gè)圖片而已,所以NLP的很多技術(shù)也是在多模態(tài)有應(yīng)用的。多模態(tài)預(yù)訓(xùn)練這部分工作應(yīng)該很多都是做NLP出身的,現(xiàn)在的很多應(yīng)用場景,很難是單文本的,包括ChatGPT讓我們經(jīng)驗(yàn)的一個(gè)點(diǎn)也是他是多模態(tài)的。無論我們輸入圖片還是文本,都能夠非常流暢地進(jìn)行對話,所以多模態(tài)在NLP的應(yīng)用場景是非常廣的,多模態(tài)可能跟文本唯一不一樣的地方就是需要你完全理解圖片,所以我覺得這兩個(gè)方向是不分家的。