港中文聯合MIT提出超長上下文LongLoRA大模型微調算法

d066c4bbd81b49c3ae4b61561a502b63.png

論文名稱: LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models

文章鏈接:https://arxiv.org/abs/2309.12307

代碼倉庫:?https://github.com/dvlab-research/LongLoRA

現階段,上下文窗口長度基本上成為了評估LLM能力的硬性指標,上下文的長度越長,代表大模型能夠接受的用戶要求越復雜,近期OpenAI剛發布的GPT-4 Turbo模型甚至直接支持到128K的上下文窗口,相當于用戶可以直接喂給模型一部長達300頁的小說。但是從模型實現角度來看,訓練具有長上下文大小的LLM的成本很高。例如在8192的上下文長度上訓練參數規模相同的模型,自注意力層的計算成本是2048的16倍。

本文介紹一篇來自CUHK和MIT合作完成的工作,本文結合LoRA方法提出了長上下文LLM微調框架LongLoRA,本文從兩個方面對LLM的上下文窗口進行了優化,首先提出了shift short attention(S2-Attn)模塊替代了原始模型推理過程中的密集全局注意力,可以節省大量的計算量,同時保持了與普通注意力微調相近的性能。此外作者重新審視了LLM上下文窗口參數的高效微調機制,提出了LongLoRA策略,LongLoRA可以在單個8×A100機器上實現LLaMA2-7B模型的上下文從4k擴展到100k,或LLaMA2-70B模型的上下文擴展到32k。LongLoRA具有很強的普適性,其可以保持LLM的原始架構,并且與大多數現有技術兼容,例如FlashAttention-2等,此外,為了讓LongLoRA的模型具有對話能力,作者團隊專門收集了一個LongAlpaca數據集(包含9k長上下文問答對和3k短問答對),用于監督微調。

01. 引言

訓練或微調一個LLM所需的計算資源對于普通的研究人員來說通常難以承受,因此研究更輕量的模型微調方案已經成為學術界的熱點話題,目前最直接的手段是使用微軟提出的低秩適應方法(LoRA)[1],LoRA可以通過學習一個低秩矩陣來修改自注意力塊中的線性投影層,達到高效減少模型可訓練參數規模的效果

9a4d8312ba214d91962f69c453bed5df.png

但是LoRA在遇到超長上下文的查詢時,提升效果不夠明顯,并且會帶來模型困惑度增加的問題,本文作者以LLaMA2-7B模型進行了模型困惑度實驗,實驗結果如上表所示,可以看到,LoRA方法相比完整微調方法(Full FT)會帶來更明顯的困惑現象,即使將LoRA矩陣的秩提升到256也不能緩解這種問題。此外在模型效率方面,無論是否采用LoRA,隨著上下文窗口長度的擴展,模型的計算成本都會急劇增加,這主要是由于自注意力機制的計算量導致的,如下圖所示,作者展示了三種不同方法在訓練相同的LLaMA2模型時,模型的訓練復雜度、GPU占用和訓練時間隨著上下文窗口長度增加的變化情況

cc23bd043d7245f292720b8616377219.png

為了解決上述問題,本文引入了一種專門解決長上下文訓練難題的LongLoRA微調方法,同時為了應對標準自注意力機制龐大的計算量,作者提出了一種短時注意力S2-Attn來減少計算成本,從上面三個圖中的結果來看,LongLoRA可以有效的提升模型各方面的微調性能。

02. 本文方法

2.1 shift short attention(S2-Attn)

a1236a65d3ac47fe80d6978075f5ff21.png

其首先將模型的輸入分為幾組,并在每個組中分別進行注意力計算,同時在每個組中,將原有的token移動組大小的一半來保證相鄰注意力頭之間的信息交互,作者進行了如下的實驗來觀察S2-Attn在不同上下文窗口中的性能變化,其中參與實驗的baseline方法還包括一些無需進行微調的位置編碼優化方法。可以看到,微調對于模型處理長上下文輸入的效果起到了非常重要的作用

6241455e827d46aca532a7273488026e.png

上表中的第一種注意力模式是只使用短時注意力進行訓練(Pattern 1),由于對于長上下文,模型的計算成本主要來自自注意力模塊。因此,在這個試驗中,作者將自注意力模塊分為4組。例如,在模型的訓練和測試階段均采用8192個token作為輸入,而每個組中的注意力計算的token大小為2048,如上表所示,這種模式相比普通方法已經能夠提升模型性能,但是隨著上下文長度的增加,模型的困惑程度變得更嚴重,作者分析造成這種情況的原因是不同的組之間沒有信息交互

bd3d739fcd1a4fe6871ef7faf678b60c.png

為了促進不同注意力組之間的信息交互,作者提出了一種shift模式,如上圖所示,即在進行組劃分時將注意力頭移動組長度的一半距離,以上下文窗口長度8192為例,在Pattern 1中,第一組從第1個到第2048 個token進行自注意力計算。在Pattern 2中,組劃分移動長度為1024,這樣就導致另一個注意力組從第1025個token開始,到第3072個token結束,而第一個和最后1024個token屬于同一組,這種方式不會增加額外的計算成本,但可以實現不同組之間的信息流動

176d084dc7444a9e9f0d401d79f5d7dc.png

此外,shift short attention非常容易在代碼中實現,上圖展示了其在注意力塊計算時的偽代碼,只需要在原始自注意力計算的基礎上添加兩行代碼。

2.2 面向長上下文改進LoRA算法到LongLoRA

LoRA算法是目前LLM社區中非常常用的微調方法,幾乎是微調一個基座模型到下游垂直領域中的首選算法,與完全微調相比,它節省了大量可訓練參數和顯存占用的成本。然而,使用LoRA算法在較長上下文的場景中進行訓練仍然存在一些問題,微調后的模型性能會略遜色于完全微調方法,這種性能差距會隨著目標上下文長度變大而增大。

9a4d8312ba214d91962f69c453bed5df.png

為了彌補這一差距,作者在訓練時允許模型嵌入層和歸一化層的參數進行更新。最終效果如上表所示,雖然這些層只占用少量的參數(特別是歸一化層的參數量占比在整個LLaMA2-7B模型中僅為0.004%),但它們卻對模型在長上下文場景中的適應起到有益幫助,上表中的LoRA+Norm+Embed獲得了最佳性能,作者在后續的實驗中將這種LoRA的改進版本表示為LoRA+。

03. 實驗效果

本文的實驗基座模型選用了預訓練的LLaMA2模型,分別包含7B、13B和70B的版本,其中7B版本的最大上下文窗口大小為100k,13B版本為65536,70B版本為32768。對于實驗數據集,作者使用Redpajama數據集進行訓練,隨后使用圖書語料庫數據集PG19和Arxiv Math數據集來評估微調模型的長序列語言建模性能,還使用PG19的測試集專門評估模型的困惑度。此外,作者團隊還提出了一個用于監督微調長上下文模型的數據集LongAlpaca,LongAlpaca包含了9k個長問題和相應的答案,以及3k短問答,共計12k問答數據

3.1 長序列語言建模性能

下表中展示了本文方法在LLaMA2-7B和LLaMA2-13B模型上的長序列建模實驗結果,模型的性能通過困惑度指標來體現,可以看到,對于相同的訓練和評估上下文長度的情況,隨著上下文窗口長度的增加,模型的困惑度會降低。通過將LLaMA2-7B模型的上下文窗口大小從8192增加到32768時,模型困惑度從2.72降低到2.50,降低了0.22。對于LLaMA2-13B模型,可以觀察到困惑度從2.60降低到2.32,降低了0.28。

460457ee44414ae8bec121dac5e6bac0.png

在下表中,作者進一步探索了LongLoRA可以在單個 8 x A100 機器上微調的最大上下文窗口長度。這里將LLaMA2 7B、13B 和 70B 的上下文長度分別擴展到 100k、65536、32768,可以看到,LongLoRA在這些極端的設置上仍然取得了較好的結果,此外也可以觀察到,擴展模型的上下文窗口大小會導致模型的困惑度下降

bdd36bc154b146e98836221fb6f7f258.png

3.2 基于檢索的性能評估

為了保證實驗的完整性,作者在長序列語言建模性能評估之外還引入了基于長上下文檢索的實驗。在下表中,作者將本文方法與其他開源LLMs在LongChat[2]中設置的主題檢索任務上進行了對比實驗。該任務要求模型從很長的對話數據中檢索到目標主題,長度從 3k、6k、10k、13k 到 16k 不等。由于數據集中的一些問題的長度超過了16k,因此作者選擇對LLaMA2-13B模型進行微調,上下文窗口長度為18k。

c1ae2f4a305c427aa841980091efe045.png

從上表中可以看出,本文方法實現了與該任務中SOTA方法LongChat-13B相當的性能,甚至在極端長度16k的場景評估中性能超過了LongChat-13B

04. 總結

本文針對LLM微調訓練提出了一種名為LongLoRA的方法,它可以有效地將LLM的上下文窗口長度擴展到更長的范圍。LongLoRA與標準完全微調方法相比,所使用的GPU顯存成本和訓練時間更少,并且精度損失也很小。在架構層面,作者將原始笨重的自注意力計算轉換為更加輕量的shift short attention(S2-Attn),S2-Attn以獨特的注意力頭劃分模式實現了局部的信息交互,從而帶來更高效的性能,更關鍵的是,S2-Attn只需要兩行代碼就可以實現。在模型訓練層面,作者在傳統LoRA微調模式中加入了可訓練的標準化和嵌入層參數,這被證明在長上下文場景中是有效的。從實際操作層面來看,LongLoRA是一種通用的方法,可以兼容到更多類型的LLMs中,進一步降低開發者微調LLM的難度和成本。

參考

[1] Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, and Weizhu Chen. Lora: Low-rank adaptation of large language models. In ICLR, 2022.

[2] Dacheng Li, Rulin Shao, Anze Xie, Ying Sheng, Lianmin Zheng, Joseph E. Gonzalez, Ion Stoica,Xuezhe Ma, and Hao Zhang. How long can open-source llms truly promise on context length? June 2023.


??關于TechBeat人工智能社區

TechBeat(www.techbeat.net)隸屬于將門創投,是一個薈聚全球華人AI精英的成長社區。

我們希望為AI人才打造更專業的服務和體驗,加速并陪伴其學習成長。

期待這里可以成為你學習AI前沿知識的高地,分享自己最新工作的沃土,在AI進階之路上的升級打怪的根據地!

更多詳細介紹>>TechBeat,一個薈聚全球華人AI精英的學習成長社區

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715076.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715076.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715076.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法修煉-動態規劃之路徑問題(1)

62. 不同路徑 - 力扣(LeetCode) 思路:選定一個網格為終點,走到這個網格的所有走法就是這個網格的上面一個網格的所有走法加上這個網格左邊一個網格的所有走法,然后做好初始化工作就行。 class Solution { public:int…

MATLAB環境下基于偏置場校正的改進模糊c-均值聚類圖像分割算法

基于聚類的分割方法是以統計學為基礎提出的一種分割方法。其實質是通過計算像素與每一類聚類中心的歐氏距離來判定像素與每一類聚類中心的相似性,距離近就說明像素與聚類中心相似性大,反之相似性小。基于一定標準下的相似性自動劃分成若干個子集(類)&…

markdown筆記(自用)

一.標題語法#空格&#xff0c;幾個#就是幾級標題 四級標題<H> 二.段落語法 用空白行分開 你好 三.換行 在一行的末尾添加兩個或多個空格&#xff0c;然后 v vvvvv 按回車鍵,即可創建一個換行()。 換行與段落的區別在于換行后兩行是挨著的&#xff0c;而段落之間有一…

項目預備知識

導入兩個頭文件 #include <graphics.h> // 引入 EasyX 的圖形庫頭文件 #include <conio.h> // 引入 conio.h 以使用 getch() 窗口創建函數&#xff1a;小黑屏 initgraph(640, 480, SHOWCONSOLE); closegraph(); //關閉一個窗口 設置背景顏色&#xff1a;這…

10.7、華為數通HCIP-DataCom H12-821單選題:121-140

121、關于OSPF特性描述錯誤的是:D A、OSPF采用鏈路狀態算法。 B、每個路由器通過泛洪 LSA 向外發布本地鏈路狀態信息 C、每臺 OSPF 設備都會收集其它路由器發來的LSA 所有的LSA 放在一起便組成了鏈路狀態數據庫LSDB, D、OSPF 區域0中所有路由器的 LSDB 都相同。 E、每臺…

【無標題】TMGM官網平臺切爾西足球俱樂部合作

TMGM作為一家在三大洲均設有辦事處的行業領導者&#xff0c;TMGM 被視為可靠的差價合約交易提供商&#xff0c;其重點是監管合規、技術創新與他聯系?&#x1f6f0;?TMGM818卓越的客戶服務。 切爾西足球俱樂部在亞太地區擁有龐大的球迷群體&#xff0c;并在該地區建立了多種亞…

2024年騰訊云優惠政策_騰訊云TOP10優惠活動

騰訊云服務器多少錢一年&#xff1f;62元一年起&#xff0c;2核2G3M配置&#xff0c;騰訊云2核4G5M輕量應用服務器218元一年、756元3年&#xff0c;4核16G12M服務器32元1個月、312元一年&#xff0c;8核32G22M服務器115元1個月、345元3個月&#xff0c;騰訊云服務器網txyfwq.co…

AOP案例(黑馬學習筆記)

需求 需求&#xff1a;將案例中增、刪、改相關接口的操作日志記錄到數據庫表中 ● 就是當訪問部門管理和員工管理當中的增、刪、改相關功能接口時&#xff0c;需要詳細的操作日志&#xff0c;并保存在數據表中&#xff0c;便于后期數據追蹤。 操作日志信息包含&#xff1a; ●…

IO多路轉接

1.select 初識select 系統提供 select 函數來實現多路復用輸入 / 輸出模型 . select 系統調用是用來讓我們的程序監視多個文件描述符的狀態變化的 ; 程序會停在 select 這里等待&#xff0c;直到被監視的文件描述符有一個或多個發生了狀態改變 ; select函數模型 select的函…

服務器硬件得基礎知識介紹

服務器硬件是計算機硬件的一種&#xff0c;專門用于構建服務器系統。服務器硬件通常具有高性能、高可靠性和可擴展性等特點&#xff0c;以滿足企業級應用的需求。本文將從以下幾個方面介紹服務器硬件的基礎知識&#xff1a;服務器概述、CPU、內存、存儲、網絡、電源和散熱、服務…

【機器學習】CIFAR-10數據集簡介、下載方法(自動)

【機器學習】CIFAR-10數據集簡介、下載方法(自動) &#x1f308; 個人主頁&#xff1a;高斯小哥 &#x1f525; 高質量專欄&#xff1a;Matplotlib之旅&#xff1a;零基礎精通數據可視化、Python基礎【高質量合集】、PyTorch零基礎入門教程&#x1f448; 希望得到您的訂閱和支…

0904多元復合函數求導-多元函數微分法及其應用

文章目錄 1 復習一元函數復合函數求導2 一元函數與多元函數復合的情形3 多元函數與多元函數復合的情形4 其他情形5 抽象復合函數求導6 全微分不變性結語 1 復習一元函數復合函數求導 y f ( u ) , u ? ( x ) ? f [ ? ( x ) ] d y d x d y d u ? d u d x f ′ ( u ) ? ?…

Python正則表達式:從基礎到高級應用的全面總結與實戰【第103篇—JSON模塊】

Python正則表達式&#xff1a;從基礎到高級應用的全面總結與實戰 正則表達式是一種強大的文本匹配和處理工具&#xff0c;廣泛應用于文本處理、數據抽取、表單驗證等領域。本文將從正則表達式的基礎知識出發&#xff0c;逐步深入&#xff0c;最終結合代碼實戰&#xff0c;帶你…

趙文彬將出席無磷鍋爐工藝助劑在鍋爐水節水節能應用

演講嘉賓&#xff1a;趙文彬 集團副總/技術總監 上遠未來水務集團有限公司 演講題目&#xff1a;無磷鍋爐工藝助劑在鍋爐水節水節能方面的應用 會議簡介 “十四五”規劃中提出&#xff0c;提高工業、能源領城智能化與信息化融合&#xff0c;明確“低碳經濟”新的戰略目標&a…

mac 安裝hbuilderx

下載 HBuilderX下載地址: 下載地址 選額mac版本點擊下載 安裝 如圖&#xff0c;將HBuilderX拖到Applications&#xff0c;才是正確的安裝姿勢。 MacOSX&#xff0c;軟件必須安裝到/Applications目錄&#xff0c;如未安裝到此目錄&#xff0c;可能會出現插件安裝失敗、項目創建…

基于BERTopic模型的中文文本主題聚類及可視化

文章目錄 BERTopic簡介模型加載地址文本加載數據處理BERTopic模型構建模型結果展示主題可視化總結BERTopic簡介 BERTopic論文地址:BERTopic: Neural topic modeling with a class-based TF-IDF procedure BERTopic是一種結合了預訓練模型BERT和主題建模的強大工具。它允許我…

Linux中的動靜態庫

目錄 一、靜態庫 &#xff08;1&#xff09;靜態庫的優缺點&#xff1a; &#xff08;2&#xff09;Linux下靜態庫的創建和執行 1.直接編譯?編輯 2.指定路徑和庫名 3.用LIBRARY_PATH環境變量來配置路徑 二、動態庫 &#xff08;1&#xff09;動態庫的優缺點 &#xff…

javaweb請求與響應

前言 前面介紹了對應的服務器端的相關代碼。這里開始學習服務器端與客戶端的數據請求與響應 這里的僅僅是一個簡單的調用&#xff0c;并沒有經過servelert接口來進行調用&#xff0c;同前面的一樣&#xff0c;我們介紹對應的本地服務器進行的部署項目。 代碼 //屬于簡單的不…

Java學習—線程的創建

Java 中的多線程是一種強大的機制&#xff0c;允許程序同時執行兩個或兩個以上的部分。這些同時執行的部分被稱為線程&#xff0c;它們可以使程序的執行更加高效&#xff0c;特別是在進行大量計算或等待資源&#xff08;比如網絡資源或文件系統&#xff09;時。Java 提供了在程…

Scratch 第十三課-飛機大戰游戲

第十三課-飛機大戰游戲 學習目標 這節課我們做一款大家都愛玩的飛機大戰游戲&#xff0c;學習重點&#xff1a; 如何導入外部角色如何讓飛機發射子彈鼠標控制角色移動 程序設計 程序分析 &#xff1a; 飛機大戰游戲相信很多小朋友都玩過&#xff0c;我方飛機在下方&#xf…