精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

wenet的優化

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-08-18 11:29 ? 次閱讀

wenet概述#

wenet處理流程#

wKgZomTeyZ-ALa7SAAEqdc2qTVM476.png

wav語音經過一系列前處理之后送入encoder,encoder的輸出會給到ctc decoder和attention decoder。其中ctc decoder是深度優先的搜索程序,負責搜索出n段候選預測序列,然后ctc的結構與encoder的結果一起送入attention decoder進行預測序列的打分,選出最好的預測序列,輸出結果

模型結構#

encoder#

wKgaomTeyaGANoGsAAK69w7W7co878.png

encoder是12個conformer模塊堆疊

decoder#

wKgZomTeyaKAWDXwAAEnAKQVIqs107.png

decoder基本結構是transformer,先經過字的自注意力再和mel特征進行交叉注意力,wenet的decoder是雙向decoder,有一個預測序列從左到右的打分,還一個從右到左的打分,每個decoder堆疊3個transformer(取決于訓練時的配置文件,也可以是6個)

模型優化#

圖優化#

結合netron觀察模型圖結構,考慮以下幾個優化方向

刪除冗余算子

算子融合

改變算子執行順序

Where(MaskedFill)的優化#

wKgaomTeyaSAWoIsAAFcCwqRa6c404.png

這段網絡是在做掩碼操作,即輸入一個掩碼 Tensor對數據做Mask,第一個Where把不需要的數據設置為-inf。經過Softmax之后這些數據已經變成了0,但是后面又增加了一個Where,把相同位置再次設置為了0。

wKgZomTeyaWAcfanAACtJEluenk518.png

這段結構在網絡中出現了12次,單Where算子耗時30 ms相當于多了一倍的計算時間,可以在編譯階段使用圖優化進行消除,減少模型計算量。

耗時從30ms降低到15ms

MatMul的優化#

wKgZomTeyaeAEPc8AAJ5lfAzfvs517.png

1.這段結構在Decoder中出現6次,且屬于計算集中的attention部分。但是C維度在transpose之后只有8,我們的TPU有64個lane,算力沒有完全利用起來

2.有transpose隔斷了layer group,增加了數據搬運

優化:

1.可以使用hdim_is_batch優化,把attention的head放在h維。為了保證網絡變換前后等效,需要在matmul后面新生成一個transpose。

2.生成新的transpose之后,實現masked fill算子、softmax算子的transpose move down的優化pattern,使得tranpose的執行順序可以放到該段結構結束處,同時與結束處原本有的tranpose做抵消,達到減少數據搬運的目的。

3.由于消除了transpose,使得這段網絡可以做到local layer,同時因為把349放到c維度了,又可以充分利用64個lane的計算資源了

wKgZomTeyayAel42AAXTamGxFwg298.png

其余的算子經過transpose move down,可以實現transpose的一路下移,在局部網絡中讓C可以保持349,使得64個lane可以獲得更充分的利用

算子層面優化#

Where(MaskedFill)的優化#

wKgaomTeya6AWz52AADcT8Oon-k569.png

MaskedFill如果全走Global耗時30ms,即便減少一半的算子數量還是15ms。而Select算子有local的實現,同時可以通過參數配置完成MaskedFill的功能,但不支持廣播。所以在編譯階段加入Tile完成廣播,從而支持Local Layer。

wKgaomTeya-AcNzRAACBcIJMIgQ887.png

但引入了Tile,Tile操作本身耗時3.8ms,代價可接受,后續可以進一步優化

wKgZomTeybCAJk57AAEuRK3GEhE470.png

MaskedFill算子從30ms 減半數量后到15ms,引入tile之后減少到3.8ms(Tile)+127us(MaskedFill)

后續考慮使用bdc完成tile操作,完成進一步優化

CPU Layer的優化#

wKgaomTeybKAPHY9AAG_G_CQhVo143.png

兩個CPU Gather PT操作占用456ms,可以使用dma的Gather操作在TPU實現算子

wKgZomTeybOAIYa6AADikm9Wew4063.png

Gather PT算子從456ms減少到68us

優化結果#

WeNet Decoder 耗時
原始模型 611ms
CPU Layer替換 156ms
MaskedFill 減半 141ms
MatMul hdim_is_batch優化+Permute Move優化+MaskedFill支持Local 71ms


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

    關注

    68

    文章

    10827

    瀏覽量

    211167
  • 模型
    +關注

    關注

    1

    文章

    3176

    瀏覽量

    48721
  • 算子
    +關注

    關注

    0

    文章

    16

    瀏覽量

    7252
收藏 人收藏

    評論

    相關推薦

    UG編程:深入解析UG編程優化刀路,收獲巨大#硬聲創作季

    優化UGUG編程
    電子學習
    發布于 :2022年11月18日 20:33:34

    [7.2.1]--b)綜合及優化_clip001

    IC設計優化
    jf_60701476
    發布于 :2022年11月26日 23:29:40

    [7.2.1]--b)綜合及優化_clip002

    IC設計優化
    jf_60701476
    發布于 :2022年11月26日 23:30:42

    [7.2.1]--b)綜合及優化_clip003

    IC設計優化
    jf_60701476
    發布于 :2022年11月26日 23:31:44

    04_異步V值更新優化算法實現D(2)#人工智能

    人工智能優化
    jf_49750429
    發布于 :2022年11月28日 02:44:58

    優化模型與Lindo/Lingo優化軟件

    優化模型與Lindo/Lingo優化軟件 優化模型簡介 LINDO公司的主要軟件產品及功能簡介 LINDO軟件的使用簡介 LINGO軟件的使用簡介  建模與求解實例(結合軟件使用
    發表于 09-15 12:22

    優化的度

    優化的度  網站優化的方法有很多,下面是一等一SEO教程學習網總結了一些內容,分享一下。在我們進行網站優化時,總會出現些優化過度而導致網站被降權,甚至被K站。那么怎么才能知道自己是否網
    發表于 11-13 15:21

    使用gcc編譯優化與不優化問題

    同樣的程序,使用gcc編譯優化與不優化的結果不一代碼如下:1. #include 2.3. int main()4. {5.int i = 1;6.7.i
    發表于 09-27 10:33

    MySQL優化之查詢性能優化之查詢優化器的局限性與提示

    MySQL優化三:查詢性能優化之查詢優化器的局限性與提示
    發表于 06-02 06:34

    什么是內存優化?有那些優化措施?

    什么是內存優化?有那些優化措施?
    發表于 01-14 06:22

    請問Transaction interval是否可以優化?如何優化

    的8bit中進行數據編碼),只能每18bit或者27bit執行一次發送事務。在一次發送事務中,Transaction interval大約占了94.5%(20MHz SCLK見下圖)。請問Transaction interval是否可以優化? 如何優化
    發表于 03-03 06:16

    優化Unity程序的方法

    優化是接受應用程序并使其更有效率的過程。對于圖形應用程序,優化通常意味著修改應用程序以使其更快。例如,低幀率的游戲可能會顯得跳躍,這會給人留下不好的印象,并可能使游戲難以玩。您可以使用優化來提高游戲
    發表于 08-02 18:52

    軟件優化指南

    優化對不同的人意味著不同的事情。 在某些情況下,您可能只是希望代碼盡可能快地運行。 但是,如果您正在為嵌入式系統編寫代碼,您可能更喜歡優化代碼密度以減少應用程序的內存占用。 通常,這些優化約束相互
    發表于 08-28 06:41

    優化模型與LINDO/LINGO優化軟件

    優化模型與LINDO/LINGO優化軟件: 優化模型簡介LINDO公司的主要軟件產品及功能簡介LINDO軟件的使用簡介LINGO軟件的使用簡介建模與求解實例(結合軟件使用)
    發表于 09-24 09:04 ?23次下載

    利用NVIDIA Triton推理服務器加速語音識別的速度

    網易互娛 AI Lab 的研發人員,基于 Wenet 語音識別工具進行優化和創新,利用 NVIDIA Triton 推理服務器的 GPU Batch Inference 機制加速了語音識別的速度,并且降低了成本。
    的頭像 發表于 05-13 10:40 ?1857次閱讀