在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在X3派上玩轉(zhuǎn)一億參數(shù)量超大Transformer,DIY專屬你的離線語音識(shí)別

地瓜機(jī)器人 ? 2023-02-21 16:08 ? 次閱讀

Transformer模型在自然語言領(lǐng)域被提出后,目前已經(jīng)擴(kuò)展到了計(jì)算機(jī)視覺、語音等諸多領(lǐng)域。然而,雖然Transformer模型在語音識(shí)別領(lǐng)域有著更好的準(zhǔn)確率,但還面臨著一個(gè)問題,計(jì)算復(fù)雜度和內(nèi)存儲(chǔ)存開銷會(huì)隨著語音時(shí)長的增加而變大。

技術(shù)普及在于產(chǎn)品價(jià)格親民,而價(jià)格親民在于技術(shù)易落地易實(shí)現(xiàn),離線語音識(shí)別應(yīng)運(yùn)而生,運(yùn)用深度學(xué)習(xí)等技術(shù)且只需在本地進(jìn)行運(yùn)算就可實(shí)現(xiàn)人機(jī)語音交互,而且具備實(shí)時(shí)的響應(yīng)速度、無需聯(lián)網(wǎng)的特點(diǎn),能更好的應(yīng)用在大小家電、照明、車載、健康儀器、教育設(shè)備等行業(yè)。

本次內(nèi)容由社區(qū)優(yōu)秀開發(fā)者、首百第四批新品體驗(yàn)官——宋星辰將帶領(lǐng)大家DIY個(gè)人專屬離線語音識(shí)別,在X3派上玩轉(zhuǎn)一億參數(shù)量的超大Transformer。歡迎感興趣的旭友們點(diǎn)擊注冊地平線開發(fā)者社區(qū)交流討論,相關(guān)文檔詳見地平線開發(fā)者社區(qū)。

技術(shù)詳解

Step-1:模型轉(zhuǎn)換的環(huán)境準(zhǔn)備

環(huán)境準(zhǔn)備本身沒有什么奇技淫巧,這里想重點(diǎn)描述的是:pytorch版本的升級對精度瓶頸和速度瓶頸分析所帶來的跨越式的體驗(yàn)提升。

在地平線開發(fā)者社區(qū)官方提供的安裝包中,為了兼容訓(xùn)練算法包海圖(HAT),安裝的 pytorch版本為1.10.0。pytorch版本本身對模型轉(zhuǎn)換的精度不會(huì)有什么影響,但是不同版本的pytorch所導(dǎo)出的onnx,在節(jié)點(diǎn)(node, 或稱op)命名上有很大的區(qū)別。

就一般情況而言,當(dāng)torch版本為1.10.0時(shí),Node的命名采用了“optype+數(shù)字”的形式,這種形式的缺點(diǎn)是:當(dāng)模型 Layer/SubLayer數(shù)量非常多(比如本文一億參數(shù)量的Transformer,包含的 OP 有上千個(gè)),我們很難一眼定位 Conv_xx 到底是第幾層的第幾個(gè)卷積

1.png


torch 1.10.0版本結(jié)果

通常一個(gè)量化明顯掉點(diǎn)的模型,會(huì)從中間某一個(gè)OP開始有鮮明的Cosine Similarity損失,在當(dāng)前的命名格式下,為了找到這個(gè)OP在原始模型中的位置(第x Layer的第y SubLayer),我們需要從頭開始一個(gè)一個(gè)數(shù),這無疑是效率低下的。當(dāng)然,隨著對模型細(xì)節(jié)的熟悉,定位的速度會(huì)越來越快,但這不能從根本上解決效率問題。

相反,當(dāng)torch版本升級到1.13.0時(shí)Node的命名采用了“Layer+SubLayer+Attribute+OP”的形式,一眼定位,一眼丁真,大大節(jié)省了開發(fā)人員定位精度問題(哪層的OP相似度下降嚴(yán)重)or 速度問題(哪層的OP跑在CPU)的時(shí)間。

2.png


torch 1.13.0版本結(jié)果

Step-2:C++ Demo 的編譯

由于X3派板端內(nèi)存有限,編譯C++ Demo時(shí)筆者采用了交叉編譯的形式,在開發(fā)機(jī)上sudo安裝aarch gcc即可。至于使用C++實(shí)現(xiàn)BPU模型的板上推理,實(shí)現(xiàn)推理的邏輯本身是一件很容易的事情,無論是使用python實(shí)現(xiàn)亦或是C++實(shí)現(xiàn),其流程都是固定的,也即:

3.png

關(guān)于這四個(gè)步驟的API調(diào)用范例,官方 C++ 文檔中都給出了比較詳細(xì)的 know-how 示例,但是大多數(shù)都是單模型 + 單輸入的簡單case,在語音識(shí)別模型中,會(huì)涉及到 多模型(多個(gè)bin串聯(lián))+ 多輸入(一個(gè)bin有多個(gè)輸入)的情況,這里給出本文的針對性示例:

// BPUAsrModel 類定義 using hobot::easy_dnn::Model; using hobot::easy_dnn::DNNTensor; using hobot::easy_dnn::TaskManager; using hobot::easy_dnn::ModelManager; class BPUAsrModel : public AsrModel { public: BPUAsrModel() = default; ~BPUAsrModel(); BPUAsrModel(const BPUAsrModel& other); void Read(const std::string& model_dir); void PrepareEncoderInput(const std::vector>& chunk_feats); // 其他成員函數(shù)... protected: void ForwardEncoderFunc(const std::vector>& chunk_feats, std::vector>* ctc_prob) override; private: // models std::shared_ptr encoder_model_ = nullptr; std::shared_ptr ctc_model_ = nullptr; // input/output tensors, 使用vector方便應(yīng)對單模型多輸入的情況 std::vector> encoder_input_, encoder_output_; std::vector> ctc_input_, ctc_output_; // 其他成員變量... };

Step-3:正式開始模型轉(zhuǎn)換

(一)一行代碼 改寫Transformer模型

使用工具鏈去轉(zhuǎn)換NLP領(lǐng)域的原生Transformer模型,體驗(yàn)可能會(huì)是非常糟糕的(甚至?xí)谵D(zhuǎn)換過程中直接報(bào)錯(cuò))。這是因?yàn)镹LP中的Transformer,輸入tensor的維度通常是二維或三維,類型既包含float也包含long 。而XJ3芯片在設(shè)計(jì)時(shí)只著重考慮了視覺任務(wù),通常都是浮點(diǎn)的四維圖像輸入,工具鏈也只對這類視覺模型有比較極致的體驗(yàn)優(yōu)化。

那么,為了轉(zhuǎn)換NLP類的Transformer,我們是否需要重頭訓(xùn)練一個(gè)四維數(shù)據(jù)流的模型呢?答案顯然是否定的,本文通過等價(jià)替換和抽象封裝,實(shí)現(xiàn)了一行代碼將原生Transformer等價(jià)改寫為BPU友好的Transformer:

# 一鍵完成 3D數(shù)據(jù)流 Transformer 等價(jià)轉(zhuǎn)換 4D數(shù)據(jù)流 Transformer Encoder4D = wenet.bin.export_onnx_bpu.BPUTransformerEncoder(Encoder3D)

這里的BPU TransformerEncoder就像是科幻電影中的“外骨骼機(jī)甲”一樣,其內(nèi)核沒變(權(quán)重參數(shù)值沒變),但是功能上實(shí)現(xiàn)了針對性升級。具體而言,在 BPUTransformerEncoder 的構(gòu)造過程中,會(huì)逐OP遍歷原生的 Encoder3D,并對其中的 BPU 不友好的 OP 實(shí)施等價(jià)改寫。

(二) 一句命令 走完轉(zhuǎn)換全流程

一個(gè)完整pytorch模型到bpu模型的轉(zhuǎn)換流程,一般要經(jīng)過如下四步:

①pytorch 模型 轉(zhuǎn) onnx 模型;

②構(gòu)造 Calibration 數(shù)據(jù);

③構(gòu)造 config.yaml;

④調(diào)用 hb_mapper 執(zhí)行 onnx 轉(zhuǎn) bpu bin。

在WeNet開源的代碼中,我們用人民群眾喜聞樂見的python把這四個(gè)步驟 “粘” 到了一起,使用如下命令,就可走完全流程。

python3 $WENET_DIR/tools/onnx2horizonbin.py \ --config ./model_subsample8_parameter110M/train.yaml \ --checkpoint ./model_subsample8_parameter110M/final.pt \ --output_dir ./model_subsample8_parameter110M/sample50_chunk8_leftchunk16 \ --chunk_size 8 \ --num_decoding_left_chunks 16 \ --max_samples 50 \ --dict ./model_subsample8_parameter110M/units.txt \ --cali_datalist ./model_subsample8_parameter110M/calibration_data/data.list

其中:

config(描述了模型配置,幾層layer等);

checkpoint(pytorch 浮點(diǎn)模型);

output_dir(.bin 文件輸出目錄);

chunk_size(跟識(shí)別有關(guān)的解碼參數(shù));

num_decoding_left_chunks(跟識(shí)別有關(guān)的解碼參數(shù));

max_samples(使用多少句數(shù)據(jù)制作calibration data);

dict(字典);

cali_datalist(描述了標(biāo)定數(shù)據(jù)的位置)。

綜上,我們對如下這四個(gè)步驟實(shí)現(xiàn)了完完全全的 python化封裝 和 一體化串聯(lián) ,真正實(shí)現(xiàn)了一句命令(python3 $WENET_DIR/tools/onnx2horizonbin.py ...)走完全部轉(zhuǎn)換流程。

Demo展示

硬件配置:

4.png

模型配置:

5.png

解碼速度對比(單核單線程,量化后的模型):

6.png

本文轉(zhuǎn)自地平線開發(fā)者社區(qū)
原作者:xcsong

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5096

    文章

    19199

    瀏覽量

    308165
  • 語音識(shí)別
    +關(guān)注

    關(guān)注

    38

    文章

    1745

    瀏覽量

    112987
  • 人工智能
    +關(guān)注

    關(guān)注

    1796

    文章

    47853

    瀏覽量

    240696
  • Transformer
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    6074
收藏 人收藏

    評論

    相關(guān)推薦

    離線語音識(shí)別技術(shù)引領(lǐng)智能語音燈具市場——NRK3502

    智能語音燈具集高科技與人性化設(shè)計(jì),內(nèi)置NRK3502離線語音識(shí)別芯片,支持遠(yuǎn)場識(shí)別與自定義指令,提供便捷智能體驗(yàn),推動(dòng)智能家居行業(yè)發(fā)展。
    的頭像 發(fā)表于 12-30 15:04 ?264次閱讀
    <b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>技術(shù)引領(lǐng)智能<b class='flag-5'>語音</b>燈具市場——NRK3502

    NRK3502系列芯片 | 制氧機(jī)離線語音識(shí)別方案

    NRK3502芯片制氧機(jī)離線語音識(shí)別方案制氧機(jī)離線語音識(shí)別方案是基于NRK3502藍(lán)牙雙模智能
    的頭像 發(fā)表于 12-04 01:02 ?223次閱讀
    NRK3502系列芯片 | 制氧機(jī)<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>方案

    離線語音芯片讓家電變得智能

    目前智能語音有多種方式,常見的有在線語音離線語音。因?yàn)橹悄?b class='flag-5'>語音處理需要用到算力,所以剛開始都是云端服務(wù)器提供算力來進(jìn)行
    的頭像 發(fā)表于 11-27 01:00 ?253次閱讀
    <b class='flag-5'>離線</b><b class='flag-5'>語音</b>芯片讓家電變得智能

    EVS103智能純離線語音識(shí)別芯片介紹

    EVS103是一顆亞毫瓦級超低功耗面向帶電池和便攜式產(chǎn)品,以及對功耗有嚴(yán)苛要求的各類產(chǎn)品推出的智能純離線語音識(shí)別芯片。依托于POROSVOC語音
    的頭像 發(fā)表于 11-11 11:34 ?369次閱讀
    EVS103智能純<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>芯片介紹

    影響離線語音識(shí)別靈敏度的因素

    有用戶反饋離線語音識(shí)別不靈敏,跟著筆者一起分析原因吧。筆者知識(shí)能力有限,難免會(huì)誤,還請大家批評指正。
    的頭像 發(fā)表于 10-25 17:13 ?794次閱讀
    影響<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>靈敏度的因素

    物聯(lián)網(wǎng)系統(tǒng)智能控制產(chǎn)品的語音識(shí)別方案_離線語音識(shí)別芯片分析

    01 物聯(lián)網(wǎng)系統(tǒng)中為什么要使用離線語音識(shí)別芯片 物聯(lián)網(wǎng)系統(tǒng)中使用離線語音識(shí)別芯片的原因主要基于以
    的頭像 發(fā)表于 09-26 17:56 ?833次閱讀
    物聯(lián)網(wǎng)系統(tǒng)智能控制產(chǎn)品的<b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>方案_<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>芯片分析

    九芯電子NRK330X智能風(fēng)扇離線語音控制方案

    隨著科技的快速發(fā)展,離線語音識(shí)別技術(shù)逐漸成為智能家居領(lǐng)域的重要組成部分。它能夠?qū)⑷祟惖?b class='flag-5'>語音轉(zhuǎn)化為計(jì)算機(jī)可識(shí)別的數(shù)字信號(hào),并在不需要聯(lián)網(wǎng)的情況
    的頭像 發(fā)表于 09-21 08:02 ?368次閱讀
    九芯電子NRK330<b class='flag-5'>X</b>智能風(fēng)扇<b class='flag-5'>離線</b><b class='flag-5'>語音</b>控制方案

    智能玩具用離線語音識(shí)別芯片有什么優(yōu)勢

    隨著科技的發(fā)展,很多智能電子產(chǎn)品和兒童玩具實(shí)現(xiàn)了與人類的交互,語音芯片在這些人機(jī)交互中起到了不可替代的作用,語音識(shí)別芯片在智能玩具中的應(yīng)用就為其帶來了更多的優(yōu)勢。?離線
    的頭像 發(fā)表于 09-20 10:00 ?349次閱讀
    智能玩具用<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>芯片有什么優(yōu)勢

    智能玩具用離線語音識(shí)別芯片有什么優(yōu)勢

    離線語音識(shí)別芯片NRK3301智能玩具中應(yīng)用廣泛,其高識(shí)別率、低成本、低功耗等特性,提升了用戶體驗(yàn)和互動(dòng)性,支持本地和云端處理,適合無網(wǎng)絡(luò)
    的頭像 發(fā)表于 09-19 10:00 ?698次閱讀
    智能玩具用<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>芯片有什么優(yōu)勢

    什么是離線語音識(shí)別芯片?與在線語音識(shí)別的區(qū)別

    離線語音識(shí)別芯片適用于智能家電等,特點(diǎn)為小詞匯量、低成本、安全性高、響應(yīng)快,無需聯(lián)網(wǎng)。在線語音識(shí)別功能更廣泛、
    的頭像 發(fā)表于 07-22 11:33 ?509次閱讀

    Transformer模型語音識(shí)別語音生成中的應(yīng)用優(yōu)勢

    隨著人工智能技術(shù)的飛速發(fā)展,語音識(shí)別語音生成作為人機(jī)交互的重要組成部分,正逐漸滲透到我們生活的各個(gè)方面。而Transformer模型,自其誕生以來,憑借其獨(dú)特的自注意力機(jī)制和并行計(jì)算
    的頭像 發(fā)表于 07-03 18:24 ?1358次閱讀

    智能故事機(jī)離線語音識(shí)別芯片,兒童教育新體驗(yàn)!

    產(chǎn)品如虎添翼,成為了市場上的熱銷產(chǎn)品。 智能故事機(jī)離線語音識(shí)別芯片的方案 故事機(jī)中置入NRK3301語音
    的頭像 發(fā)表于 05-22 09:21 ?627次閱讀

    **十萬級口語識(shí)別離線自然說技術(shù),讓智能照明更懂你**

    ,調(diào)節(jié)燈光的亮度、色溫,定時(shí),場景控制等,實(shí)現(xiàn)安全、節(jié)能、舒適、高效的照明體驗(yàn)。 智能照明中,語音控制因其便捷性而備受青睞。然而,傳統(tǒng)的離線語音控制方式存在諸多局限,如支持的詞條
    發(fā)表于 04-29 17:09

    離線自然說,無需記固定喚醒詞也能語音控制設(shè)備!

    電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)離線語音識(shí)別是指不需要依賴網(wǎng)絡(luò),本地設(shè)備實(shí)現(xiàn)語音識(shí)別的過程,通常
    的頭像 發(fā)表于 04-29 09:12 ?4901次閱讀
    <b class='flag-5'>離線</b>自然說,無需記固定喚醒詞也能<b class='flag-5'>語音</b>控制設(shè)備!

    澎湃微離線語音識(shí)別應(yīng)用實(shí)例

    隨著科技的飛速發(fā)展,人機(jī)交互的方式也不斷演變。鍵盤、觸摸屏之后,語音識(shí)別技術(shù)正逐漸成為人機(jī)交互的新寵。從技術(shù)路線上來講語音
    發(fā)表于 03-15 14:11 ?507次閱讀
    澎湃微<b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>識(shí)別</b>應(yīng)用實(shí)例
    主站蜘蛛池模板: 在线观看你懂的网站 | 国产精品天天在线 | 99视频网站 | 在线观看国产久青草 | 欧美一区二区三区性 | 人人射人人干 | 亚洲国产精品日韩专区avtube | 尤物视频黄| 精品一区二区视频 | 国产成人高清 | 欧美色图亚洲综合 | 男人j进入女人j在线视频 | 午夜视频播放 | 亚洲瑟瑟网 | 四虎永久免费网站入口2020 | 国产精品美女久久久 | 手机看片福利永久 | 婷婷涩五月 | 青草99 | 免费看一级特黄a大片 | 久久艹综合 | 亚洲深爱 | 色综合久久天天综合绕观看 | 天天躁夜夜躁狠狠躁2021a | 久久精品国产精品亚洲红杏 | 国产资源网| 欧美色频 | 手机看片午夜 | 日本久操视频 | 婷婷六 | 天天爽夜爽免费精品视频 | 黄色网络在线观看 | 一区二区三区四区在线免费观看 | 日日噜夜夜噜 | a成人| 天天躁夜夜躁狠狠躁躁 | 射在老师的里面真爽 | 久久精品免费观看久久 | 亚洲天堂视频在线播放 | 国产伦子系列视频6 | 天天摸天天做天天爽天天弄 |