賈佳亞韓松團(tuán)隊(duì)新作:兩行代碼讓大模型上下文窗口倍增 | GitHub熱榜
只要兩行代碼+11個(gè)小時(shí)微調(diào),就能把大模型4k的窗口長度提高到32k。
規(guī)模上,最長可以擴(kuò)展到10萬token,一口氣就能讀完長篇小說的多個(gè)章節(jié)或中短篇小說。
賈佳亞韓松聯(lián)合團(tuán)隊(duì)提出的這個(gè)基于LoRA的全新大模型微調(diào)方法,登上了GitHub熱榜。
這種方式叫做LongLoRA,由來自香港中文大學(xué)和MIT的全華人團(tuán)隊(duì)聯(lián)合出品。
在一臺(tái)8個(gè)A100組成的單機(jī)上,增大窗口長度的速度比全量微調(diào)快數(shù)倍。
網(wǎng)友看了之后不禁表示,這個(gè)效率實(shí)在是令人印象深刻:
那么,用LongLoRA微調(diào)之后,模型會(huì)有什么樣的變化呢?
一口氣讀完一部小說
研究團(tuán)隊(duì)的實(shí)驗(yàn)當(dāng)中使用的模型是Llama 2。
經(jīng)過LongLoRA方法微調(diào)之后,Llama 2-7B的窗口長度最高可提升到10萬token。
實(shí)測(cè)發(fā)現(xiàn),微調(diào)后的模型可以一口氣讀完一部小說,然后回答各種問題。
比如總結(jié)一下大劉在《三體》第三部中體現(xiàn)的中心思想,比總結(jié)內(nèi)容還高出了一個(gè)層次。
模型給出的答案是與外星文明首次接觸的危險(xiǎn)性、星際旅行之困難與人類文明之脆弱,以及團(tuán)結(jié)協(xié)作的重要性等內(nèi)容。
的確每條在原著中都有所體現(xiàn),而且也比較全面了。
除了對(duì)整部作品進(jìn)行概括提煉,局部內(nèi)容當(dāng)然也可以詢問。
小說中的角色也能對(duì)答如流,比如《西游記》中孫悟空是怎么開花成長的。
模型告訴我們,孫悟空很有智慧,但又有一顆頑皮的心,在伴隨唐僧取經(jīng)的過程中走向了成熟。
這次的總結(jié)依舊是很到位。
而且不僅是單個(gè)角色,不同人物之間復(fù)雜的關(guān)系也能了如指掌。
提問的方式可以簡單粗暴些,直接要求描述這本書(《哈利波特》)中的人物關(guān)系。
模型以哈利·波特為中心,介紹了他的朋友韋斯萊、赫敏,敵人馬爾福,以及鄧布利多教授等人物。
除了看小說,LongLoRA微調(diào)后的Llama還可以讀論文,生產(chǎn)力一下子就提高了(喜)。
無論是整體概括還是局部詢問,微調(diào)后的模型都能準(zhǔn)確地給出答案:
△中文部分為谷歌機(jī)翻
為了從宏觀上把握模型的表現(xiàn),研究團(tuán)隊(duì)用了如下數(shù)據(jù)集進(jìn)行了測(cè)試:
- PG19:來自書籍的長篇文檔數(shù)據(jù)集,用來測(cè)試語言建模效果。
- Proof-pile:來自arXiv的數(shù)學(xué)論文數(shù)據(jù)集,用來測(cè)試語言建模效果。
- LongQA:作者自行構(gòu)建的長序列問答數(shù)據(jù)集,用于有監(jiān)督的微調(diào)。
- LongChat:第三方構(gòu)建的長對(duì)話理解數(shù)據(jù)集,用來測(cè)試長序列敘述理解效果。
結(jié)果顯示,LongLoRA在PG19和Proof-pile上的困惑度與全量微調(diào)接近。
在問答數(shù)據(jù)集上,LongLoRA微調(diào)出的模型表現(xiàn)也很優(yōu)異,長文本理解方面更是達(dá)到了SOTA水平。
當(dāng)然,LongLoRA的意義不僅在于提高了窗口長度,關(guān)鍵在于用更少的消耗提高了窗口長度。
以7B參數(shù)量的Llama-2為例,如果使用全量微調(diào),從4k提升到32k,在一臺(tái)8個(gè)A100的單機(jī)上需要五天。
而改用LongLoRA方式,則只用11.3小時(shí)就能完成,連半天都不到,效率提升近十倍。
如果提升到65k,全量微調(diào)所需時(shí)間將超過1000小時(shí),LongLoRA卻只用52.4小時(shí)。
那么LongLoRA又是怎么做到的呢?
“大而化小”降低計(jì)算量
LongLoRA建立在LoRA的基礎(chǔ)之上,引入了一種稱為“移位短注意力”(shift short attention)的機(jī)制。
這種機(jī)制只需要兩行代碼就能實(shí)現(xiàn):
Transformer架構(gòu)的核心是自注意力(Self-attention)計(jì)算。
短注意力就是將訓(xùn)練文本劃分為多個(gè)組,使自注意力計(jì)算在每個(gè)組內(nèi)分別進(jìn)行,從而達(dá)到降低運(yùn)算量的目的。
而在這一過程中注意力頭也被進(jìn)行了分組,通過注意力頭的位移,就實(shí)現(xiàn)了組間的信息交互。
劃分出的每個(gè)組之間有重疊部分,確保了數(shù)據(jù)可以在全文中流通。
這樣一來,每次計(jì)算都只需要對(duì)組內(nèi)的token進(jìn)行操作,運(yùn)算量大大降低。
除了對(duì)輸入進(jìn)行分割之外,LongLoRA相比于Lora還可以微調(diào)embedding層和normalization層。
這兩項(xiàng)內(nèi)容占的參數(shù)量很小,以Llama 2-7B為例,embedding層只占1.94%,normalization層更是不到十萬分之四。
消融實(shí)驗(yàn)結(jié)果表明,除了核心的Attention層,這兩個(gè)占比很小的部分也起到了重要作用。
除了核心的短注意力機(jī)制,研究團(tuán)隊(duì)引入了DeepSpeed和FlashAttention方式,進(jìn)一步降低了訓(xùn)練消耗。
目前,LongLoRA微調(diào)過后不同參數(shù)量和窗口長度的Llama 2已經(jīng)開源,感興趣的話可以到GitHub頁面中查看。
論文地址:https://arxiv.org/abs/2309.12307
GitHub項(xiàng)目頁:https://github.com/dvlab-research/LongLoRA