發(fā)布時(shí)間:2023-11-28 14:54:32 瀏覽量:115次
已在64k CodeLlama上通過驗(yàn)證
豐色 發(fā)自 凹非寺
|
這兩天,F(xiàn)lashAttention團(tuán)隊(duì)推出了新作:
一種給Transformer架構(gòu)大模型推理加速的新方法,最高可提速8倍。
該方法尤其造福于長(zhǎng)上下文LLM,在64k長(zhǎng)度的CodeLlama-34B上通過了驗(yàn)證。
甚至得到了PyTorch官方認(rèn)可:
如果你之前有所關(guān)注,就會(huì)記得用FlashAttention給大模型加速效果真的很驚艷。
不過它僅限于訓(xùn)練階段。
因此,這一新成果一出,就有網(wǎng)友表示:
等推理加速等了好久,終于來了。
據(jù)介紹,這個(gè)新方法也是在FlashAttention的基礎(chǔ)之上衍生而出,主要思想也不復(fù)雜:
用并行操作盡快加載Key和Value緩存,然后分別重新縮放再合并結(jié)果,最終獲得推理速度上的大幅提升。
詳細(xì)來看。
該方法被命名為Flash-Decoding。
根據(jù)作者介紹:
LLM的推理(即“解碼”)過程是迭代的,即一次生成一個(gè)token,組成一個(gè)完整句子需要n個(gè)token以及n次前向傳遞。
不過,由于我們可以緩存之前計(jì)算出來的token,所以單個(gè)生成步驟并不總是依賴于上下文長(zhǎng)度。
但有一個(gè)操作例外:注意力?(attention),它不能隨著上下文長(zhǎng)度靈活擴(kuò)展。
鑒于長(zhǎng)上下文已成趨勢(shì),比如目前最大的開源LLM已達(dá)100k(CodeLlama),我們不得不注意到attention在大模型推理過程中浪費(fèi)了太多時(shí)間,時(shí)間就是金錢。
更別提attention在batch size上進(jìn)行擴(kuò)展時(shí),即使模型上下文相對(duì)較短,它也可能成為性能瓶頸(因?yàn)槟P鸵x取的內(nèi)存量與batch size成比例,而它僅取決于模型其余部分的大小)。
怎么破解?
模型在推理也就是解碼過程中,為了計(jì)算softmax(queries @keys.transpose)@values這兩個(gè)值,生成的每個(gè)新token都需要關(guān)注先前的所有token。
團(tuán)隊(duì)先前的工作FlashAttention,已經(jīng)在訓(xùn)練階段對(duì)此操作進(jìn)行了優(yōu)化。
當(dāng)時(shí),F(xiàn)lashAttention解決的主要瓶頸是讀寫中間結(jié)果的內(nèi)存帶寬(例如,Q @ K^T)。
然而,在推理階段,我們要面對(duì)的瓶頸變了,導(dǎo)致FlashAttention所做的優(yōu)化并不能直接拿過來應(yīng)用。
具體而言:
在階段階段,F(xiàn)lashAttention在batch size和查詢長(zhǎng)度維度上進(jìn)行并行化。
在推理階段,查詢長(zhǎng)度通常為1,這意味著如果batch size小于GPU上的流式多處理器數(shù)量(例如,A100為108),該操作將僅使用GPU的一小部分。
這對(duì)于長(zhǎng)上下文情況尤甚,因?yàn)殚L(zhǎng)上下文需要較小的batch size才能適應(yīng)GPU內(nèi)存。
所以,結(jié)果就是,當(dāng)batch size為1時(shí),F(xiàn)lashAttention將只占用不足1%的GPU,非常不劃算。
當(dāng)然,你可能會(huì)說,不用FlashAttention也行,用矩陣乘法原語來完注意力操作。
不過,作者指出,這種情況又會(huì)完全占用GPU,并啟動(dòng)非常多的寫入和讀取中間結(jié)果的內(nèi)核,也不是最佳辦法。
最終,基于以上考量,作者在FlashAttention的基礎(chǔ)上,添加了一個(gè)新的并行化緯度:key和value序列長(zhǎng)度。
這個(gè)方法(即Flash-Decoding)結(jié)合上述兩種方法的優(yōu)點(diǎn):
與FlashAttention一樣,它在全局內(nèi)存中存儲(chǔ)的額外數(shù)據(jù)非常少,但只要上下文長(zhǎng)度足夠大,即使batch size很小,它也可以充分利用GPU。
詳細(xì)來看,F(xiàn)lash-Decoding一共分為三個(gè)步驟:
1、先將key和value值分成更小的塊。
2、用FlashAttention并行計(jì)算每塊分割的查詢注意力。并為每行和每塊分割寫入一個(gè)額外標(biāo)量:注意力值的log-sum-exp。
3、最后,通過減少所有分割來計(jì)算實(shí)際輸出,使用log-sum-exp來scale每塊分割的貢獻(xiàn)。
作者指出,由于attention/softmax可以迭代計(jì)算,以上所有操作均可行。
并且在Flash-Decoding中,ttention/softmax既可以在分割塊內(nèi),也可以跨分割塊來執(zhí)行最終的縮減,只不過后者可縮減的步驟很少。
而在實(shí)際操作中,步驟1不涉及任何GPU操作,因?yàn)閗ey和value塊是完整的張量視圖。然后由2個(gè)獨(dú)立的內(nèi)核分別執(zhí)行步驟2和3。
驗(yàn)證環(huán)節(jié),作者在CodeLLaMa-34b(架構(gòu)與Llama 2相同)上對(duì)其解碼吞吐量進(jìn)行了基準(zhǔn)測(cè)試。
具體以tok/s為單位,測(cè)量了512到64k序列長(zhǎng)度下的解碼速度(上限為從內(nèi)存中讀取整個(gè)模型以及KV緩存所需的時(shí)間),并和多種計(jì)算注意力的方法進(jìn)行對(duì)比,包括:
最終,F(xiàn)lash-Decoding最高可將長(zhǎng)序列解碼速度提升8倍,并比其他方法具 有更好的擴(kuò)展性(受長(zhǎng)度影響較?。?/p>
此外,作者還在A100上對(duì)各種序列長(zhǎng)度和batch size的縮放多頭注意力進(jìn)行了微基準(zhǔn)測(cè)試。
結(jié)果顯示,當(dāng)序列長(zhǎng)度擴(kuò)展到64k時(shí),Flash-Decoding實(shí)現(xiàn)了幾乎恒定的運(yùn)行時(shí)間。
以下是Flash-Decoding的獲取途徑,戳文末官方博客即可找到地址:
調(diào)度程序?qū)⒏鶕?jù)問題的大小自動(dòng)使用Flash-Decoding或 FlashAttention方法。
目前Flash-Decoding還沒出論文,但作者團(tuán)隊(duì)已透露,這次不再是Tri Dao“單打獨(dú)斗”,不過一作仍然是他。
Tri Dao今年博士畢業(yè)于斯坦福,7月份加盟大模型創(chuàng)業(yè)公司Together AI擔(dān)任首席科學(xué)家。
明年9月將上任普林斯頓大學(xué)助理教授,他是FlashAttention v1和v2的主要作者。
剩下三位作者分別是:
Daniel Haziza,F(xiàn)acebook AI Research研究工程師,主要負(fù)責(zé)xformers(用于訓(xùn)練加速的開源框架);
Francisco Massa,同F(xiàn)acebook AI Research研究工程師, 主要從事PyTorch相關(guān)工作;
Grigory Sizov,Meta機(jī)器學(xué)習(xí)工程師,主要工作是優(yōu)化GPU上的LLM推理和其他AI工作負(fù)載,為PyTorch生態(tài)做出過貢獻(xiàn)。
官方博客:
https://princeton-nlp.github.io/flash-decoding/
參考鏈接:
https://twitter.com/tri_dao/status/1712904220519944411?s=20
熱門資訊
1. 照片變漫畫效果,這4個(gè)方法操作簡(jiǎn)單有效,快來試試吧!
想將照片變成漫畫效果?這篇文章分享了4個(gè)方法,包括Photoshop、聰明靈犀、VanceAI Toongineer、醒圖,簡(jiǎn)單操作就能實(shí)現(xiàn),快來嘗試一下吧!
2. 華為手機(jī)神奇“AI修圖”功能,一鍵消除衣服!原圖變身大V領(lǐng)深V!
最近華為手機(jī)Pura70推出的“AI修圖”功能引發(fā)熱議,通過簡(jiǎn)單操作可以讓照片中的人物換裝。想了解更多這款神奇功能的使用方法嗎?點(diǎn)擊查看!
近年來,人工智能逐漸走入公眾視野,其中的AI圖像生成技術(shù)尤為引人注目。只需在特定軟件中輸入關(guān)鍵詞描述語以及上傳參考圖就能智能高效生成符合要求的...
4. AI視頻制作神器Viggle:讓靜態(tài)人物動(dòng)起來,創(chuàng)意無限!
Viggle AI是一款免費(fèi)制作視頻的AI工具,能讓靜態(tài)人物圖片動(dòng)起來,快來了解Viggle AI的功能和優(yōu)勢(shì)吧!
5. Logo Diffusion——基于sd繪畫模型的AI LOGO 生成器
這下LOGO設(shè)計(jì)徹底不用求人了。接下來詳細(xì)演示一遍操作流程首先進(jìn)入Logo D... 想學(xué)習(xí)更多AI技能,比如說關(guān)于怎么樣利用AI來提高生產(chǎn)效率、還能做什么AI...
6. 零基礎(chǔ)10分鐘生成漫畫,教大家如何用AI生成自己的漫畫
接下來,我將親自引導(dǎo)你,使用AI工具,創(chuàng)作一本既有趣又能帶來盈利的漫畫。我們將一起探索如何利用這個(gè)工具,發(fā)揮你的創(chuàng)意,制作出令人驚嘆的漫畫作品。讓...
7. AI顯卡繪畫排行榜:4090無懸念,最具性價(jià)比出人意料
在AI繪圖領(lǐng)域,Stable Diffusion的顯卡繪圖性能備受關(guān)注。本文整理了Stable Diffusion顯卡的硬件要求和性能表現(xiàn),以及2023年3月顯卡AI繪圖效率排行榜和性價(jià)比排行榜。歡迎查看最新的AI顯卡算力排行榜。
8. 趕緊收藏好!這4個(gè)完全免費(fèi)的AI視頻制作網(wǎng)站和工具
以下是一些免費(fèi)的AI視頻制作網(wǎng)站或工具,幫助您制作各種類型的視頻。 1. Lumen5:Lumen5是一個(gè)基于AI的視頻制作工具,可將文本轉(zhuǎn)換為視頻。 用戶可以使...
就能快速生成一幅極具藝術(shù)效果的作品,讓現(xiàn)實(shí)中不懂繪畫的人也能參與其中創(chuàng)作!真的超贊噠~趣趣分享幾款超厲害的AI繪畫軟件,提供詳細(xì)操作!有需要的快來...
10. 10個(gè)建筑AI工具,從設(shè)計(jì)到施工全覆蓋!肯定有你從來沒聽過的
講述了建筑業(yè)比較著名的AI公司小庫科技做出的探索,在這兒就不多說了。今天,我們?cè)囍谝?guī)劃設(shè)計(jì)、建筑方案設(shè)計(jì)、住宅設(shè)計(jì)、管道設(shè)計(jì)、出渲染圖、3D掃...
最新文章
同學(xué)您好!