長程 Transformer 模型


本文由 Teven Le Scao、Patrick Von Platen、Suraj Patil、Yacine Jernite 和 Victor Sanh 共同撰寫。
每個月,我們都會選擇一個重點主題,閱讀有關(guān)該主題的最近發(fā)表的四篇論文。然后,我們會寫一篇簡短的博文,總結(jié)這些論文各自的發(fā)現(xiàn)及它們呈現(xiàn)出的共同趨勢,并闡述它們對于我們后續(xù)工作的指導(dǎo)意義。2021 年 1 月的主題是 稀疏性和剪枝,本月 (2021 年 2 月),我們的主題是 transfomer 模型中的長程注意力。
引言
2018 年和 2019 年,大型 transformer 模型興起之后,兩種技術(shù)趨勢迅速崛起,意在降低這類模型的計算需求。首先,條件計算、量化、蒸餾和剪枝解鎖了計算受限環(huán)境中的大模型推理; 我們已經(jīng)在 上一篇閱讀小組帖子 中探討了這一話題。隨后,研究人員開始研究如何降低預(yù)訓(xùn)練成本。
特別地,大家的工作一直圍繞一個核心問題: transformer 模型的內(nèi)存和時間復(fù)雜度與序列長度呈二次方關(guān)系。為了高效地訓(xùn)練大模型,2020 年發(fā)表了大量論文來解決這一瓶頸,這些論文成果斐然,年初我們訓(xùn)練 transformer 模型的默認訓(xùn)練序列長度還是 512 或 1024,一年之內(nèi)的現(xiàn)在,我們已經(jīng)突破這個值了。
長程注意力從一開始就是我們研究和討論的關(guān)鍵話題之一,我們 Hugging Face 的 Patrick Von Platen 同學(xué)甚至還專門為 Reformer 撰寫了一篇 由 4 部分組成的博文。本文,我們不會試圖涵蓋每種方法 (太多了,根本搞不完!),而是重點關(guān)注四個主要思想:
自定義注意力模式 (使用 Longformer)
循環(huán) (使用 Compressive Transformer)
低秩逼近 (使用 Linformer)
核逼近 (使用 Performer)
有關(guān)這一領(lǐng)域的詳盡概述,可閱讀 Efficient Transformers: A Survey 和 Long Range Arena 這兩篇綜述論文。
總結(jié)
Longformer - The Long-Document Transformer
作者: Iz Beltagy, Matthew E. Peters, Arman Cohan
Longformer 通過將傳統(tǒng)的自注意力替換為滑窗注意力 + 局部注意力 + 稀疏注意力 (參見 Sparse Transformers (2019)) 以及全局注意力的組合以解決 transformer 的內(nèi)存瓶頸,使其隨序列長度線性縮放。與之前的長程 transformer 模型相反 (如 Transformer-XL (2019)、Reformer (2020), Adaptive Attention Span (2019)),Longformer 的自注意力層可以即插即用直接替換標準的自注意力層,因此在長序列任務(wù)上,可以直接用它對預(yù)訓(xùn)練的標準注意力 checkpoint 進行進一步更新訓(xùn)練和/或微調(diào)。
標準自注意力矩陣 (圖 a) 與輸入長度呈二次方關(guān)系:

Longformer 使用不同的注意力模式執(zhí)行自回歸語言建模、編碼器預(yù)訓(xùn)練和微調(diào)以及序列到序列任務(wù)。
對于自回歸語言模型,通過將因果自注意力 (如 GPT2) 替換為膨脹滑窗自注意力 (dilated windowed self-attention) (如圖 c) 以獲得最佳的結(jié)果。由于?
?是序列長度,
?是滑窗長度,這種注意力模式將內(nèi)存消耗從?
?減少到??,當?
?時,其隨序列長度線性縮放。
對于編碼器預(yù)訓(xùn)練,Longformer 將雙向自注意力 (如 BERT) 替換為局部滑窗和全局雙向自注意力的組合 (如圖 d),從而將內(nèi)存消耗從?
?減少到?
,這里?
?是全局關(guān)注的詞元數(shù)量。因此其與序列長度也呈線性關(guān)系。
對于序列到序列模型,只有編碼器層 (如 BART) 被替換為局部和全局雙向自注意力的組合 (圖 d),因為對于大多數(shù)序列到序列任務(wù),只有編碼器會處理非常長的輸入 (例如摘要任務(wù))。因此,內(nèi)存消耗從?
?減少到?
?,其中?
?和
?分別是源 (編碼器輸入) 和目標 (解碼器輸入) 序列長度。為了使 Longformer 編碼器 - 解碼器高效運作,我們假設(shè)?
?比 ?
?大得多。
論文主要發(fā)現(xiàn)
作者提出了膨脹滑窗自注意力機制 (如圖 c),并表明與僅使用滑窗注意力或稀疏自注意力 (如圖 b) 相比,其在語言建模任務(wù)上的表現(xiàn)更優(yōu)。窗口大小隨著層而增加。實驗表明,這種模式在下游基準測試中優(yōu)于以前的架構(gòu) (如 Transformer-XL 或自適應(yīng)跨度注意力)。
全局注意力允許信息流經(jīng)整個序列,而將全局注意力應(yīng)用于任務(wù)驅(qū)動的詞元 (例如問答任務(wù)中的問題詞元、句子分類任務(wù)中的 CLS 詞元) 可以在下游任務(wù)上帶來更強的性能。使用這種全局模式,Longformer 可以成功用于文檔級 NLP 任務(wù)的遷移學(xué)習(xí)。
標準預(yù)訓(xùn)練模型可以通過簡單地用本文提出的長程自注意力替換標準自注意力,然后對下游任務(wù)進行微調(diào)來適配長輸入。這避免了對長輸入進行專門預(yù)訓(xùn)練所需的昂貴成本。
后續(xù)問題
膨脹滑窗自注意力的尺寸隨層數(shù)而增加與計算機視覺中通過堆疊 CNN 而增加感受野的發(fā)現(xiàn)相呼應(yīng)。這兩個發(fā)現(xiàn)有何關(guān)聯(lián)?兩者之間哪些知識是可遷移的?
Longformer 的編碼器 - 解碼器架構(gòu)非常適合不需要長目標序列的任務(wù) (例如摘要)。然而,對于需要長目標序列的長程序列到序列任務(wù) (例如文檔翻譯、語音識別等),特別是考慮到編碼器 - 解碼器模型的交叉注意力層,它該如何工作?
在實踐中,滑動窗口自注意力依賴于許多索引操作來確保查詢 - 鍵權(quán)重矩陣的對稱性。這些操作在 TPU 上非常慢,這凸顯了此類模式在其他硬件上的適用性問題。
Compressive Transformers for Long-Range Sequence Modelling
作者: Jack W. Rae, Anna Potapenko, Siddhant M. Jayakumar, Timothy P. Lillicrap
Transformer-XL (2019) ?表明,在內(nèi)存中緩存之前計算的層激活可以提高語言建模任務(wù) (如?enwik8?) 的性能。該模型不僅可以關(guān)注當前的??個輸入詞元,還可以關(guān)注過去的?
?個詞元,其中?
?是模型的記憶窗口長度。Transformer-XL 的內(nèi)存復(fù)雜度為?
,這表明對于非常大的?
,內(nèi)存成本會顯著增加。因此,當緩存的激活數(shù)量大于?
?時,Transformer-XL 必須從內(nèi)存中丟棄之前的激活。Compressive Transformer 通過添加額外的壓縮記憶來有效緩存之前的激活 (否則其會被丟棄) 來解決這個問題。通過這種方式,模型可以更好地學(xué)習(xí)長程序列依賴性,從而可以訪問更多的之前激活。

壓縮因子??(圖中取值為 3) 可用于決定之前激活的壓縮率。作者嘗試了不同的壓縮函數(shù)?
,例如最大池化/均值池化 (無參數(shù)) 和一維卷積 (可訓(xùn)練參數(shù))。壓縮函數(shù)通過時間反向傳播或局部輔助壓縮損失進行訓(xùn)練。除了長度為?
?的當前輸入之外,該模型還關(guān)注常規(guī)記憶中的?
?緩存激活以及?
?壓縮記憶的激活,從而實現(xiàn)長度為?
?的長程依賴性,其中 l?是注意力層數(shù)。這使得與 Transformer-XL 相比,其關(guān)注范圍額外增加了?
?個詞元,相應(yīng)地,內(nèi)存成本達到了?
?。作者在強化學(xué)習(xí)、音頻生成和自然語言處理等一系列任務(wù)上對算法進行了實驗。作者還介紹了一種新的稱為語言建模基準,稱為 PG19。
論文主要發(fā)現(xiàn)
Compressive Transformer 在 enwik8 和 WikiText-103 數(shù)據(jù)集上得到的困惑度顯著優(yōu)于當前最先進的語言建模性能。特別地,壓縮記憶對建模在長序列上出現(xiàn)的稀有詞起著至關(guān)重要的作用。
作者表明,該模型通過越來越多地關(guān)注壓縮記憶而不是常規(guī)記憶來學(xué)習(xí)如何保留顯著信息,這有效牽制了舊記憶訪問頻率較低的趨勢。
所有壓縮函數(shù) (平均池化、最大池化、一維卷積) 都會產(chǎn)生相似的結(jié)果,這證明記憶壓縮是存儲過去信息的有效方法。
后續(xù)問題
Compressive Transformer 需要一個特殊的優(yōu)化調(diào)度器,在訓(xùn)練過程中逐漸增加有效 batch size,以避免較低學(xué)習(xí)率帶來的顯著性能下降。這種效應(yīng)尚未得到很好的理解,需要進行更多分析。
與 BERT 或 GPT2 等簡單模型相比,Compressive Transformer 具有更多的超參數(shù): 壓縮率、壓縮函數(shù)及損失、常規(guī)和壓縮記憶大小等。目前尚不清楚這些參數(shù)是否可以很好地泛化到除語言建模之外的不同任務(wù)中。還是說我們會重演學(xué)習(xí)率的故事,參數(shù)的選擇會使得訓(xùn)練非常脆弱。
探測常規(guī)記憶和壓縮記憶來分析在長序列中我們到底記憶了什么樣的信息,這是個有意思地課題。揭示最顯著的信息可以為諸如 Funnel Transformer 之類的方法提供信息,這些方法減少了維護全長詞元序列所帶來的冗余。
Linformer: Self-Attention with Linear Complexity
作者: Sinong Wang, Belinda Z. Li, Madian Khabsa, Han Fang, Hao Ma
目標還是將自注意力相對于序列長度??的復(fù)雜度從二次降低到線性。本文觀察到注意力矩陣是低秩的 (即其?
?矩陣的信息含量并不滿),并探討了使用高維數(shù)據(jù)壓縮技術(shù)來構(gòu)建更內(nèi)存高效的 transformer 的可能性。
該方法的理論基礎(chǔ)是約翰遜 - 林登斯特勞斯引理 (Johnson-Lindenstrauss lemma)。我們考慮高維空間中的??個點。我們希望將它們投影到低維空間,同時在誤差界?
?內(nèi)保留數(shù)據(jù)集的結(jié)構(gòu) (即點與點之間的相互距離)。約翰遜 - 林登斯特勞斯引理指出,我們可以選擇一個小維度?
?并通過簡單地對隨機正交投影進行嘗試,就可以在多項式時間內(nèi)找到一個到?
?的合適投影。
Linformer 通過學(xué)習(xí)注意力上下文矩陣的低秩分解,將序列長度投影到更小的維度。然后可以巧妙地重寫自注意力的矩陣乘法,這樣就不需要計算和存儲大小為??的矩陣。
標準 transformer:
? ? ? ? ? ? ?(n * h) ? ? ? ? ? ?(n * n) ? (n * h)
Linformer:
? ? ? ? ? ? ?(n * h) ? ? ? ? ? ?(n * d) ? (d * n) ? (n * h)
論文主要發(fā)現(xiàn)
自注意力矩陣是低秩的,這意味著它的大部分信息可以通過其最大的幾個特征值來恢復(fù),并且可以通過低秩矩陣來近似。
很多工作都集中在降低隱藏狀態(tài)的維數(shù)上。本文表明,通過學(xué)習(xí)投影來減少序列長度可能是一個強有力的替代方案,同時將自注意力的內(nèi)存復(fù)雜度從二次降低為線性。
增加序列長度并不會影響 Linformer 的推理時間,而 transformer 的推理時間需要隨之線性增加。此外,Linformer 自注意力并不影響收斂速度 (更新次數(shù))。

后續(xù)問題
盡管我們在各層之間共享投影矩陣,但此處提出的方法與約翰遜 - 林登斯特勞斯引理還是有所不同,約翰遜 - 林登斯特勞斯引理指出隨機正交投影就足夠了 (在多項式時間內(nèi))。隨機預(yù)測在這里有用嗎?這讓人想起 Reformer,它在局部敏感哈希中使用隨機投影來降低自注意力的內(nèi)存復(fù)雜度。
Rethinking Attention with Performers
作者: Krzysztof Choromanski, Valerii Likhosherstov, David Dohan, Xingyou Song, Andreea Gane, Tamas Sarlos, Peter Hawkins, Jared Davis, Afroz Mohiuddin, Lukasz Kaiser, David Belanger, Lucy Colwell, Adrian Weller
本文的目標還是將自注意力相對于序列長度??的復(fù)雜度從二次降低到線性。與其他論文相比,作者指出,自注意力的稀疏性和低秩先驗可能并不適用于其他模態(tài)數(shù)據(jù) (如語音、蛋白質(zhì)序列建模)。因此,本文探索了在我們對自注意力矩陣沒有任何先驗知識的情況下,有什么可以減輕自注意力的內(nèi)存負擔的方法。
作者觀察到,如果可以甩掉 softmax 直接執(zhí)行矩陣乘法??(?
?),我們就不必計算大小為?
?的 ?
?矩陣,這個矩陣是內(nèi)存瓶頸的來源。他們使用隨機特征圖 (又名隨機投影) 通過以下方式近似 softmax:
, 其中??是一個合適的非線性函數(shù)。進而:
受 21 世紀初的那些機器學(xué)習(xí)論文的啟發(fā),作者引入了?FAVOR+?(?F?ast?A?ttention?V?ia?O?rthogonal?R?andom positive (?+?)?F?eatures),用于對自注意力矩陣進行無偏或近無偏估計,該估計具有均勻收斂和低估計方差的特點。
論文主要發(fā)現(xiàn)
FAVOR+ 可用于高精度地近似自注意力矩陣,而注意力矩陣的形式?jīng)]有任何先驗,因此其可直接替代標準自注意力,并在多種應(yīng)用及模態(tài)數(shù)據(jù)中表現(xiàn)出強大的性能。
關(guān)于在逼近 softmax 是應(yīng)該怎么做,不應(yīng)該怎么做的徹底的數(shù)學(xué)研究凸顯了 21 世紀初開發(fā)的那些原則性方法重要性,這些工作甚至在深度學(xué)習(xí)時代都是有用的。
FAVOR+ 還可用于對 softmax 之外的其他可核化注意力機制進行有效建模。
后續(xù)問題
雖然這種注意力機制近似逼近方法的誤差界很緊,但即便是微小的錯誤,還是會通過 transformer 層傳播。這就有可能在用 FAVOR+ 作為自注意力近似來微調(diào)預(yù)訓(xùn)練網(wǎng)絡(luò)時帶來收斂性和穩(wěn)定性問題。
FAVOR+ 算法使用了多種技術(shù)。目前尚不清楚這些技術(shù)中的哪一個對實際性能具有影響最大,尤其是在多模態(tài)場景下,有可能各個模態(tài)的狀況還會不一樣。
讀書小組的討論
用于自然語言理解和生成的基于 transformer 的預(yù)訓(xùn)練語言模型的發(fā)展突飛猛進。如何讓這些系統(tǒng)能夠高效地用于生產(chǎn)已成為一個非常活躍的研究領(lǐng)域。這強調(diào)了我們在方法和實踐方面仍然有很多東西需要學(xué)習(xí)和構(gòu)建,以實現(xiàn)高效和通用的基于深度學(xué)習(xí)的系統(tǒng),特別是對于需要對長輸入進行建模的應(yīng)用。
上述四篇論文提供了不同的方法來處理自注意力機制的二次方內(nèi)存復(fù)雜度,并將其降低為線性復(fù)雜度。Linformer 和 Longformer 都依賴于自注意力矩陣所含的信息量并不需要??這么多數(shù)據(jù)來存儲這一觀察 (注意力矩陣是低秩且稀疏的)。Performer 給出了一種逼近 softmax-attention 的核方法 (該方法還可以逼近除 softmax 之外的任何可核化的注意力機制)。Compressive Transformer 提供了一種正交方法來對長程依賴關(guān)系進行遞歸式建模。
除了對訓(xùn)練的影響外,這些方法所引入的不同的歸納偏差在計算速度和模型泛化性能方面都會產(chǎn)生潛在的影響。特別是,Linformer 和 Longformer 會導(dǎo)致不同的折衷: Longformer 顯式地設(shè)計了一個稀疏的自注意力模式 (固定模式),而 Linformer 則學(xué)習(xí)自注意力矩陣的低秩矩陣分解。在我們的實驗中,Longformer 的效率低于 Linformer,且當前其高度依賴于實現(xiàn)細節(jié)。另一方面,Linformer 的分解僅適用于固定長度的上下文長度 (在訓(xùn)練時固定),其在沒有特定適配的情況下無法推廣到更長的序列。此外,它無法緩存以前的激活,這在內(nèi)容生成場景中非常有用。有趣的是,Performer 在概念上有所不同: 它學(xué)習(xí) softmax 注意力的近似核函數(shù),而不依賴于任何稀疏性或低秩假設(shè)。對于不同數(shù)量的訓(xùn)練數(shù)據(jù),如何比較這些歸納偏差,也是個需要討論的問題。
所有這些工作都強調(diào)了自然語言中對長輸入進行建模的重要性。在行業(yè)中,經(jīng)常會遇到文檔翻譯、文檔分類或文檔摘要等用例,這些用例需要以高效且穩(wěn)健的方式對很長的序列進行建模。最近,零樣本潛覺 (如 GPT3) 也成為標準微調(diào)的一種有前途的替代方案,其可通過增加潛覺示例的數(shù)量 (即上下文大小) 穩(wěn)步提高性能和魯棒性。最后,在語音或蛋白質(zhì)等其他模態(tài)數(shù)據(jù)的建模中,也經(jīng)常會遇到長度超出 512 的長序列。
對長輸入進行建模與對短輸入進行建模并不割裂,而應(yīng)該從連續(xù)的角度來思考從較短序列到較長序列的過渡。Shortformer、Longformer 和 BERT 提供的證據(jù)表明,在短序列上訓(xùn)練模型并逐漸增加序列長度可以加快訓(xùn)練速度并增強模型的下游性能。這一觀察結(jié)果與直覺相一致,即當可用數(shù)據(jù)很少時,訓(xùn)得的長程依賴關(guān)系可能來自于幻覺式相關(guān),而非來自真正的強大的語言理解。這與 Teven Le Scao 在語言建模方面進行的一些實驗相呼應(yīng): 與 transformer 相比,LSTM 在小數(shù)據(jù)環(huán)境中學(xué)習(xí)效果更好,其在小規(guī)模語言建模基準 (例如 Penn Treebank) 上表現(xiàn)出更好的困惑度。
從實踐的角度來看,位置嵌入問題也是計算效率折衷的一個重要的方面。相對位置嵌入 (在 Transformer-XL 中引入 , Compressive Transformers 也使用了它) 很有吸引力,因為它們可以輕松擴展到尚未見過的序列長度,但與此同時,相對位置嵌入的計算成本很高。另一方面,絕對位置嵌入 (在 Longformer 和 Linformer 中使用) 在處理比訓(xùn)練期間看到的序列更長的序列不太靈活,但計算效率更高。有趣的是,Shortformer 引入了一種簡單的替代方案,將位置信息添加到自注意力機制的查詢和鍵中,而不是將其添加到詞元嵌入中。該方法稱為位置注入注意力,其被證明非常高效,且產(chǎn)生了很好的結(jié)果。
@Hugging Face ??: 長程建模
用戶可在 transformers 庫和 模型 Hub 中找到 Longformer 的實現(xiàn)及其相應(yīng)的開源 checkpoint。Performer 和 Big Bird 是一種基于稀疏注意力的長程模型,目前也已支持。如果你想知道如何為?transformers
?做貢獻但不知道從哪里開始,可以通過論壇或 GitHub 告訴我們!
如需進一步閱讀,我們建議閱讀 Patrick Platen 的 Reformer 論文、Teven Le Scao 關(guān)于 約翰遜 - 林登斯特勞斯逼近的帖子 以及 Efficient Transfomers: A Survey、Long Range Arena: A Benchmark for Efficient Transformers 這兩篇論文。
英文原文:?https://hf.co/blog/long-range-transformers
原文作者: Victor Sanh
譯者: Matrix Yao (姚偉峰),英特爾深度學(xué)習(xí)工程師,工作方向為 transformer-family 模型在各模態(tài)數(shù)據(jù)上的應(yīng)用及大規(guī)模模型的訓(xùn)練推理。
審校/排版: zhongdongy (阿東)
長程 Transformer 模型的評論 (共 條)
