賈佳亞團(tuán)隊開源全球首個70B長文本大語言模型,讀論文看小說直接ProMax
家人們,苦長文本久矣的大語言模型(LLM),現(xiàn)在終于有解法了!
就在最近,香港中文大學(xué)賈佳亞團(tuán)隊聯(lián)合MIT宣布了一項新研究,一舉打破如此僵局:
發(fā)布全球首個70B參數(shù)的長文本開源大語言模型——LongAlpaca。
值得注意的是,這次團(tuán)隊開源的LongAlpaca不止是一個單一的大語言模型,實則是一個系列,包括:
- 中杯:LongAlpaca-7B
- 大杯:LongAlpaca-13B
- 超大杯:LongAlpaca-70B
而在它們完整訓(xùn)練和評測的背后,更為關(guān)鍵的是研究團(tuán)隊精挑細(xì)選、千錘百煉得來的長文本數(shù)據(jù)集LongAlpaca-12k。
并且在自研的大語言模型文本長度拓展方案LongLoRA的加持之下,在最終的結(jié)果上取得了驚艷的成績——
只需兩行代碼、一臺8卡A100機(jī)器,便可將7B模型的文本長度拓展到100k tokens,70B模型的文本長度拓展到32k tokens。
要知道,現(xiàn)在主流的大語言模型都只支持短文本的輸入(LLaMa支持2k tokens、Llama2支持4k tokens);而我們在實際使用的過程中往往需要的是長文本的輸入。
例如讓大語言模型去解讀一本小說的劇情,再如讓它幫你分析一篇論文等等。
而以往開源大語言模型要想拓展文本的長度,基本上就是堆算力,動輒消耗100塊以上的GPU或TPU的那種。
不僅計算資源上的消耗巨大,更是由于缺少專精的數(shù)據(jù)集,使得長文本輸入得到結(jié)果也并非那么理想。
這也就是開頭我們提到“苦長文本久矣”的由來了。
那么賈佳亞領(lǐng)銜的研究團(tuán)隊發(fā)布的LongAlpaca的效果具體又是如何呢?
現(xiàn)在一同來體驗下。
“全球首個”的一手體驗
既然是一手體驗,我們主打的就是要把LongAlpaca從方方面面來個評測。
分析某篇論文獲獎原因
首先我們小試牛刀一下,將一篇ICLR的Oral論文(共12487 tokens)“投喂”給LongAlpaca,讓它幫忙分析一下獲獎原因。
一篇論文的文本長度定然不會是像我們平時提問普通問題那般簡短,而且通篇的文字在邏輯上也是環(huán)環(huán)相扣,極具嚴(yán)謹(jǐn)性。
而LongAlpaca在面對如此專業(yè)性的論文,依舊是給出了較為完美的回答,分別從論文提出方法的新穎性、框架的綜合評價,以及實驗結(jié)果等關(guān)鍵要素進(jìn)行了分析。
最后的總結(jié)是:
總而言之,這篇論文獲獎的關(guān)鍵原因是所提出的Domino方法和評估框架的新穎性、有效性和通用性,推動了切片發(fā)現(xiàn)的最新進(jìn)展。全面的實驗評估和定量分析為支持概念貢獻(xiàn)提供了強(qiáng)有力的經(jīng)驗證據(jù)。
根據(jù)兩篇論文分析會議風(fēng)格的區(qū)別
從第一個評測內(nèi)容來看,LongAlpaca對于一篇論文內(nèi)容長度的處理上是完全拿捏的。
那么如果“投喂”兩篇,還是對比著來看的那種,它是否依舊能hold住呢?
話不多說,直接“丟進(jìn)去”:
根據(jù)這兩篇論文,比較一下兩個會議的區(qū)別(共25802 tokens)。
同樣的,LongAlpaca依舊是從多個角度,方方面面地去回答這個問題——
論文的結(jié)構(gòu)、技術(shù)的深度、理論與實驗、表示法,甚至是文章的語言風(fēng)格,都給出了具體的分析結(jié)果。
最后LongAlpaca給出的結(jié)論是:
CVPR的文章風(fēng)格更加具備結(jié)構(gòu)化和實驗性,專注于描述一種計算機(jī)視覺任務(wù)的方法。
ICLR論文風(fēng)格則是更靈活,專注于證明元學(xué)習(xí)見解的關(guān)鍵公式和理論分析。
提問名著章節(jié)
在感受完LongAlpaca對于論文的分析之后,我們繼續(xù)來看下它能否拿捏更具戲劇性的小說名著。
把《西游記》的節(jié)選片段(共36870 tokens)丟進(jìn)去,并提問:
在《西游記》中,孫悟空為什么在大鬧天宮時期很厲害,但取經(jīng)路上卻屢屢受挫?
LongAlpaca按照《西游記》的故事時間線,分析了在大鬧天宮時孫悟空的傲慢,后來被佛祖限制了能力,以及沿途的妖怪越發(fā)強(qiáng)大等種種的原因。
總結(jié)來說就是:
強(qiáng)大的對手、對他力量的限制、欺騙和缺乏同伴是他在旅途中失敗的最初原因;但隨著時間的推移,他獲得了智慧、經(jīng)驗和戰(zhàn)友,使他最終能夠戰(zhàn)勝更為強(qiáng)大的敵人。
與Llama 2同臺競技
在自身縱向的各項評測后,定然也是少不了橫向的比較。
那么跟大語言模型開源界炙手可熱的Llama 2相比,LongAlpaca的表現(xiàn)又會如何呢?
這輪我們派出的是“大杯”——LongAlpaca-13B選手,向它提出的問題是:
根據(jù)《三體》第一部中的章節(jié)(共32252 tokens),葉文潔為什么要聯(lián)系外星人,而后期又為什么后悔?
LongAlpaca-13B可以說是較為精準(zhǔn)地給出了答案:
葉文潔最初與外星人的接觸既是出于理想主義,也是出于復(fù)仇,但隨著時間的推移,她對人性的看法發(fā)生了變化,她意識到自己可能給全人類帶來了危險,她的遺憾也隨之增加。
反觀Llama 2這邊,同樣是13B量級的大語言模型,做出的回答就有些差強(qiáng)人意了,大部分文字并沒有圍繞問題本身。
只是簡單的提了一句:
最后她感到后悔,因為她意識到她的行為導(dǎo)致了她從未想過的后果。
總而言之,從種種的評測表現(xiàn)來看,LongAlpaca在處理長文本輸入的難題上確實是做到了較大優(yōu)化。
那么接下來的一個問題便是:
怎么做到的?
左手抓數(shù)據(jù),右手抓策略,這便是LongAlpaca的應(yīng)對之道。
在數(shù)據(jù)方面,正如我們剛才提到的,訓(xùn)練長文本大語言模型的難點(diǎn)一方面在于缺少公開的長文本對話數(shù)據(jù)。
而且此前長文本模型的訓(xùn)練,大多是在非對話的語料上用 “next-token-generation”的方式進(jìn)行繼續(xù)預(yù)訓(xùn)練。
這種方式雖然能夠align模型對于長文本的位置編碼格式,但缺點(diǎn)也很明顯,就是很難讓模型有較好的對話能力。
因此,賈佳亞團(tuán)隊收集了9k條長文本問答語料對,包含針對名著、論文、深度報道甚至財務(wù)報表的各類問答。
其中,論文相關(guān)問答最為詳細(xì),包括了“審稿”、“論文對比”、“會議風(fēng)格對比”、“修改意見”,以及針對論文內(nèi)容的提問等。
但畢竟揚(yáng)了“長”也不能忘了“短”,因此賈佳亞團(tuán)隊還從原有的Alpaca數(shù)據(jù)集中挑選了3k左右的短問答語料混合訓(xùn)練。
最終,也就成功構(gòu)建了我們前文提到的LongAlpaca-12k。
接下來,便是策略層面。
正如我們剛才提到的,此前在大語言模型長文本輸入問題上,另一個老大難的問題便是計算資源消耗量巨大。
具體而言,主要就是集中在了自注意力機(jī)制(self-attention)的計算上——開銷隨著文本長度成平方次地增加。
因此,研究團(tuán)隊以此作為突破口,提出了在研的大語言模型文本長度拓展方案LongLoRA;與此同時,還采用了分組和偏移的方式來對全局自注意力機(jī)制進(jìn)行模擬。
△LongLoRA設(shè)計概覽
其中,LongLoRA具體的關(guān)鍵技術(shù)點(diǎn)就是shift short attention,我們姑且稱之為偏置短注意力。
它的核心思想就是用sparse local attention(稀疏局部注意力)替換掉dense global attention(密集全局注意力)。
大概可以理解為檢索時的思想,只需要將匹配度、相似性高的centext拿過來用即可。
如此一來便可以大幅降低計算資源的消耗了。
△shift short attention示意圖
更重要的一點(diǎn)是,LongLoRA的訓(xùn)練只需要2行代碼即可實現(xiàn)!
此外,LongLoRA還探索了低秩訓(xùn)練的方式。原有的低秩訓(xùn)練方式,如LoRA,無法在文本長度遷移上取得良好的效果。
而LongLoRA在低秩訓(xùn)練的基礎(chǔ)上,引入嵌入層(Embedding layer和 Normalization layers)進(jìn)行微調(diào),從而達(dá)到可以和全參數(shù)微調(diào)(Full fine-tune)逼近的效果。
對于8k長度的模型訓(xùn)練,相比于全參數(shù)微調(diào),LongLoRA將顯存消耗從46.3GB降低到25.6GB。
對于64k長度的模型訓(xùn)練,相比于常規(guī)LoRA,LongLoRA將訓(xùn)練時間從90~100小時左右降低到52.4小時。
△全參數(shù)微調(diào)、常規(guī)LoRA和LongLoRA的性能比較
值得一提的是,LongLoRA在各類語言任務(wù)上,包括文本建模(Proof-pile、PG-19)、信息檢索(topic retrieval, passkey retrieval),都展現(xiàn)了優(yōu)異的性能。
并且LongLoRA可以僅在一臺8卡A100機(jī)器上將7B模型的文本長度拓展到100k tokens,將70B模型的文本長度拓展到32k tokens,并且保持出色的語言建模性能。
如何部署?
對于如此“快、好、省”的項目,你是不是迫不及待地想要嘗鮮了呢?
現(xiàn)在,它已經(jīng)在GitHub上開源,并給出了十分詳細(xì)的部署教程。
例如在安裝方面,僅需要簡單六步:
1、在GitHub中fork這個repo。
2、在本地機(jī)器上克隆存儲庫,使用git Clone并粘貼此項目的url。
3、運(yùn)行如下代碼:
pip install -r requirements.txt
pip install flash-attn --no-build-isolation
4、根據(jù)偏好,使用“已發(fā)布模型”和“微調(diào)模型”。
5、通過對話測試模型。
6、部署到自己的demo。
以及還有各種“杯型”的模型、訓(xùn)練過程代碼等等,團(tuán)隊都在GitHub項目中詳細(xì)地展示了出來。
有需求的小伙伴可戳下方鏈接自取了~
GitHub項目地址:https://github.com/dvlab-research/LongLoRA
論文地址:https://browse.arxiv.org/pdf/2309.12307.pdf