色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【FlashAttention-V4,非官方】FlashDecoding++

jf_pmFSk4VX ? 來源:GiantPandaCV ? 2023-11-14 15:41 ? 次閱讀

1. Introdcution

為了提高softmax并行性,之前方法(FlashAttention、FlashDecoding)將計算過程拆分,各自計算partial softmax結果,最后需要通過同步操作來更新partial softmax結果。例如FlashAttention每次計算partial softmax結果都會更新之前的結果,而FlashDecoding是在最后統一更新所有partial softmax結果。

本文在A100 GPU上分析了輸入長度為1024的情況,這種同步partial softmax更新操作占Llama2-7B推理的注意力計算的18.8%。(本文沒說是FlashAttention還是FlashDecoding的結果,個人認為FlashDecoding的同步更新代價并不大,應該遠小于18.8%)

這是LLM推理加速的第一個挑戰。此外,本文還提出了兩個挑戰:

在解碼階段,Flat GEMM操作的計算資源未得到充分利用。這是由于解碼階段是按順序生成token(一次只生成一個token),GEMM操作趨于flat-shape,甚至batch size等1時變成了GEMV(General Matrix-Vector Multiplication),具體看論文Figure 2。當batch size較小時(e.g., 8),cublas和cutlass會將矩陣填充zeros以執行更大batchsize(e.g., 64)的GEMM,導致計算利用率不足50%。

動態輸入和固定硬件配置影響了LLM推理的性能。例如,當batch size較小時,LLM推理的解碼過程是memory-bounded,而當batch size較大時是compute-bounded。

針對這3個問題,本文分別提出了對應優化方法:

Asynchronized softmax with unified max value.FlashDecoding++為分塊softmax計算設置了一個共享的最大值。這樣可以獨立計算partial softmax,無需同步更新。

Flat GEMM optimization with double buffering.FlashDecoding++只將矩陣大小填充到8,對比之前針對flat-shaped GEMM設計的為64,提高了計算利用率。論文指出,具有不同shape的flat GEMMs面臨的瓶頸也不同,于是進一步利用雙緩沖等技術提高kernel性能。

Heuristic dataflow with hardware resource adaption.FlashDecoding++同時考慮了動態輸入和硬件配置,針對LLM推理時數據流進行動態kernel優化。

下圖展示了以上3種方法的示意圖:

e8d33a2a-828a-11ee-939d-92fbcf53809c.png

2. Backgrounds

LLM推理中的主要操作如下圖所示:linear projection(①和⑤)、attention(②、③和④)和feedforward network(⑥)。為簡單起見,這里忽略了position embedding、non-linear activation、mask等操作。本文將LLM推理時對Prompt的處理過程稱為prefillphase,第二階段預測過程稱為decodephase。這兩個階段的算子基本一致,主要是輸入數據的shape是不同的。由于decodephase一次只處理一個令牌(batch size=1,或batch size很小),因此輸入矩陣是flat-shape matrices(甚至是vectors),參見下圖Decode phase部分中和KV Cache拼接的紅色向量。

e8efc816-828a-11ee-939d-92fbcf53809c.png

LLM推理中的另一個問題就是Softmax算子,其需要計算并存儲所有全局數據,并且數據量隨著數據長度成平方增長,存在內存消耗高和低并行性等問題。一般計算流程如下:

e919c08a-828a-11ee-939d-92fbcf53809c.png

3. Asynchronized Softmax with Unified Maximum Value如下

圖b所示,FlashAttention和FlashDecoding對softmax操作進行了分塊處理,但是塊與塊之間需要進行同步(主要是局部最大值)。本文發現這種同步操作的開銷約為20%。因此,作者希望去除同步操作,也就是獨立計算出partial softmax結果。

e92b4954-828a-11ee-939d-92fbcf53809c.png

e94fa128-828a-11ee-939d-92fbcf53809c.png

e9642c9c-828a-11ee-939d-92fbcf53809c.png

e97a9f7c-828a-11ee-939d-92fbcf53809c.png

e9a2dfa0-828a-11ee-939d-92fbcf53809c.png

4. Flat GEMM Optimization with Double Buffering

Decoding階段的過程主要由GEMV(batch size=1)或flat GEMM(batch size>1)。GEMV/GEMM運算可以用M、N、K來表示,其中兩個相乘矩陣的大小分別為M × K和K × N。一般LLM推理引擎利用Tensor Core使用cuBLAS和CUTLASS等庫來加速。盡管Tensor Core適合處理M = 8的GEMM,但這些庫為了隱藏memory latency,通常將M維度平鋪到64。然而,decodephase的GEMV或flat GEMM的M通遠小于64,于是填充0到64,導致計算利用率低下。

e9ca7236-828a-11ee-939d-92fbcf53809c.png

e9e9159c-828a-11ee-939d-92fbcf53809c.png

ea01d4e2-828a-11ee-939d-92fbcf53809c.png

ea189fce-828a-11ee-939d-92fbcf53809c.png

ea4097e0-828a-11ee-939d-92fbcf53809c.png

ea52f958-828a-11ee-939d-92fbcf53809c.png

為了隱藏memory access latency,本文引入了double buffering技術。具體來說就是在共享內存中分配兩個buffer,一個buffer用于執行當前tile的GEMM計算,同時另一個buffer則加載下一個tile GEMM所需的數據。這樣計算和內存訪問是重疊的,本文在N較大時采取這種策略,下圖為示意圖。

ea730982-828a-11ee-939d-92fbcf53809c.png

5. Heuristic Dataflow with Hardware Resource Adaption

影響LLM推理性能的因素有很多:(a)動態輸入。batch size和輸入序列長度的變化造成了工作負載變化。(b)模型多樣性。主要指模型結構和模型大小。(c)GPU能力不同。例如內存帶寬、緩存大小和計算能力。(d)工程優化。

雖然這些因素構建了一個很大的搜索空間,但LLM中不同layer的同質性大大減少了算子優化的搜索空間。例如,prefillphase和decodephase中有4個GEMV/GEMM操作(K、Q、V投影、O投影、2個FFN),都可以表示為[M, K]和N x K,對應了四種[N, K]組合,如下圖所示。此外,prefillphase的M與輸入序列長度和batch size有關,decodephase的M只與batch size有關。

eaa4a406-828a-11ee-939d-92fbcf53809c.png

本文根據不同的M, K, N選取FastGEMV、flat GEMM(本文方法)、CUTLASS。

eab90a0e-828a-11ee-939d-92fbcf53809c.png

個人總結

這篇文章沒有FlashAttention和FlashDecoding驚艷,個人覺得FlashDecoding的同步處理代價不大,而且本文中動態調整softmax方法也引入了判斷、終止和分支跳轉等操作。另一個Double Buffering就是內存優化常用的乒乓buffer,也沒什么新東西。

不過話說回來,如今在tranformer架構不變的情況,LLM加速只能靠這些工程手段去優化,的確也有不錯效果。還是很有價值的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7006

    瀏覽量

    88946
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4729

    瀏覽量

    128897
  • LLM
    LLM
    +關注

    關注

    0

    文章

    286

    瀏覽量

    327

原文標題:【FlashAttention-V4,非官方】FlashDecoding++

文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    谷歌終止官方支持?RISC-V坎坷的安卓適配之路

    、筆記本、SBC也陸續推出。然而在安卓這一用戶量最大的移動端OS上,這么多年以來,RISC-V的適配進展都相對有限。 ? 對于任何一個OS而言,完成新架構硬件的移植都不是一件易事。安卓作為一個開源操作系統,移植自由度極高,但如果有谷歌官方的開發支持自然更容易實現。
    的頭像 發表于 05-12 08:04 ?3277次閱讀
    谷歌終止<b class='flag-5'>官方</b>支持?RISC-<b class='flag-5'>V</b>坎坷的安卓適配之路

    TDC芯片數據手冊及官方參考例程

    路。現通過百度云盤分享出來。 通過網盤分享的文件:TDC資料合集V2.0.zip 鏈接: https://pan.baidu.com/s/1yAif8k6iBVuoFCE4W8-NSQ?pwd=hcve 提取碼: hcve --來自百度網盤超級會員
    發表于 11-06 23:06

    MHMF082A1V4-操作手冊 - PANATERM Ver6.0 松下

    電子發燒友網為你提供Panasonic(Panasonic)MHMF082A1V4-操作手冊 - PANATERM Ver6.0相關產品參數、數據手冊,更有MHMF082A1V4-操作手冊
    發表于 10-30 19:24
    MHMF082A1<b class='flag-5'>V4</b>-操作手冊 - PANATERM Ver6.0 松下

    MHMF042A1V4-操作手冊 - PANATERM Ver6.0 松下

    電子發燒友網為你提供Panasonic(Panasonic)MHMF042A1V4-操作手冊 - PANATERM Ver6.0相關產品參數、數據手冊,更有MHMF042A1V4-操作手冊
    發表于 09-30 19:08
    MHMF042A1<b class='flag-5'>V4</b>-操作手冊 - PANATERM Ver6.0 松下

    TAS5504-5142V4EVM應用報告

    電子發燒友網站提供《TAS5504-5142V4EVM應用報告.pdf》資料免費下載
    發表于 09-30 11:45 ?0次下載
    TAS5504-5142<b class='flag-5'>V4</b>EVM應用報告

    DS-AN3V PB30 CN-V4-開環霍爾電流傳感器

    電子發燒友網站提供《DS-AN3V PB30 CN-V4-開環霍爾電流傳感器.pdf》資料免費下載
    發表于 06-04 08:27 ?0次下載

    TYPC USB作為DEVICE使用的話,VBUS需要接5V電壓嗎?

    路都做了上拉。這個上拉主要是什么作用的? 4、另外這個上拉是到3.3V還是5V? 以下是官方文檔的截圖 以下是別的地方下載下來的應用電路圖
    發表于 06-03 08:46

    X-CUBE-CRYPTOLIB V4庫文件無法添加,鏈接錯誤的原因?

    官方介紹,V4版本的靜態庫是支持多個編譯器的,芯片是stm32h743,我用的是arm-none-eabi-gcc,版本是gcc version 13.2.1 20231009 (Arm GNU
    發表于 05-31 07:54

    將stm32_eth_lib的以太網程序移植到非官方版開發板一直不成功怎么解決?

    我最近將官方原版的uip協議族下面的以太網協議移植到官方的開發板(如格蘭瑞SupeARm STM32F107VX,或者神舟107系列),一直沒有成功,請問有哪位大神研究過,或者有相關的經驗,幫助小弟呀,小弟跪謝了
    發表于 05-17 12:32

    3.5V 至 36V 輸入、1V 至 20V 輸出、4A 電源模塊LMZM33604數據表

    電子發燒友網站提供《3.5V 至 36V 輸入、1V 至 20V 輸出、4A 電源模塊LMZM33604數據表.pdf》資料免費下載
    發表于 04-28 09:45 ?0次下載
    3.5<b class='flag-5'>V</b> 至 36<b class='flag-5'>V</b> 輸入、1<b class='flag-5'>V</b> 至 20<b class='flag-5'>V</b> 輸出、<b class='flag-5'>4</b>A 電源模塊LMZM33604數據表

    為什么無法安裝CUBE-MX-NFC6擴展包?

    在官網下載CUBE-MX-NFC6擴展包以使用NUCLEO-NFC08A1擴展板,但是CUBE MX提示非官方擴展包
    發表于 03-18 06:10

    斯坦福繼Flash Attention V1和V2又推出Flash Decoding

    斯坦福大學此前提出的FlashAttention算法,能夠在BERT-large訓練中節省15%,將GPT訓練速度提高2/3。
    的頭像 發表于 03-13 15:23 ?762次閱讀

    有沒有大佬用過銀河麒麟,進來聊聊

    因需要,要在銀河麒麟上裝一個open-vm-dkms,但是yum庫的官方源里面沒有這個軟件包,想討論討論還有沒有別的非官方的靠譜源,或者其他工具可以安裝這個軟件的,順便在問一下,銀河麒麟不是基于ubuntu18么,為什么里面沒有集成apt?
    發表于 01-23 14:57

    OpenOCD在線下載調試報錯的原因?

    由于我使用的是非官方的Flash,所以我需要重新編譯OpenOCD,在編譯完成過后,替換OpenOCD文件以后進行在線下載調試出現了如下的問題,我以為是我Flash命令的問題,知道我更換回原本的官方
    發表于 01-15 07:58

    LTC3305串聯蓄電池組的各個節點不能與芯片的V1-V4引腳直接相連嗎?

    。 另外對比了下您發給我的官方PCB設計電路,主要區別是:官方設計中在蓄電池與芯片的連接回路中加入了保險絲以及5Ω電阻。 串聯蓄電池組的各個節點不能與芯片的V1-V4引腳直接相連嗎? 芯片尚未使能,并未處
    發表于 12-26 06:38
    主站蜘蛛池模板: 黑人巨摘花破女处| 美女网站免费看| 男女又黄又刺激B片免费网站| 秋霞伦理高清视频在线| 亚洲成人一区二区| 18禁无遮挡羞羞污污污污免费| 成人AV无码一二二区视频免费看| 国产亚洲精品久久久无码狼牙套| 玖玖爱这里只有精品视频| 色欲久久精品AV无码| 中文字幕完整高清版| 亚洲中文字幕无码一去台湾| 亚洲国产欧美日韩在线一区| 99精品电影一区二区免费看| 国产久久精品热99看| 免费成年人在线视频| 亚洲福利电影一区二区?| 99久久夜色精品国产亚洲AV卜| 后入到高潮免费观看| 日本精油按摩| 中文字幕无线观看不卡网站| 国产精品v片在线观看不卡| 毛片大全网站| 亚洲精品无码不卡| 俄罗斯美幼| 欧美69xxx| 一亲二脱三插| 国产人妻777人伦精品HD| 欧美另类一区| 长篇高h肉爽文丝袜| 国产久久亚洲美女久久| 日本美女阴道| 97精品一区二区视频在线观看| 极品虎白在线观看| 乌克兰女人与动ZOZO| xnxx高中生| 玛雅成人网| 夜夜躁日日躁狠狠| 国产精品无码亚洲精品| 秋霞电影伦网理最新在线看片 | 人与禽交3d动漫羞羞动漫|