面向長程式碼序列的 Transformer 模型最佳化方法,提升長程式碼場景效能
阿里雲機器學習平台PAI與華東師範大學高明教授團隊合作在SIGIR2022上發表了結構感知的稀疏注意力Transformer模型SASA,這是面向長程式碼序列的Transformer模型優化方法,致力於提升長程式碼場景下的效果和性能。由於self-attention模組的複雜度隨序列長度呈次方增長,多數程式設計預訓練語言模型(Programming-based Pretrained Language Models, PPLM)採用序列截斷的方式處理程式碼序列。 SASA方法將self-attention的計算稀疏化,同時結合了程式碼的結構特性,從而提升了長序列任務的效能,也降低了記憶體和運算複雜度。
論文:Tingting Liu, Chengyu Wang, Cen Chen, Ming Gao, and Aoying Zhou. Understanding Long Programming Languages with Structure-Aware Sparse Attention. SIGIR 2022
#模型框架
#下圖展示了SASA的整體框架:
其中,SASA主要包含兩個階段:預處理階段和Sparse Transformer訓練階段。在預處理階段得到兩個token之間的交互矩陣,一個是top-k frequency矩陣,一個是AST pattern矩陣。 Top-k frequency矩陣是利用程式碼預訓練語言模型在CodeSearchNet語料上學習token之間的attention交互頻率,AST pattern矩陣是解析程式碼的抽象語法樹(Abstract Syntax Tree,AST ),根據語法樹的連接關係得到token之間的互動訊息。 Sparse Transformer訓練階段以Transformer Encoder為基礎框架,將full self-attention替換為structure-aware sparse self-attention,在符合特定模式的token pair之間進行attention計算,從而降低計算複雜度。
SASA稀疏注意力總共包含以下四個模組:
- Sliding window attention:僅在滑動視窗內的token之間計算self-attention,保留局部上下文的特徵,計算複雜度為,為序列長度,為滑動視窗大小。
- Global attention:設定一定的global token,這些token將與序列中所有token進行attention計算,從而獲取序列的全局信息,計算複雜度為,為global token個數。
- Top-k sparse attention:Transformer模型中的attention交互作用是稀疏且長尾的,對於每個token,僅與其attention交互最高的top-k個token計算attention,複雜度為。
- AST-aware structure attention:程式碼不同於自然語言序列,有更強的結構特性,透過將程式碼解析成抽象語法樹(AST),然後根據語法樹中的連接關係確定attention計算的範圍。
為了適應現代硬體的平行計算特性,我們將序列分成若干block,而非以token為單位計算,每個query block與
個滑動視窗blocks和
個global blocks以及
個top-k和AST blocks計算attention,整體的計算複雜度為
b為block size。
每個sparse attention pattern 對應一個attention矩陣,以sliding window attention為例,其attention矩陣的計算為:
ASA偽代碼:
實驗結果
我們採用CodeXGLUE[1]提供的四個任務資料集進行評測,分別為code clone detection,defect detection,code search,code summarization。我們擷取其中的序列長度大於512的資料組成長序列資料集,實驗結果如下:
#從實驗結果可以看出,SASA在三個資料集上的性能明顯超過所有Baseline。其中Roberta-base[2],CodeBERT[3],GraphCodeBERT[4]是採用截斷的方式處理長序列,這將損失一部分的上下文資訊。 Longformer[5]和BigBird[6]是在自然語言處理中用來處理長序列的方法,但未考慮程式碼的結構特性,直接遷移到程式碼任務上效果不佳。
為了驗證top-k sparse attention和AST-aware sparse attention模組的效果,我們在BigCloneBench和Defect Detection資料集上做了消融實驗,結果如下:
#sparse attention模組不僅對於長程式碼的任務效能有提升,還可以大幅減少顯存使用,在同樣的裝置下,SASA可以設定更大的batch size,而full self-attention的模型則面臨out of memory的問題,具體顯存使用情況如下圖:
SASA作為一個sparse attention的模組,可以遷移到基於Transformer的其他預訓練模型上,用於處理長序列的自然語言處理任務,後續將整合到開源框架EasyNLP(https://github.com/alibaba/EasyNLP)中,貢獻給開源社群。
論文連結:
https://arxiv.org/abs/2205.13730
以上是面向長程式碼序列的 Transformer 模型最佳化方法,提升長程式碼場景效能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

通用矩陣乘法(GeneralMatrixMultiplication,GEMM)是許多應用程式和演算法中至關重要的一部分,也是評估電腦硬體效能的重要指標之一。透過深入研究和優化GEMM的實現,可以幫助我們更好地理解高效能運算以及軟硬體系統之間的關係。在電腦科學中,對GEMM進行有效的最佳化可以提高運算速度並節省資源,這對於提高電腦系統的整體效能至關重要。深入了解GEMM的工作原理和最佳化方法,有助於我們更好地利用現代計算硬體的潛力,並為各種複雜計算任務提供更有效率的解決方案。透過對GEMM性能的優

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

這篇論文探討了在自動駕駛中,從不同視角(如透視圖和鳥瞰圖)準確檢測物體的問題,特別是如何有效地從透視圖(PV)到鳥瞰圖(BEV)空間轉換特徵,這一轉換是透過視覺轉換(VT)模組實施的。現有的方法大致分為兩種策略:2D到3D和3D到2D轉換。 2D到3D的方法透過預測深度機率來提升密集的2D特徵,但深度預測的固有不確定性,尤其是在遠處區域,可能會引入不準確性。而3D到2D的方法通常使用3D查詢來採樣2D特徵,並透過Transformer學習3D和2D特徵之間對應關係的注意力權重,這增加了計算和部署的
