国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

重塑翻譯與識別技術:開源語音識別模型Whisper的編譯優化與部署

算能開發者社區 ? 2024-01-06 08:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

模型介紹

Whisper模型是一個由OpenAI團隊開發的通用語音識別模型。它的訓練基于大量不同的音頻數據集,是一個多任務模型,可以執行語音識別、語言翻譯、語言識別。下面是模型的整體架構:

31bd2894-ac2b-11ee-aa22-92fbcf53809c.png

使用方法如下:

31d4587a-ac2b-11ee-aa22-92fbcf53809c.png

通過修改TPU-MLIR編譯器代碼,可以對Whisper模型性能進行深度優化,使得模型在SOPHON BM1684X處理器上運行時間減少到原來的一半,本篇文章將帶領大家對Whisper模型進行編譯與優化,并完成實際應用的部署

優化方法

本次模型優化很具有典型性,不僅適用當前模型,對其他模型也有幫助,下面對相關的優化方法進行介紹

Tile算子轉廣播

模型轉換完成后,觀察Profile時序圖和對應的MLIR文件,可以看到MatMulOp前面有兩個Tile操作,通過復制數據來使數據shape對齊,并且耗時占用十分明顯(如紅框所示),實際上完全可以利用算子的廣播功能實現,解決方法是使MatMulOp在hdim_is_batch的情況下支持n維度的廣播 (形如:5x1x8x64@1x1500x8x64 )。

31e978ea-ac2b-11ee-aa22-92fbcf53809c.png31f9b840-ac2b-11ee-aa22-92fbcf53809c.png

KVCache動態轉靜態

由于模型結構是基于Transformer模型結構構建的,KVCache的使用是比較常見的,對于使用KVCache的模型,我們的做法是,將KVCache作為模型的輸入和輸出。但在推理過程中KVCache會不斷增長,呈現一定的動態性,這就使得有一些數據需要PCIe重復搬運;內存管理比較復雜。通過padding將動態模型轉換為輸入和輸出為固定大小的靜態模型,并且在內部利用Slice和Concat算子自動完成數據拼接,減少外部內存處理復雜性,而且通過優化runtime過程避免多余的PCIe搬運。

3214dbac-ac2b-11ee-aa22-92fbcf53809c.png

Permute算子消除

完成上面兩步優化后,通過觀察Profile時序圖和分析final.MLIR文件發現,這一部分的網絡被分為了兩個LayerGroup,之間還存在許多Global Layer,這些都會導致額外的數據搬運。追溯這一現象的原因,很大可能是由于Slice、Concat和Permute三種操作的存在阻斷了LayerGroup的劃分。而且Permute、Concat和Slice的GDMA操作帶寬利用率低,浪費了較多時間。下面從這三個算子入手進行優化。

322c3130-ac2b-11ee-aa22-92fbcf53809c.png323ffbb6-ac2b-11ee-aa22-92fbcf53809c.png

在Transformer類的模型里,由于數據需要維度翻轉整理,造成模型里有很多的Permute操作,但是通過算子的實現,一些運行前后的Permute是可以相互抵消的。如下圖所示,MatMul算子輸入和輸出的Permut是可以消除的,主要步驟是將輸入的Permute算子移動到輸出,MatMul利用TPU指令的特性,實現轉置的矩陣乘法,并在輸出處與原來的Permute抵消掉。最終結果下圖右側所示。

325442ba-ac2b-11ee-aa22-92fbcf53809c.png

Slice+Concat算子融合

Slice和Concat本質上是將已經計算好但放置位置錯誤的結果進行截取或搬運。如果我們能提前知道結果應該放到哪里,就可以完全去掉這兩種操作。下面是一個典型的Slice+Concat的Pattern。通過分析右圖,可以看到為了將數據排到前面,Slice將Load后的數據進行搬運,之后Concat將MatMul的結果搬運到Slice后數據后面。其實這兩次搬運如果提前知道了放置位置,是可以去掉的。

326bcf0c-ac2b-11ee-aa22-92fbcf53809c.png

下圖示意了簡單的優化方法,在Load操作中引入一個Offset參數,表示數據在Global中的偏移,相當于在Load時直接做Slice, 減少了重復數據搬運,另外直接將Concat的輸出地址分配給Load,將數據直接寫在Concat的輸出地址,省去Concat的GDMA搬運時間。

327efdca-ac2b-11ee-aa22-92fbcf53809c.png

最終效果如下:

32917c0c-ac2b-11ee-aa22-92fbcf53809c.png

可以對比下優化前后的final.MLIR文件

323ffbb6-ac2b-11ee-aa22-92fbcf53809c.png32aa3abc-ac2b-11ee-aa22-92fbcf53809c.png

比較上面兩圖,可以看到Concat和Slice, Permute大部分都去掉了。從下面的Profile也可以看出明顯的提升:

32c3c90a-ac2b-11ee-aa22-92fbcf53809c.png

優化結果

經過上述優化,模型的運行時間由原來的23.143ms變為13.589ms。為方便定量分析,下面提供了優化前后的算子性能統計結果。

優化前性能統計

32d66448-ac2b-11ee-aa22-92fbcf53809c.png

優化后性能統計

32e611fe-ac2b-11ee-aa22-92fbcf53809c.png

部署代碼

部署代碼目前已經開源(https://github.com/JKay0327/whisper-TPU_pyd)。本Whisper應用整體是由多個環節串聯起來的,包括前處理、Encoder、Language Detect Decoder、以及主循環中的Decoder迭代過程。上面優化的主要是針對主循環中的Decoder模型進行的。具體運行過程如下圖所示。

32fe7ae6-ac2b-11ee-aa22-92fbcf53809c.png

使用方法如下:330f722e-ac2b-11ee-aa22-92fbcf53809c.png

下面是實際的運行結果展示:3321113c-ac2b-11ee-aa22-92fbcf53809c.png

結論

本文是對在Whisper模型應用過程中的總結,說明了在模型優化過程中采用的各種思路和方法,最終將模型的性能翻倍。Whisper模型是一個很有價值的應用,可以實現各種語音任務,期待大家借助算能產品進行更多功能的開發。

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

    關注

    39

    文章

    1812

    瀏覽量

    116042
  • 模型
    +關注

    關注

    1

    文章

    3751

    瀏覽量

    52097
  • 音頻數據
    +關注

    關注

    0

    文章

    13

    瀏覽量

    10124
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    EASY EAl Orin Nano(RK3576) whisper語音識別訓練部署教程

    Whisper是OpenAI開源的,識別語音識別能力已達到人類水準自動語音
    的頭像 發表于 07-17 14:55 ?1758次閱讀
    EASY EAl Orin Nano(RK3576) <b class='flag-5'>whisper</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>訓練<b class='flag-5'>部署</b>教程

    基于labview的語音識別

    處理過程基本上是一致的。目前主流的語音識別技術是基于統計模式識別的基本理論。一個完整的語音識別
    發表于 03-10 22:00

    阿里開源自研語音識別模型DFSMN使用技巧指南

    重磅!阿里開源自研語音識別模型DFSMN,準確率高達9604%
    發表于 09-16 06:53

    【HarmonyOS HiSpark AI Camera】基于圖像的手語識別機器人系統

    端微量部署優化,實現脫離電腦云,離線的情況下便捷的識別手語圖像輸入。⑤開源分享。預計成果①目前已經完成神經網絡部分權重訓練,根據OpenPose人體姿態
    發表于 09-25 10:11

    離線語音識別及控制是怎樣的技術

    信號轉化為文本或語義結果。  與傳統的云端語音識別相比,離線語音識別的工作原理是將語音識別
    發表于 11-24 17:41

    語音識別技術,語音識別技術是什么意思

    語音識別技術,語音識別技術是什么意思  語音
    發表于 03-06 11:16 ?3191次閱讀

    語音識別技術的應用及優化

    一、引言 語音識別技術是一種能夠讓計算機“聽懂”人類語言的技術。隨著科技的不斷發展,語音識別
    的頭像 發表于 10-10 17:26 ?3871次閱讀

    語音識別技術優化與發展趨勢

    模型優化:針對模型結構的優化是提高語音識別技術的重要
    的頭像 發表于 10-12 18:33 ?1825次閱讀

    基于深度學習的情感語音識別模型優化策略

    基于深度學習的情感語音識別模型優化策略,包括數據預處理、模型結構優化、損失函數改進、訓練策略調
    的頭像 發表于 11-09 16:34 ?1788次閱讀

    情感語音識別技術前沿與未來趨勢

    前沿 深度學習模型的持續優化:隨著深度學習技術的不斷發展,情感語音識別技術也在持續
    的頭像 發表于 11-28 18:35 ?1297次閱讀

    語音識別技術的應用與發展

    體驗。 語音識別技術的原理 語音識別技術的核心在于將聲波信號轉換為可理解的文本信息。這一過程通常
    的頭像 發表于 11-26 09:20 ?2578次閱讀

    用英特爾CPU及GPU運行OpenAI-whisper模型語音識別

    作者: 金立彥 介紹 Whisper 作為一款卓越的自動語音識別(ASR)系統,依托海量且多元的監督數據完成訓練,其數據規模高達 680,000 小時,涵蓋多種語言及豐富多樣的任務類型,廣泛采擷自
    的頭像 發表于 12-03 10:14 ?2148次閱讀
    用英特爾CPU及GPU運行OpenAI-<b class='flag-5'>whisper</b><b class='flag-5'>模型</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>

    EASY EAl Orin Nano(RK3576) whisper語音識別訓練部署教程

    1Whisper簡介Whisper是OpenAI開源的,識別語音識別能力已達到人類水準自動
    的頭像 發表于 07-25 15:21 ?850次閱讀
    EASY EAl Orin Nano(RK3576) <b class='flag-5'>whisper</b><b class='flag-5'>語音</b><b class='flag-5'>識別</b>訓練<b class='flag-5'>部署</b>教程

    廣和通發布自研端側語音識別模型FiboASR

    7月,全球領先的無線通信模組及AI解決方案提供商廣和通,發布其自主研發的語音識別模型FiboASR。該模型專為端側設備上面臨的面對面實時對話及多人會議場景深度
    的頭像 發表于 08-04 11:43 ?1588次閱讀

    瑞芯微(EASY EAI)RV1126B 語音識別

    字符序列。與說話人識別及說話人確認不同,后者嘗試識別或確認發出語音的說話人而非其中所包含的詞匯內容。我們的語音算法是基于Whisper是Op
    的頭像 發表于 01-21 10:43 ?832次閱讀
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>語音</b><b class='flag-5'>識別</b>