新PyTorch API:幾行代碼實(shí)現(xiàn)不同注意力變體,兼具FlashAttention性能和PyTorch靈活性
AIGC動(dòng)態(tài)歡迎閱讀
原標(biāo)題:新PyTorch API:幾行代碼實(shí)現(xiàn)不同注意力變體,兼具FlashAttention性能和PyTorch靈活性
關(guān)鍵字:注意力,變體,內(nèi)核,性能,因果
文章來源:機(jī)器之心
內(nèi)容字?jǐn)?shù):0字
內(nèi)容摘要:
機(jī)器之心報(bào)道
編輯:陳陳用 FlexAttention 嘗試一種新的注意力模式。理論上,注意力機(jī)制就是你所需要的一切。然而在實(shí)際操作中,我們還需要優(yōu)化像 FlashAttention 這樣的注意力機(jī)制的實(shí)現(xiàn)。
盡管這些融合的注意力機(jī)制大大提高了性能,且支持長上下文,但這種效率的提升也伴隨著靈活性的喪失。對(duì)于機(jī)器學(xué)習(xí)研究人員來說,這就像是一種「軟件彩票」—— 如果你的注意力變體不適合現(xiàn)有的優(yōu)化內(nèi)核,你將面臨運(yùn)行緩慢和 CUDA 內(nèi)存不足的困境。
一些注意力變體包括因果注意力、相對(duì)位置嵌入、Alibi、滑動(dòng)窗口注意力、PrefixLM、文檔掩碼、不規(guī)則張量、PagedAttention 等。更糟糕的是,人們通常希望將這些變體組合在一起!比如滑動(dòng)窗口注意力 + 文檔掩碼 + 因果注意力 + 上下文并行,又比如 PagedAttention + 滑動(dòng)窗口的組合。
下圖左側(cè)代表了當(dāng)今的現(xiàn)狀 —— 一些掩碼 + 偏置 + 設(shè)置的組合已經(jīng)有現(xiàn)成的內(nèi)核實(shí)現(xiàn)。然而,各種選項(xiàng)的添加會(huì)導(dǎo)致設(shè)置呈指數(shù)級(jí)增長。更糟糕的是,這種方式不會(huì)支持新的注意力變體。為了徹底地解決這個(gè)超立方體問題,PyTorch 團(tuán)隊(duì)引入了
原文鏈接:新PyTorch API:幾行代碼實(shí)現(xiàn)不同注意力變體,兼具FlashAttention性能和PyTorch靈活性
聯(lián)系作者
文章來源:機(jī)器之心
作者微信:
作者簡介: