深度學(xué)習(xí)自然語言處理 原創(chuàng)
作者:cola
隨著ChatGPT的快速發(fā)展,基于Transformer的大型語言模型(LLM)為人工通用智能(AGI)鋪平了一條革命性的道路,并已應(yīng)用于知識庫、人機(jī)界面和動態(tài)代理等不同領(lǐng)域。然而,存在一個普遍的限制:當(dāng)前許多LLM受資源限制,主要是在較短的文本上進(jìn)行預(yù)訓(xùn)練,使它們對現(xiàn)實(shí)世界中常見的較長的上下文提示不太有效。本文對基于Transformer的LLM模型架構(gòu)的進(jìn)展進(jìn)行了全面的介紹。
介紹
近年來,利用深度學(xué)習(xí)的技術(shù),特別是BERT、GPT系列等基于Transformer的模型大量涌現(xiàn),NLP取得了顯著進(jìn)步,使機(jī)器能夠理解和生成人類語言,從而徹底改變了自然語言理解(NLU)中的許多任務(wù)(如情感分析),自然語言生成(NLG)(如文本摘要),以及其他領(lǐng)域,如計算機(jī)視覺和自動駕駛。此外,隨著ChatGPT、PaLM、GPT4等的出現(xiàn),基于Transformer的大型語言模型(LLMs)可擴(kuò)展到1B ~100B參數(shù)以增強(qiáng)涌現(xiàn)能力,已顯示出一條通向人工通用智能(AGI)的令人振奮的新道路,并迅速被大量人機(jī)交互應(yīng)用程序采用,如聊天機(jī)器人、編程助手和教育導(dǎo)師。
Transformer是一個深度神經(jīng)網(wǎng)絡(luò)模型,當(dāng)代LLM主要通過使用Transformer的全部或部分模塊來建立其基礎(chǔ)。其成功可歸因于核心的注意力機(jī)制,捕捉了整個輸入中每一對token的全局依賴關(guān)系,使模型能夠處理具有復(fù)雜關(guān)系的序列。雖然注意力機(jī)制提供了卓越的性能,但其關(guān)于輸入序列長度的二次時間和空間復(fù)雜性導(dǎo)致了顯著的計算資源瓶頸,不僅限制了訓(xùn)練期間允許的輸入文本長度,還由于效率不理想以及推理過程中生成的token增加而增加昂貴的內(nèi)存消耗,也限制了提示的有效上下文窗口。對推理來說更糟糕的是,當(dāng)面對比訓(xùn)練中的序列更長的序列時,LLM的性能也會下降,這是因?yàn)閷斎腴L度的可泛化機(jī)制設(shè)計較差。
然而,LLM在需要長上下文理解和生成的應(yīng)用,對能夠有效和高效地理解和生成極長序列的長上下文LLM的需求變得越來越不可或缺和迫切。因此,研究人員投入了大量精力來增強(qiáng)Transformer架構(gòu),以解決LLM中的長上下文問題,包括對注意力效率的優(yōu)化、具有額外記憶機(jī)制的上下文窗口擴(kuò)展、使用外推位置嵌入的有效長度泛化、上下文預(yù)處理/后處理和其他方法,如特定的預(yù)訓(xùn)練目標(biāo)、專家混合、量化、并行等。
概覽
我們從基本的語言建模目標(biāo)、典型的建模階段到基于Transformer的僅解碼器的LLM中的關(guān)鍵架構(gòu)模塊進(jìn)行初步介紹。簡要分析了LLM遇到廣泛的上下文窗口時的架構(gòu)限制。提出了一種全面的方法分類法,旨在通過架構(gòu)創(chuàng)新增強(qiáng)LLM的長上下文能力。
預(yù)備知識
語言建模
LLM的核心是語言建模,其目的是使神經(jīng)網(wǎng)絡(luò)能夠理解和生成人類語言。從數(shù)學(xué)的角度來看,神經(jīng)語言建模的本質(zhì)是近似任何給定文本出現(xiàn)的精確對數(shù)概率,記為,其中表示要學(xué)習(xí)的網(wǎng)絡(luò)參數(shù),由一系列表示自然語言的元素組成,包括單詞、標(biāo)點(diǎn)符號、數(shù)學(xué)符號等。然而,這項(xiàng)任務(wù)遇到了一個重要的實(shí)際障礙,稱為維數(shù)詛咒,它源于隨著的增加,可能性呈指數(shù)增長。為了避免,LLM采用掩碼語言建模(MLM)和因果語言建模(CLM)。
MLM是根據(jù)雙向剩余未掩碼token來預(yù)測掩碼token,其目標(biāo)可以寫成式1。在給定所有其他token的情況下,最大化第個標(biāo)記的條件概率,其中表示被掩碼的索引集。相比之下,CLM的目標(biāo)是預(yù)測下一個token,即在給定單向之前token的情況下,最大化每個token的條件概率(見公式2)。在這種設(shè)置中,因果LLM可以有效地利用自然語言序列中固有的時間依賴關(guān)系,使LLM能夠生成連貫和上下文相關(guān)的文本。
建模階段
LLM的操作通常經(jīng)歷多階段的建模過程。在預(yù)處理階段,原始文本數(shù)據(jù)通過BPE等算法被分割并標(biāo)記為單個token。然后,在預(yù)訓(xùn)練階段,以MLM或CLM為目標(biāo),在大量文本語料庫上訓(xùn)練模型,以捕獲自然語言的語義模式和語言結(jié)構(gòu)。預(yù)訓(xùn)練后,模型進(jìn)入微調(diào)階段,在此階段中,它會在特定任務(wù)的數(shù)據(jù)上進(jìn)一步訓(xùn)練。最后,將微調(diào)后的模型部署到下游場景中,以推理模式預(yù)測預(yù)期答案。在推理步驟中,模型通過一些解碼策略(如貪婪搜索、波束搜索、核采樣)從詞匯表的概率分布進(jìn)行預(yù)測,以逐個token的自回歸范式對提示生成上下文連貫的響應(yīng)。
解碼器塊
Transformer架構(gòu)主要由一個編碼器和一個解碼器組成,每個編碼器和解碼器都由多個相同的塊堆疊。每個塊的骨架與圖1(a)中所示的框架基本一致。一般來說,第一個塊將采用由詞嵌入層編碼的token化序列,然后是具有與特定語言建模目標(biāo)相對應(yīng)的注意力掩碼的多頭自注意力(MHA)層和前饋網(wǎng)絡(luò)(FFN)層。在塊的每個入口/出口,MHA層和FFN層都豐富了層歸一化和殘差連接。然后,每個更高級別的塊將前一個塊的輸出隱藏狀態(tài)作為輸入,用其MHA和FFN層表示它們,并將它們提供給下一個塊。最后一個塊的最終輸出隱藏狀態(tài)被送入一個稱為語言建模頭的線性層,輸出的logits將通過softmax操作轉(zhuǎn)換為目標(biāo)詞匯表上的概率分布。在編碼器-解碼器Transformer中,編碼器塊和解碼器塊之間的輕微區(qū)別是,后者在輸入FFN層之前,通過交叉注意力(CA)層與編碼器的輸出進(jìn)行連接。然而,這種結(jié)構(gòu)最初是為機(jī)器翻譯任務(wù)中的序列到序列建模而設(shè)計的。隨后,它產(chǎn)生了幾個變種,旨在更通用的語言建模目標(biāo),如MLM和CLM。BERT系列僅利用編碼器與MLM來增強(qiáng)雙向信息,作為判別模型。相反,GPT系列只使用CLM的解碼器,專注于單向生成模型。然而,T5和BART變體將每個NLP任務(wù)視為文本到文本的轉(zhuǎn)換,利用編碼器和解碼器。僅解碼器的生成模型架構(gòu)最近成為當(dāng)前LLM的主要選擇。如GPT4、PaLM、LLaMA和GLM等。
注意力機(jī)制
注意力機(jī)制作為在MHA層實(shí)現(xiàn)的Transformer的核心設(shè)計,根據(jù)輸入序列中每個token與任何其他token的相關(guān)性計算每個token的加權(quán)表示。如圖1 (a)所示,詞嵌入的token序列,連接了總長度為L的長上下文和用戶提示,將推導(dǎo)出三個具有線性投影層的嵌入矩陣(見公式3):query, key以及 value。然后,對于公式4中的注意力核操作,首先通過的矩陣乘法計算非歸一化的相關(guān)矩陣,其中每一項(xiàng)對應(yīng)token對的相關(guān)性。然后,歸一化注意力分?jǐn)?shù)矩陣通過縮放因子、的元素級掩碼操作、以及行級softmax計算而得。最后,輸出隱藏狀態(tài)是由的每一行注意力權(quán)重的加權(quán)和生成的,通常需要額外的線性變換。的嵌入維度可以不同,文中默認(rèn)。至于掩碼矩陣,它通常用于掩碼填充token,以對齊所有批量輸入序列,也適用于生成式LLM的因果語言建模的因果掩碼操作。此外,為了捕獲多樣化的關(guān)系,該模型通常采用多頭注意力而不是單頭注意力,通過將等可學(xué)習(xí)參數(shù)劃分為,以不同權(quán)重的集合并行執(zhí)行注意力過程,其中表示頭的數(shù)量。與嵌入維度類似,頭的數(shù)量可以是特定于。
位置嵌入
位置嵌入(PE)在Transformer中至關(guān)重要,特別是對于NLP任務(wù)。與循環(huán)神經(jīng)網(wǎng)絡(luò)(Rnn)不同,Transformer將輸入token作為詞袋并行處理,并且缺乏固有的序列順序感。為了保留順序信息,Transformer提出了一種新的正弦位置嵌入(SinPE)。如公式5所示,SinPE的每個維度中的每個條目都是基于sin、cos等三角函數(shù)推導(dǎo)出來的,周期相對于絕對token位置呈指數(shù)變化,其中base是一個大整數(shù),根據(jù)原始論文手動設(shè)置為10000,沒有進(jìn)一步解釋,d是隱藏狀態(tài)的單位嵌入維度。最近出現(xiàn)了一些變體,包括可訓(xùn)練的嵌入來學(xué)習(xí)嵌入映射和基于相對位置的相對嵌入。其中,Rotary PE (RoPE)對復(fù)數(shù)域進(jìn)行旋轉(zhuǎn)操作(見公式6),而不是基于絕對位置對Q、K進(jìn)行相加,與SinPE共享相同的基函數(shù)。根據(jù)Eq.7中描述的性質(zhì),不僅RoPEs保證q,k的大小,并且P中的每一對q, k,只會根據(jù)它們在序列中的相對距離標(biāo)記嵌入。
鍵值緩存
從狹義上講,鍵值(KV)緩存是一個張量列表,存儲每個塊的注意力層中所有先前token的k,v嵌入,在因果LLM的自回歸生成過程中使用和更新。如圖1(a)所示,在生成第一個token之前,所有KV緩存都被初始化為空,在進(jìn)行L個query和L個key的heave attention計算后,將被L個(key, value)對填充。然后,第一個生成的token也將被視為輸入,將整個序列擴(kuò)展為L+1個token。為了避免冗余計算,真正的輸入將只包含最新生成的token,從而派生出一個新的(query, key, value)三元組。
但是同樣的計算,新的query必須關(guān)注和應(yīng)用所有L+1個之前的鍵和值,因此新的(key,value)必須與存儲在KV緩存中的過去的L對連接,并將自己更新到它中以供下一個生成的令牌參與。但是,從廣義上講,我們可以將KV緩存視為LLM的內(nèi)存存儲,其占用隨著生成token的增加呈線性增長。
限制分析
注意力復(fù)雜度
通常的場景中,MHA的計算復(fù)雜度可以總結(jié)如下:它的時間復(fù)雜度為,包括投影的時間復(fù)雜度為,計算的時間復(fù)雜度為,獲得的softmax操作的時間復(fù)雜度為,和的乘法的時間復(fù)雜度為,輸出的時間復(fù)雜度為。它的空間復(fù)雜度為,包括嵌入的復(fù)雜度為,以及存儲權(quán)重和的額外空間復(fù)雜度為。時間和空間計算成本都隨著序列長度的擴(kuò)展呈二次增長,這對訓(xùn)練和推理都是負(fù)擔(dān)。
上下文存儲
LLM缺乏顯式的存儲機(jī)制,僅依賴KV緩存將之前所有token的表示存儲在一個列表中。這種設(shè)計意味著,一旦query在一次調(diào)用中完成,Transformer就不會在后續(xù)調(diào)用中保留或回憶任何先前的狀態(tài)或序列,因此,Transformer在每次調(diào)用期間只具有上下文中的工作記憶,而不是諸如長短期記憶(LSTM)等固有記憶機(jī)制。
最大長度約束
在訓(xùn)練階段,通常需要確定一個關(guān)鍵的超參數(shù)max-length,在本文中記為。這個超參數(shù)表示批次中任何訓(xùn)練樣本的序列長度上界。根據(jù)可用的計算資源,它通常被設(shè)置為1k、2k或4k,以避免GPU上的內(nèi)存不足(OOM)錯誤。然而,在推理過程中,LLM服務(wù)提供商還必須限制用戶提示的長度,或自動截斷它們以與預(yù)定義的對齊,即使推理資源通常比訓(xùn)練期間更豐富。然而,當(dāng)前的語言模型在處理超過的輸入序列時表現(xiàn)出明顯的性能下降,往往導(dǎo)致重復(fù)和不合理的輸出。
分類
根據(jù)各階段不同的提升LLM的長上下文能力方法,可分類為5大類,如圖1(b)所示:
高效注意力:這些方法專注于實(shí)現(xiàn)高效的注意力機(jī)制,減少計算需求,甚至實(shí)現(xiàn)線性復(fù)雜度。
長期記憶:一些方法旨在設(shè)計顯式記憶機(jī)制,以補(bǔ)償LLM中高效和有效的長期記憶的缺乏。
外推PEs:通過改進(jìn)現(xiàn)有位置編碼方案的外推特性來增強(qiáng)LLM的長度泛化能力。
上下文處理:這些方法通過引入多個調(diào)用開銷來確保每次調(diào)用中饋送到LLM的輸入始終滿足最大長度要求,并打破上下文窗口限制。
其他:不能完全歸入前四個類別的各種通用和有價值的方法。
高效注意力
局部注意力
傳統(tǒng)注意力機(jī)制的特點(diǎn)是其全局和完全注意力的性質(zhì),其中每個token都期望關(guān)注其他每個token,導(dǎo)致二次時間和空間復(fù)雜度。考慮到局部上下文在某些應(yīng)用中的重要性,近年來提出了各種方法來實(shí)現(xiàn)局部注意力機(jī)制。這些機(jī)制將每個token的注意力限制在其相鄰的token上,而不是所有token,這些方法之間的差異來自于確定誰是token鄰居的啟發(fā)式標(biāo)準(zhǔn),如圖2所示。
基于塊的注意力
實(shí)現(xiàn)局部注意力的一個簡單方法是將輸入序列分割為不重疊的塊。正如BlockBERT所提出的,在固定大小B的每個塊中,token只允許關(guān)注同一塊中的其他token。這種分塊注意力涉及在每個B×B塊中進(jìn)行LB迭代的完全注意力計算,導(dǎo)致時間復(fù)雜度為和內(nèi)存復(fù)雜度為。
然而,這種方法限制了全局感受野,并可能限制對長期依賴關(guān)系進(jìn)行建模的能力。為了解決這個限制,Bi-BloSAN引入了一種塊間注意力機(jī)制來捕獲長程依賴關(guān)系。SPADE增強(qiáng)了狀態(tài)空間模型(SSMs)以解決長程依賴限制。此外,Landmark Attention為每個塊引入了一個稱為Landmark token的新token,通過訓(xùn)練注意力機(jī)制使用它來選擇相關(guān)塊,從而實(shí)現(xiàn)塊級表示。在微調(diào)階段,LongLoRA在LoRA的基礎(chǔ)上引入了shift short attention (-Attn),將token移動一半的注意力頭中的塊大小,以確保相鄰塊之間的信息流動。
滑動窗口注意力
在這種方法中,每個token被分配一個連續(xù)的固定窗口,并且只允許關(guān)注前一個相鄰的w?L tokens作為它的鄰居。為了擴(kuò)展類似于擴(kuò)張卷積的感受野,窗口被擴(kuò)張為的間隙,使每個token能夠關(guān)注以外的token。為了在不進(jìn)行額外計算的情況下聚合全局信息,還將全局注意力應(yīng)用于一些預(yù)選位置,這些位置上有特殊標(biāo)記(如[CLS]),將計算復(fù)雜度降低到。
全局-局部混合注意力
ETC和LongT5也采用了類似的全局-局部注意力機(jī)制,顯式或隱式地構(gòu)建輔助全局tokens來表示全局注意力的分割信息,而只對源tokens應(yīng)用局部注意力。另一種有趣的全局token技術(shù)來自最近的streamLLM,他們觀察到不僅在推理期間保持初始token的KV可以在很大程度上恢復(fù)滑動窗口注意力的性能,而且在預(yù)訓(xùn)練期間添加占位符token也可以進(jìn)一步改善流部署。
LSH注意力
與直接位置鄰接相比,Reformer利用基于k-最近鄰(kNN)和局部敏感哈希(LSH)算法的鄰居token選擇機(jī)制。LSH注意力允許每個查詢關(guān)注單個哈希內(nèi)的一組鍵。哈希函數(shù)被設(shè)計為以高概率將相同的哈希值分配給兩個相似的向量,反之亦然。
層次注意力
要進(jìn)一步思考全局token技術(shù)或塊注意力,我們可以將它們視為向自注意力引入一些分層特征,以從更高級別的注意力中獲得更多的全局信息進(jìn)行補(bǔ)償,同時保持來自低級別局部注意力的低計算成本。
兩級層次結(jié)構(gòu)
HAN率先使用了兩級注意力機(jī)制。該方法首先將自注意力應(yīng)用于詞特征以獲得句子表示,然后利用句子級特征的自注意力生成文檔級特征。這種分層的方法提高了文檔分類的效率和性能。
多級層次結(jié)構(gòu)
BPT引入了更詳細(xì)的注意力機(jī)制。Token節(jié)點(diǎn)可以用于更近的上下文,也可以用于更遠(yuǎn)距離的上下文。這種方法將層次結(jié)構(gòu)形式化為圖神經(jīng)網(wǎng)絡(luò),并使用圖自注意力對其進(jìn)行更新。在自適應(yīng)Span Transformer中可以看到一種更簡單的變化,它采用軟注意力掩碼函數(shù),將相對距離非遞增地映射到[0,1]范圍內(nèi)的真實(shí)值。該函數(shù)控制每個頭部的注意力范圍,允許模型關(guān)注不同的上下文范圍。在假設(shè)的基礎(chǔ)上,許多NLP任務(wù)中的注意力矩陣具有層次低秩結(jié)構(gòu),H-Transformer-1D將注意力矩陣劃分為具有不同低秩范圍的不同塊,從而實(shí)現(xiàn)不同層次的逼近。
稀疏注意力
這些方法旨在引入一個稀疏注意力掩碼,記為,其中每一行分配一個稀疏索引集表示第個標(biāo)記要處理的對象。這些基于稀疏性的注意力機(jī)制既提供了計算效率,又提供了捕捉全局上下文信息的能力。圖3提供了這些稀疏注意力機(jī)制的可視化。
固定的稀疏注意力
從稀疏Transformer開始,它從CIFAR-10上學(xué)習(xí)的注意力模式中獲得靈感,并提出了一種行列分解注意力方案。這種方法保證了更快的計算,同時仍然保持全局上下文感知。形式上,它采用了一個選定的步幅,接近。每個查詢將一行注意力應(yīng)用于局部上下文信息(即局部注意力),另一列注意力總結(jié)以前的位置并將信息傳播到所有未來的標(biāo)記,類似于一種全局注意力。作者提供了兩種特定的行和列注意力模式,分別對應(yīng)于圖3 (c),(d)所示的步幅模式和固定模式。最近的LongNet通過引入擴(kuò)張注意力進(jìn)一步提高了計算效率,隨著token之間的距離增加,注意力領(lǐng)域呈指數(shù)級擴(kuò)展。它結(jié)合混合膨脹率來對長和短依賴關(guān)系進(jìn)行建模,最終將計算復(fù)雜度降低到,同時成功擴(kuò)展到多達(dá)10億個token的序列。
自適應(yīng)稀疏注意力
一些方法通過考慮嵌入值以一種可學(xué)習(xí)的方式自適應(yīng)地尋求稀疏度。Expire-Span為每個前一個token引入了一個在[0,1]范圍內(nèi)的可學(xué)習(xí)標(biāo)量,允許模型保留具有最重要信息的token,同時使不再相關(guān)的token過期,類似于基于LSTM的RNN中的遺忘門。Routing Transformer利用k均值聚類來識別Q, k中top-k個最相關(guān)的質(zhì)心向量,并將每個查詢分配給具有相同聚類成員的鍵,降低了注意力的總體復(fù)雜度。SparseBERT引入了一個使用Gumbel放松技術(shù)的可微注意力掩碼,允許模型學(xué)習(xí)按重要性指導(dǎo)注意力模式選擇。該算法引入了預(yù)定義的稀疏率,計算復(fù)雜度為。
近似注意力
一些研究還探索了注意力核計算背后的數(shù)學(xué)本質(zhì)。這些研究使用基于注意力矩陣的稀疏性或低秩特性的估計方法,以線性復(fù)雜度來近似注意力。之前我們沒有區(qū)分這些方法是用于類BERT的編碼器型LLM還是類GPT的解碼器型LLM,因?yàn)樗鼈冎械拇蠖鄶?shù)可以通過因果注意力掩碼從BERT設(shè)置輕松轉(zhuǎn)移到GPT設(shè)置。然而,對于許多近似策略來說,隨意的掩碼往往不是那么簡單。因此,我們首先定義了公式8中的廣義加權(quán)因果函數(shù),其中表示每行的權(quán)重向量。該函數(shù)將替代因果注意力掩碼操作,因此為了簡化,我們在下面的所有注意力方程中省略掩碼M。
低秩近似
Linformer使用奇異值分解(SVD)用低秩矩陣來近似注意力矩陣。該方法涉及維數(shù)的兩個可學(xué)習(xí)投影矩陣和,其中。該過程包括分別用,投影,,然后用投影的在上進(jìn)行標(biāo)準(zhǔn)MHA。這種低秩技術(shù)以線性復(fù)雜度逼近全注意力,同時允許誤差。
嵌套的注意力
Luna將注意力核解耦為兩種嵌套的注意力方法,這兩種方法相對于L都具有線性復(fù)雜度。具體來說,首先將pack attention作為公式9,得到打包的上下文,其中是一個額外的輸入序列,長度k?L,激活函數(shù)為指數(shù)線性單元。然后將unpack attention應(yīng)用于公式10,得到解包的輸出。然后,他們將和傳遞到下一個注意力層,仍然記為和,通過傳播打包的上下文信息,而不會泄露未來的信息。
核近似
除了依賴于低秩先驗(yàn),一些工作基于廣義可核注意力(generalized kernelizable attention)提供近似,如公式11所示,其中核函數(shù)逐行應(yīng)用于中的每一對,是公式12中定義的歸一化因子。Linear Transformer基于elu核設(shè)計了一個簡單的特征映射,如公式13所示。因此,它避免了二次注意力矩陣,將時空復(fù)雜度降低到和。Performer基于正交隨機(jī)特征(ORFs)映射實(shí)現(xiàn)無偏低方差估計,如公式14所示,其中是基函數(shù),是范數(shù)函數(shù),是正交隨機(jī)特征,采樣自分布。
稀疏-核混合近似
Scatterbrain通過將基于LSH的稀疏矩陣和低秩核分解與隨機(jī)特征圖相結(jié)合,提供了更準(zhǔn)確而有效的近似,如公式15中簡化的那樣,其中我們省略了歸一化步驟和因果掩膜應(yīng)用函數(shù)。該方法不僅統(tǒng)一了兩種近似技術(shù),以更高的精度實(shí)現(xiàn)了O(Lrd)的線性時間復(fù)雜度,而且還提供了靈活性,可以利用各種低秩和稀疏近似方法作為子組件。
IO感知注意力
基于注意力矩陣和NLP任務(wù)的一些理論或經(jīng)驗(yàn)屬性,包括局部性、稀疏性、低秩性和其他啟發(fā)式或數(shù)學(xué)技巧,上述所有追求高效注意力的方法都可以被認(rèn)為是高注意力質(zhì)量與低計算復(fù)雜度的權(quán)衡。相比之下,以下這些IO感知注意力機(jī)制統(tǒng)稱為通過考慮內(nèi)存瓶頸而優(yōu)化注意力計算的努力,同時保留注意力核計算的準(zhǔn)確性。
內(nèi)存高效的注意力
這種簡單的方法在利用lazy softmax算法,通過順序處理每個單個/分塊查詢注意力,跟蹤歸一化因子來計算標(biāo)準(zhǔn)的和數(shù)字穩(wěn)定的注意力。該方法只需對序列長度保持恒定的工作記憶,時間復(fù)雜度為二次型。
Flash注意力
Flash Attention通過使其在GPU高帶寬內(nèi)存(HBM)和GPU片上SRAM之間實(shí)現(xiàn)IO感知,在應(yīng)用精確注意力計算的同時設(shè)法減少時間和內(nèi)存消耗。它已經(jīng)被廣泛采用,并直接合并到Pytorch v2.0中。更具體地說,對于前向傳遞,它利用分塊技術(shù)將大型softmax注意力分解為更小的塊,從HBM逐塊加載到SRAM,從而在芯片上執(zhí)行所有注意力計算步驟以減少HBM訪問,并通過縮放增量更新輸出回HBM。如公式16所示,表示一對基于塊從Q和K的矩陣乘法,小到可以加載在SRAM和計算,以及重新調(diào)節(jié)因子只包含一些關(guān)于的統(tǒng)計數(shù)據(jù)。
SCFA
雖然Flash注意力可以很容易地擴(kuò)展到支持塊稀疏結(jié)構(gòu),但在處理其他不規(guī)則結(jié)構(gòu)和任意注意力掩碼的稀疏策略時可能缺乏靈活性。SCFA的工作擴(kuò)展了Flash Attention GPU內(nèi)核,以適應(yīng)廣泛的注意力稀疏模式,包括key/query刪除和像Reformer這樣的基于哈希的注意力。
頁注意力
由于碎片化和冗余而造成的內(nèi)存浪費(fèi),研究人員提出了頁注意力。該技術(shù)有效地管理KV高速緩存以減少浪費(fèi),并允許在批請求之間靈活共享,靈感來自虛擬內(nèi)存操作系統(tǒng)中的內(nèi)存分頁技術(shù)。
長期記憶
研究人員探索了兩種主要途徑來解決Transformer難以捕獲長期依賴這一挑戰(zhàn),同時又不損害全注意力的優(yōu)勢。一種方法是通過合并可通過注意力層訪問的內(nèi)部內(nèi)存緩存,將循環(huán)機(jī)制引入注意力。這種方法使模型能夠在較長的序列中維護(hù)和檢索信息,補(bǔ)償內(nèi)置長期記憶的固有缺乏。另一種方法涉及利用現(xiàn)有模型作為外部知識庫(如特定文檔或數(shù)據(jù)集)的接口。在推理過程中,模型可以從這些知識庫中讀取內(nèi)容以豐富上下文輸入,并從用戶的響應(yīng)中寫入內(nèi)容以刷新其長期記憶。通過這種方式整合外部知識,模型獲得了更廣泛的上下文,增強(qiáng)了其有效處理長期依賴關(guān)系的能力。
內(nèi)部內(nèi)存緩存
將長文本劃分為固定長度的片段流,并在第n層中利用更多的上下文信息增強(qiáng)當(dāng)前第個片段的查詢。這些上下文信息是從緩存中獲得的,或從前一段提取的信息,存儲在內(nèi)存緩存中,記為,如公式17所示。我們假設(shè)每個片段都具有相同的長度,模型由層Transformer塊組成。符號表示沿長度維度的拼接操作。
段級重現(xiàn)
從Transformer-XL開始,引入了段級重現(xiàn)(Segment-Level Recurrence)。如公式18所示,它在最后一層緩存?zhèn)€之前連續(xù)段的輸出,并將它們連接到當(dāng)前層的當(dāng)前段,以擴(kuò)展當(dāng)前查詢的上下文。這種機(jī)制允許將最大可能的依賴距離擴(kuò)展到,其中可以在GPU內(nèi)存允許的范圍內(nèi)設(shè)置。Segatron通過結(jié)合句子級甚至段落級來增強(qiáng)token級PEs,引入了段感知機(jī)制。為了進(jìn)一步擴(kuò)展多粒度內(nèi)存緩存的依賴性,Transformer與Transformer-XL一樣,為前面的段存儲第一個FIFO細(xì)粒度內(nèi)存隊(duì)列。然而,它并沒有丟棄舊內(nèi)存,而是應(yīng)用了速率為的壓縮函數(shù),沿著長度維度壓縮內(nèi)存,并將其放入大小為的二級FIFO粗粒度壓縮內(nèi)存隊(duì)列中,如式19所示。
回溯重現(xiàn)
為了解決最大有效上下文長度受到的限制這個問題,ERNIE-Do提出了一種增強(qiáng)的遞歸機(jī)制,通過連接同一層(而不是最后一層)中前一段的輸出隱藏狀態(tài)來進(jìn)行替換,簡單地形式化為式21。通過這種方式,不僅可以隱式地擴(kuò)展最大有效上下文長度,而且還可以利用過去的高級表示來豐富未來的低級表示。此外,它通過兩次饋送片段采用回溯饋機(jī)制,其中第一次僅瀏覽每個片段,而第二次回溯以實(shí)現(xiàn)雙向信息流,這類似于READTWICE中的機(jī)制。
連續(xù)信號內(nèi)存
為了與LSTM進(jìn)行比較,我們可以將Transformer中的壓縮記憶視為LSTM中長期單元記憶的有限尺寸離散版本,而第一個隊(duì)列存儲短期單元記憶。如等式20所示,為了實(shí)現(xiàn)像LSTM一樣的無界長期記憶,former將離散嵌入轉(zhuǎn)換為連續(xù)信號。該信號表示為個徑向基函數(shù)(RBFs)的線性組合,記為,系數(shù)矩陣,由多元嶺回歸擬合。這種連續(xù)的信號表示允許具有固定內(nèi)存存儲的無界上下文表示,與上下文長度無關(guān),類似于LSTM。然而,由于內(nèi)存緩存是作為連續(xù)信號存儲的,它不能簡單地添加到當(dāng)前段,而必須通過持續(xù)注意力轉(zhuǎn)換回嵌入。
備用緩存設(shè)計
除了遵循作為內(nèi)存緩存的Mem的前置樣式外,RMT將內(nèi)存緩存形式化為特殊的tokens,在每個段的開始和結(jié)束處都有前綴,如等式22所示。在處理每個段之后,讀/寫標(biāo)記將從輸出嵌入中分離出來,寫標(biāo)記將被作為下一個段的[mem]標(biāo)記。通過將這種遞歸機(jī)制與全局記憶標(biāo)記相結(jié)合,RMT被證明可以將有效的上下文大小擴(kuò)展到1M tokens。此外,他們沒有使用簡單的FIFO緩存來讀取內(nèi)存,而是使用KNN算法來為每個查詢檢索top-k個最相似的(key,value)對,并將其添加到本地查詢的前面,如等式23所示。相比之下,Memformer充分利用具有遺忘機(jī)制的自注意力變體來讀寫記憶緩存,以通過長程時間步檢索和保留最重要的信息。
外部記憶庫
前面討論的機(jī)制通過在內(nèi)部內(nèi)存緩存中添加先前輸入的額外隱藏狀態(tài),用順序遞歸增強(qiáng)了普通的無狀態(tài)轉(zhuǎn)換器模型。然而,這些機(jī)制有一定的缺點(diǎn)。首先,記憶機(jī)制的輕微變化可能需要從頭開始重新訓(xùn)練模型,而不是充分利用預(yù)訓(xùn)練的LLM,這些LLM已經(jīng)具有跨上下文窗口的良好依賴性表示。其次,研究人員經(jīng)常遇到內(nèi)存陳舊的問題,在訓(xùn)練期間,內(nèi)存緩存中較舊的隱藏狀態(tài)可能會表現(xiàn)出與最新狀態(tài)的分布變化,限制了內(nèi)存增強(qiáng)的有效性。
另一種檢索增強(qiáng)機(jī)制將模型本身與其長期記憶存儲解耦可以解決這些問題。它們利用語言頭之前的部分作為性能良好的上下文信息編碼器,以嵌入的形式將長序列存儲為外部記憶庫。在查詢過程中,模型根據(jù)一定的標(biāo)準(zhǔn)從該記憶庫中檢索信息,并將其實(shí)時連接組成上下文工作記憶。
基于cosine的檢索準(zhǔn)則
LangChain是一個熱門的開源框架,用于開發(fā)像聊天機(jī)器人這樣的應(yīng)用程序,它接受用戶指定的通用可讀格式的本地文檔,然后使用現(xiàn)成的LLM將該文檔向量化到內(nèi)存庫中。在每次用戶交互過程中,根據(jù)用戶提示嵌入與存儲上下文的點(diǎn)積余弦相似度檢索最相關(guān)的上下文。然后,它將這些外部上下文前置到提示,為LLM提供更相關(guān)的輸入以生成響應(yīng)。
啟發(fā)式檢索準(zhǔn)則
RETRO通過基于L2距離的KNN搜索從嵌入BERT的KV記憶庫中檢索。Unlimiformer也基于KNN搜索,為任何現(xiàn)有的預(yù)訓(xùn)練編碼器-解碼器Transformer設(shè)計了一種通用方法,以索引無限的輸入序列,使解碼器檢索其top-k鍵,以應(yīng)用交叉注意力。相比而言,SiliconFriend提出了一種增強(qiáng)的記憶庫機(jī)制,以保持對與用戶的長聊天歷史的跟蹤,并提供專門的響應(yīng),包括帶有時間戳的對話記錄、將事件提煉為高級摘要、對用戶個性畫像的感知以及以遺忘速度的記憶刷新。與這種基于文本的記憶類似,RecurrentGPT通過模擬LSTM中的長短期記憶機(jī)制,使循環(huán)提示成為可能,并使用ChatGPT定義循環(huán)計算圖。此外,RecallM將記憶組織和更新為動態(tài)概念感知的知識圖譜,以改進(jìn)聊天過程中更復(fù)雜的持續(xù)學(xué)習(xí)和知識的時間推理。Ret-LLM以三元組的形式從內(nèi)存庫中存儲和檢索知識,就像?A, B, R?,這意味著“A和B具有R的關(guān)系”,作為一個通用讀寫內(nèi)存單元,并采用微調(diào)的Alpaca將內(nèi)存讀寫視為基于文本的API調(diào)用。
可學(xué)習(xí)的檢索準(zhǔn)則
REALM使用MLM作為學(xué)習(xí)信號預(yù)訓(xùn)練了一個潛在的神經(jīng)知識檢索器,負(fù)責(zé)從大型文本語料庫中檢索知識。LongMem訓(xùn)練另一個基于Transformer的SideNet,以將記憶檢索和融合過程與只負(fù)責(zé)將(key,value)對編碼到記憶庫的預(yù)訓(xùn)練LLM解耦。
外推PEs
增強(qiáng)理解
再思考PEs作為
研究人員重新審視了正弦PE和RoPE的正弦和余弦基函數(shù),認(rèn)為它們是β編碼的近似項(xiàng),如式24所示。這種方法采用了個固定的β位,其中base表示三角基函數(shù)的波長或周期的冪基,它隨著維的加深而以幾何級數(shù)增加。
長度外推困境
在Transformer時代之前,基于RNN的語言模型是在較短的序列上訓(xùn)練的,但被期望有效地泛化到較長的上下文,這種現(xiàn)象被稱為長度外推或長度泛化。不幸的是,最近的研突出了基于Transformer的語言模型的長度外推能力有重大缺陷。在Transformer的原始論文中,很少討論其正弦PE的設(shè)計見解或理論解釋。這使得許多研究人員對其必要性和有效性提出了質(zhì)疑,特別是將其歸咎于外推不足,這也指向了同樣基于三角函數(shù)的RoPE。為理解當(dāng)前三角PEs造成的糟糕外推,從以下兩個不同的角度研究和總結(jié)了兩個見解:
從數(shù)學(xué)的角度來看,外推(extrapolation),即從局部信息推斷出整體,依賴于函數(shù)的高階平滑性。然而,為了容納足夠的位置信息,這些PEs被設(shè)計為高頻振蕩三角基函數(shù)的組合。這種選擇使模型在訓(xùn)練階段不進(jìn)行特定學(xué)習(xí)的情況下進(jìn)行泛化具有挑戰(zhàn)性。
從訓(xùn)練的角度來看,由于基函數(shù)的波長或周期呈指數(shù)增長,與成正比,目前支持的約束下的訓(xùn)練樣本通常太短,以至于后面的低頻維度無法跨度整個周期。這表明只有少數(shù)維度感知到完整的周期性信息,從而得到充分的外推訓(xùn)練,邊界在中被定義為關(guān)鍵維度。因此,當(dāng)依賴于這些學(xué)習(xí)較差的低頻成分時,直接外推很容易失敗。
注意力偏差
作為顯式編碼位置信息的替代機(jī)制,注意力偏差已被探索,以捕獲融入注意力的自然語言的時序性。如式所示,注意力偏差被描述為一個矩陣,記為,在應(yīng)用softmax操作之前,將其添加到未歸一化的注意力權(quán)重矩陣中。該矩陣的每個元素由索引,攜帶由函數(shù)編碼的位置信息。因此,將注意力偏差視為一種相對PEs的形式是合理的。早期的方法如T5采用了可學(xué)習(xí)的注意力偏差,其每個注意力層中的每個頭都是獨(dú)立的。然而,也沒有明確解決長度外推的問題。認(rèn)識和解決外推問題的突破來自于ALiBi,其啟發(fā)式地引入了消極因果注意偏差,如式26所示,其中是訓(xùn)練前固定的頭部特定斜率,并隨著頭部指數(shù)呈幾何下降。之后KERPLE將ALiBi注意力偏差作為一個復(fù)合三角核擴(kuò)展到自注意力。引入了兩個額外的可學(xué)習(xí)標(biāo)量參數(shù)來泛化偏置核,如式27所示。Sandwich的作者重用了正弦PEs來形成RoPE風(fēng)格的注意力偏差,如公式28所示,作為一個要調(diào)整的超參數(shù)。研究人員研究的另一種方法在推理過程中使用了超基線方法,如式29所示。該方法依賴于局部因果注意力掩碼,其中每個query都關(guān)注距離不超過的key,同時仍然應(yīng)用RoPE。
擴(kuò)展RoPE
縮放策略
最近的方法通過簡單地擴(kuò)展RoPE來推斷推理上下文長度,而很少或不進(jìn)行微。在LEX中,作者引入了一種稱為XPOS的擴(kuò)展因果RoPE,它在縮放繩中包含了一個額外的指數(shù)衰減項(xiàng),如式30所示,其中是一個標(biāo)量超參數(shù)。位置插值(PI對每個位置數(shù)從到進(jìn)行線性縮放,使表示空間密集,使最遠(yuǎn)長度邊界擴(kuò)展了1次(見式31)。
NTKaware Scaling RoPE(NTK-RoPE)結(jié)合了高頻外推和低頻插值。當(dāng)對最低頻率項(xiàng)應(yīng)用的比值進(jìn)行插值時,它使用系數(shù)來縮放,以達(dá)到相同的效果,而對高頻項(xiàng)保持縮放(見式32)。令人驚訝的是,這種非線性縮放可以直接應(yīng)用于用RoPE預(yù)訓(xùn)練的LLM,如Llama無需任何進(jìn)一步的微調(diào)來擴(kuò)展上下文長度邊界。這種方法已經(jīng)部署在開源LLM中,如CodeLlama。
受NTK-RoPE的啟發(fā),出現(xiàn)了幾種增強(qiáng)的縮放方法。為了避免L仍然在“最大長度”內(nèi)時性能下降,Dynamic-NTK延遲應(yīng)用縮放技巧,直到L超過當(dāng)前支持的上下文長度。隨著L的增大,κ的比值逐漸動態(tài)增大。這一想法也已在Qwen-7B和Llama2等模型中實(shí)現(xiàn)。NTK-RoPE的作者還提出了YaRN,它將NTK-by-parts與“長度縮放”技巧相結(jié)合,通過恒定的溫度因子縮放和。這種方法聲稱優(yōu)于之前所有基于NTK-RoPE的方法,無論是否進(jìn)行微調(diào)。此外,Giraffe引入了另一種縮放策略,稱為“功率縮放”(見式33)。這種方法確保基中的高頻元素比學(xué)習(xí)不良的低頻元素受影響更小。
截斷策略
研究人員基于NTK-RoPE的高頻外推和低頻內(nèi)插思想提出了兩種簡單的截斷策略,分別以激活函數(shù)整流線性單元(ReLU)及其Leaky變體命名為ReRoPE和Leaky ReRoPE。如式34所示,這種修正截斷方法背后的主要思想是設(shè)置一個大小為w的局部窗口,對于每個標(biāo)記,只要要參加的標(biāo)記在窗口內(nèi),就不應(yīng)用縮放。然而,線性縮放,類似于Leaky ReLU,用于在令牌位于窗口外時增加步驟的位置(LeakyReRoPE)。該方法更直接地結(jié)合了高頻外推和低頻插值,并確保了通過仔細(xì)調(diào)整和而不超過。此外,如果設(shè)置為無窮大,它對任何對施加一個恒定的位置數(shù),只要,就可能容納無限的上下文(ReRoPE)。
根據(jù)實(shí)驗(yàn),ReRoPE在沒有對困惑度指標(biāo)和QA任務(wù)進(jìn)行任何微調(diào)的情況下表現(xiàn)非常好,甚至優(yōu)于基于NTX的方案。然而,Leaky ReRoPE和ReRoPE都涉及到連接兩個縮放階段,并且它們之間的差距無法通過任何線性變換來彌補(bǔ)。因此,它們需要為每個階段進(jìn)行兩個注意力矩陣計算,并利用一個布爾矩陣將它們縫合在一起,顯著增加了推理成本并限制了實(shí)際長度邊界。更糟糕的是,它們目前無法與Flash Attention兼容來減輕高計算成本。為了使ReRoPE與Flash Attention相適應(yīng),我們重新實(shí)現(xiàn)了Flash Attention前向內(nèi)核,以基于Triton框架合并ReRoPE,在一定程度上緩解了其高計算成本。此外,Giraffe引入了另一種截斷策略,即基截斷,如式35所示,其中,是截止閾值。該方法在保留基的高頻成分的同時,將低頻元素截斷為接近零的常數(shù),甚至在足夠低的情況下為零,從而降低了低頻元素的外推復(fù)雜度。
重排策略
靠后位置的PEs比前面位置嵌入的更新次數(shù)少,這種不平衡可能導(dǎo)致訓(xùn)練不當(dāng)?shù)那度搿=陙恚恍┖唵味行У墓ぷ髟谝欢ǔ潭壬辖鉀Q了這一問題。SHAP在訓(xùn)練過程中隨機(jī)移動絕對位置以實(shí)現(xiàn)移位不變性。Random Padding涉及在微調(diào)期間將隨機(jī)數(shù)量的填充標(biāo)記移動到輸入序列的前端,平衡所有位置的更新時間。PoSE通過在訓(xùn)練樣本的位置索引(例如2k)中添加一個獨(dú)特的跳躍偏差項(xiàng)來微調(diào)模型以適應(yīng)目標(biāo)上下文窗口的所有相對位置(例如128k),以模擬更長的輸入。
上下文處理
之前討論的許多方法都圍繞Transformer架構(gòu)中的注意力模塊提出了復(fù)雜的設(shè)計,相比之下,存在更簡單和更直接的方法,將預(yù)訓(xùn)練的LLM視為黑盒或灰盒模型。這些方法通過多次調(diào)用模型來解決處理超過模型長度限制的長上下文輸入的挑戰(zhàn),確保每次調(diào)用中提供給LLM的實(shí)際輸入不超過。雖然這些方法沒有顯式地增強(qiáng)LLM處理長上下文的固有能力,但它們利用LLM卓越的上下文學(xué)習(xí)能力來解決問題,盡管代價是計算量增加和可能不那么精確的答案。
上下文選擇
這些方法主要涉及將冗長的文本劃分為多個片段,然后根據(jù)預(yù)定義的策略選擇特定的片段。目標(biāo)是確保選擇的片段可以舒適地適合LLM的上下文窗口,同時最大限度地減少與所提出的query相關(guān)的原始冗長文本中的相關(guān)信息的損失。
這些方法在兩個關(guān)鍵方面有所不同。首先,它們在如何定義選擇標(biāo)準(zhǔn)方面存在分歧,這些標(biāo)準(zhǔn)用于為每個片段分配優(yōu)先級分?jǐn)?shù)。其次,它們的選擇策略各不相同,有些方法是基于所有片段的分?jǐn)?shù)同時排序,而其他方法采用迭代的貪婪選擇方法,逐個考慮片段。當(dāng)檢索到的上下文長度超過LLM的最大上下文長度時,LangChai采用三種策略進(jìn)行處理。一種策略是Map Rerank,其中LLM需要獨(dú)立地輸出每個段的答案,以及置信度分?jǐn)?shù)。具有最高置信度分?jǐn)?shù)的答案被選擇為最終輸出。CogLTX引入了一種稱為MemRecall的多步驟推理機(jī)制。在每個推理步驟中,依次使用兩個模型以由粗到細(xì)的方式對上下文片段進(jìn)行評分。得分最高的前k個片段被添加到最終的候選隊(duì)列,而剩余的片段被推遲到下一個推理步驟,直到候選隊(duì)列被填滿。相比之下,LoBART在訓(xùn)練過程中使用ROUGE-2分?jǐn)?shù)來選擇top-k上下文。在推理方面,它訓(xùn)練了一個額外的分層RNN模型,以生成上下文選擇的代理優(yōu)先分?jǐn)?shù)。
上下文聚合
與基于選擇的方法相比,這種性質(zhì)的方法考慮了所有上下文片段對最終答案的貢獻(xiàn),而不是只選擇一個。最初,這些方法分別從每個片段中提取相關(guān)信息。然后采用多種融合策略對檢索到的信息進(jìn)行融合,最終得到最終答案。這些方法在兩個關(guān)鍵方面表現(xiàn)出差異。第一種涉及從每個段中提取信息的方式,而第二種涉及用于整合所有段信息的不同融合策略。在像T5和BART這樣的編碼器-解碼器架構(gòu)LLM的背景下,存在一類稱為FiD的方法。這些方法既利用編碼器來提取嵌入隱藏狀態(tài)形式的信息,又利用解碼器來處理所有上下文表示,以生成最終輸出。
對于只有解碼器的LLM,除了稱為Map ReRank的選擇策略外,LangChain還引入了兩種額外的聚合技術(shù)。第一種稱為Map Reduce,即同時處理每個數(shù)據(jù)段以并行獲取答案。然后將這些答案傳遞給另一個LLM,后者將它們合成為最終的總結(jié)。第二種方法稱為Refine,通過在每個段的處理過程中逐步細(xì)化答案來操作。在該策略中,前一段得到的答案與當(dāng)前段進(jìn)行級聯(lián),作為進(jìn)一步細(xì)化的提示。這個迭代求精過程持續(xù)進(jìn)行,直到處理完最后一個片段。
除了LangChain,另一種最近的方法PCW采用類似的方法來處理長上下文輸入。PCW將擴(kuò)展的上下文劃分為多個較小的上下文窗口,每個上下文窗口的最大長度為,其中表示上下文的總長度,為query中與任務(wù)相關(guān)的token的長度,以及要生成的新token的最大數(shù)量。在每個上下文窗口中,tokens并行地相互關(guān)注,其位置索引隔離在的范圍內(nèi)。隨后,與任務(wù)相關(guān)的tokens處理所有上下文tokens。該過程聚合來自每個上下文窗口的并行信息,并對其進(jìn)行融合以生成最終答案。
研究人員提出的另一種方法NBCE將并行上下文窗口視為一系列獨(dú)立的條件,記為,旨在逼近對數(shù)后驗(yàn)概率,用于生成token。正如在公式36中推導(dǎo)的,表示以第個上下文窗口為條件的可能性,表示先驗(yàn),而const是一個僅依賴于。如果可以訪問LLM的logit,則使用LLM可以直接計算此公式。將公式擴(kuò)展到更一般的情況,如式37所示,引入了超參數(shù)和池化操作。NBCE和PCW可以無縫應(yīng)用于任何現(xiàn)成的開放訪問LLM,顯著擴(kuò)展上下文長度。然而,需要注意的是,這兩種方法的運(yùn)行都假設(shè)上下文窗口之間的關(guān)系可以忽略不計,并且可以以無序的方式統(tǒng)一處理。因此,當(dāng)上下文窗口緊密連接且表現(xiàn)出順序關(guān)系時,或者當(dāng)需要并行處理的窗口數(shù)量過多時,它們的性能可能會受到影響。
其他
本節(jié)簡要擴(kuò)展了前面討論的四個類別的其他解決方案,為推進(jìn)LLM的有效上下文窗口或利用現(xiàn)有LLM時的效率提供了更廣泛的視角。重要的是要注意,這里介紹的文獻(xiàn)可能不是詳盡的,也不是為基于transformer的模型量身定做的。事實(shí)上,這些技術(shù)中的許多都普遍適用于任何配備了深度神經(jīng)網(wǎng)絡(luò)的模型,盡管它們對LLM尤其關(guān)鍵。
特定目標(biāo)
這些方法有替代損失函數(shù)、附加術(shù)語和專門的預(yù)處理技術(shù)。例如,XLNet引入了一個在各種NLP任務(wù)中表現(xiàn)出色的置換目標(biāo)。ERNIE-Doc將此方法擴(kuò)展到長文檔,并以分段重排為目標(biāo),以建模長程關(guān)系。對于摘要任務(wù),DANCE采用分治的預(yù)處理策略,將長文檔及其摘要分解為多個源-目標(biāo)對。PEGASUS引入了用于生成摘要的間隙句子生成(GSG)目標(biāo),而PRIMERA使用實(shí)體金字塔方法將其擴(kuò)展到多文檔。
混合專家。
混合專家(MoE)的概念通過將密集的FFN層替換為包含多個專家的MoE層,對巨型LLM進(jìn)行了增強(qiáng)。每個專家擅長處理特定的輸入類型或任務(wù),動態(tài)門控機(jī)制安排為給定輸入選擇最合適的專家。該方法可以以各種方式實(shí)現(xiàn),包括采用針對特定任務(wù)優(yōu)化的專家模塊,利用稀疏激活并將其分片到多個設(shè)備,以及通過訓(xùn)練自適應(yīng)混合權(quán)重以確定每個專家的貢獻(xiàn),如Soft MoE。然后,路由機(jī)制負(fù)責(zé)根據(jù)門限值為每個令牌選擇top-k專家。然而,在Switch Transformer中,他們發(fā)現(xiàn)設(shè)置k=1,稱為交換機(jī)路由,可以在保持模型質(zhì)量的同時減少路由計算。最后,通過對這些專家的貢獻(xiàn)進(jìn)行加權(quán)求和得到輸出。MoE技術(shù)可以顯著增強(qiáng)建模的通用性,減少計算需求,提高大規(guī)模上下文建模的效率和效果。
并行性
利用節(jié)點(diǎn)內(nèi)和節(jié)點(diǎn)間的現(xiàn)代聚合GPU內(nèi)存,最近的研究引入了各種并行策略來擴(kuò)大模型大小和擴(kuò)展序列長度。對常用的并行化范式進(jìn)行簡要介紹如下:
數(shù)據(jù)并行:廣泛集成到PyTorch中,是在多個設(shè)備上以分布式方式加速訓(xùn)練的最常用方法。它在每個設(shè)備上復(fù)制模型以獨(dú)立生成梯度,并在每次迭代時傳遞它們以保持一致性。
張量并行:引入張量拆分,其中模型的各個層被水平劃分到多個設(shè)備上。
管道并行:將模型層沿批次維度垂直分割為不同設(shè)備上的不同微批次分區(qū)。每個設(shè)備以流水線方式處理從前一個設(shè)備接收到的一個微批。
序列并行:將輸入序列劃分為多個塊,并將每個塊提供給相應(yīng)的設(shè)備。它融入了環(huán)形通信來計算注意力輸出。
專家并行:在MoE中,將不同的專家放在不同的GPU上并行執(zhí)行。
其中前三種并行同時使用稱為3D并行,它可以有效地將模型擴(kuò)展到數(shù)萬億參數(shù)。但3D并行主要是為更大的模型尺寸而不是更長的序列設(shè)計的。為了訓(xùn)練具有長序列的大規(guī)模模型,將前四種并行集成到4D并行中是一種很有前途的方法。
備用內(nèi)存高效推理
已經(jīng)開發(fā)了其他方法,以提高基于Transformer的LLM在推理過程中的存儲效率。這些方法包括權(quán)重剪枝、權(quán)重因子分解、權(quán)重量化、權(quán)重劃分和知識蒸餾。其中,量化策略對于LLM的實(shí)際部署尤其重要,因?yàn)樗鼈兘档土藚?shù)精度,以減輕內(nèi)存需求和加速推理。此外,還有更簡單的策略來緩解推理期間的大型KV緩存,如Multi-Query注意力(MQA)和GroupedQuery注意力(GQA)。特別是,它們減少了key和value的頭數(shù)量,并在多個查詢頭之間平均共享它們。據(jù)我們所知,這些方法已經(jīng)應(yīng)用于最先進(jìn)的LLM,如GLM和PaLM。
評估的必要性&優(yōu)化工具
在本節(jié)中,我們探討了評估LLM的長上下文能力常用的評估必要性,包括數(shù)據(jù)集、指標(biāo)和基線模型。此外,還研究了幾個流行的優(yōu)化工具包,如庫、系統(tǒng)和編譯器,旨在提高LLM在整個開發(fā)階段的效率和有效性。
數(shù)據(jù)集
數(shù)據(jù)集的詳細(xì)信息如表1所示,包括語言、任務(wù)類型、長度統(tǒng)計、質(zhì)量、分片、文件大小、樣本數(shù)量和格式。
指標(biāo)
本節(jié)簡要總結(jié)了之前分類的10種NLP任務(wù)類型中常用的9類通用評估指標(biāo)。每個任務(wù)的詳細(xì)指標(biāo)如表2所示。
基線
在本部分中,收集了文獻(xiàn)中經(jīng)常使用的預(yù)訓(xùn)練或微調(diào)的LLM,作為評估某些下游任務(wù)中的長上下文能力的基線。本文概述了這些模型的基本信息(名稱、基本架構(gòu)、Lmax、參數(shù)大小)、特殊特征(訓(xùn)練技術(shù)和微調(diào)任務(wù)),以及可用的出版鏈接(huggingface、GitHub、主頁和論文)詳細(xì)信息見表3。
工具
有關(guān)工具包的快速概述,請參閱表4。
討論
在本節(jié)中,我們深入研究了LLM的關(guān)鍵挑戰(zhàn),并在增強(qiáng)基于Transformer的LLM的長上下文能力的背景下,提出了未來研究和發(fā)展的潛在方向,特別是架構(gòu)的增強(qiáng)。
注意力平衡
隨著更長的上下文,篇章結(jié)構(gòu)和相關(guān)信息變得越來越復(fù)雜,需要在保持精確相關(guān)性的同時捕捉全局、長程依賴關(guān)系的能力。要解決這一挑戰(zhàn),需要在計算效率和盡可能多地保留注意力模式的精度之間找到最佳平衡。因此,在長上下文語言模型領(lǐng)域,這仍然是一個持續(xù)的追求。幸運(yùn)的是,最近的一些創(chuàng)新,如Flash Attention,探索了超越算法水平的IO感知的解決方案,在不損失任何注意力精度的情況下,極大地提高了運(yùn)行時效率和內(nèi)存開銷。此外,人們可以探索將之前的有效策略與這些替代方法集成,利用強(qiáng)大的GPU內(nèi)核編程工具,如Cuda,或更輕量的Triton。
內(nèi)存的有效性和效率
之前我們概述了由于缺乏顯式內(nèi)存機(jī)制、僅依賴于上下文工作內(nèi)存,以及在擴(kuò)展的上下文交互期間KV緩存內(nèi)存消耗的顯著增加而產(chǎn)生的局限性。這些挑戰(zhàn)共同強(qiáng)調(diào)了在基于Transformer的LLM中需要更有效和高效的內(nèi)存機(jī)制。雖然我們之前也介紹了各種長時記憶機(jī)制,但它們受到復(fù)雜的啟發(fā)式設(shè)計帶來的額外內(nèi)存開銷的限制,因此由于頻繁的刷新,可能會隨著時間的推移導(dǎo)致性能下降。為了應(yīng)對這一挑戰(zhàn),研究人員可以研究更有效的策略來組織內(nèi)存存儲和提高讀寫吞吐量,從最近的進(jìn)展中獲得靈感,如分頁注意力。
長度外推挖掘
本文對最近的突破進(jìn)行了全面概述,特別是應(yīng)用在RoPE上的擴(kuò)展策略,我們認(rèn)為,它在解決外推限制方面具有重大希望。然而,這些進(jìn)展往往依賴于對復(fù)雜高維位置嵌入屬性的簡化觀察,并結(jié)合直接的啟發(fā)式調(diào)整。這促使我們質(zhì)疑用高維嵌入建模時序性的理論基礎(chǔ),并探索可學(xué)習(xí)嵌入的潛在復(fù)蘇,在這些具有許多超參數(shù)的啟發(fā)式設(shè)計的指導(dǎo)下。相信未來的研究應(yīng)該深入這一領(lǐng)域,例如CLEX,特別是在開發(fā)一個魯棒的理論框架來對Transformer設(shè)置下的時序性進(jìn)行建模。
具體而普遍的目標(biāo)
雖然我們討論了為長文本建模量身定制的特定目標(biāo),但值得注意的是,其中許多限于某些類型的任務(wù),或僅與MLM目標(biāo)兼容,而不是當(dāng)今更常見的CLM目標(biāo)。這突出了對特定但普遍適用的因果語言建模目標(biāo)的需求,這些目標(biāo)可以從模型訓(xùn)練的早期階段有效地捕捉長程依賴關(guān)系。
可靠的指標(biāo)需求
從我們之前的評估經(jīng)驗(yàn)來看,與人類的判斷分?jǐn)?shù)相比,常用的指標(biāo)(如ROUGE分?jǐn)?shù))往往表現(xiàn)出顯著的差異。隨著LLM在現(xiàn)實(shí)世界場景中的快速部署,對更可靠的指標(biāo)的需求越來越迫切,以評估長上下文能力,特別是在難以精確的地面事實(shí)的生成任務(wù)中。一個有希望的途徑是利用最先進(jìn)的LLM(如GPT4)的魯棒性作為人類評估的替代品。
總結(jié)
主要貢獻(xiàn):
建立了一個整體的分類法,通過對Transformer架構(gòu)的分解,對五個部分進(jìn)行分類,然后研究在每個階段增強(qiáng)長上下文LLM的現(xiàn)有方法,包括預(yù)訓(xùn)練、微調(diào)、推理和預(yù)處理/后處理。
探討了廣泛使用的評估必要性,包括數(shù)據(jù)集、指標(biāo)和基線,專門評估LLM的長上下文能力。以及一些流行的工具包,以優(yōu)化LLM的訓(xùn)練和推理的效率和有效性,如庫、系統(tǒng)和編譯器。
確定了改進(jìn)Transformer結(jié)構(gòu)以處理廣泛背景的關(guān)鍵挑戰(zhàn),以及相應(yīng)的未來方向。
考慮到該領(lǐng)域的快速增長和調(diào)查可能很快落后,我們構(gòu)建了一個實(shí)時更新的存儲庫,以收集該特定領(lǐng)域的相關(guān)文獻(xiàn)。
審核編輯:湯梓紅
-
模型
+關(guān)注
關(guān)注
1文章
3178瀏覽量
48729 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5493瀏覽量
120998 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1549瀏覽量
7507 -
LLM
+關(guān)注
關(guān)注
0文章
276瀏覽量
306
原文標(biāo)題:Long-Context下LLM模型架構(gòu)全面介紹
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論