天天看點

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

過去一年淘寶直播快速發展,截止2020年9月底,80個淘寶直播産業基地在全國落地開花,從農村走出10萬農民主播,直播真正意義上成為幫助商家和消費者完成交易的利器,同時通過各種互動玩法讓直播購物變得有趣好玩。在2020年雙11開始階段,淘寶直播App更新了18年直播答題「點題成金」的玩法,推出「一猜到底」新玩法。如果說傳統的直播答題是「選擇題」,一猜到底的玩法更像是幾萬人同時線上的「搶答題」,将答題方式從文字選擇更新成語音搶答,給出猜中價格高低提示,讓使用者增加了更多的參與的樂趣。

為了實作比肩綜藝現場的直播競猜體驗,我們一次壓上了由達摩院語音實驗室、阿裡雲PAI團隊、淘系技術直播App和端智能MNN團隊組成的全明星陣容,通力協作之下,一舉實作了工業界首個用于直播的移動端語音識别。

業務流程和技術挑戰

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

「一猜到底」整體玩法鍊路如上圖所示,主播口播開始後,使用者需要在人數和時間未滿前,按住按鈕,通過語音報出價格,系統通過本地語音識别能力進行識别和結果比對,提示使用者所報價格“過高”還是“過低”,直到答對或者逾時結束。在每一關有限的作答時間内,使用者往往需要多次競答,才能逼近商品的真實價格。于是,實時語音識别能不能準确且快速地識别使用者的報價,直接決定了「一猜到底」的成敗。

不同于一般的語音識别應用,一場頂流的淘寶直播,可以聚集百萬乃至千萬的使用者圍觀。這麼多使用者同時進行語音識别,會出現非常多的請求,如果采用雲端識别對服務壓力和服務品質都有非常大的挑戰。項目開始時實驗了端側和雲側識别的兩種方案,發現雲側方案難以支撐這樣的活動,最終選擇了端側方案,确定端側識别方案之後,發現也不是康莊大道,主要存在以下技術難點:

* 高精度高性能的本地語音識别

目前行業比較成熟的是服務端的語音識别方案,完全照搬服務端方案到移動端也不現實,需要建立一套适合移動端運作的語音識别方案。同時,直播場景下的語音答題噪聲較大,對語音識别的準确度要求較高,語音識别速度也會對使用者的答題速度造成巨大影響。

* 語音模型和資源包體積過大

考慮到活動特性,端側的語音識别引擎需要内置在包内,而且越小越好。經過用戶端研發評估,如何做到15MB以内甚至更小的語音模型是關鍵,是以需要極緻的模型壓縮能力支援。

* 端側資源有限,性能壓力大

直播場景本身就已經很占用資源,疊加直播場景下做語音識别,對語音識别過程中的CPU、記憶體占用,都有很大的要求,高性能的推理和優化成為模型落地的最大攔路虎。

移動端實時語音識别技術大揭秘

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

阿裡達摩院語音實驗室早在2015年就研發出了第一代移動端離線語音識别方案,近來結合PAI模型壓縮、MNN高性能推理引擎,實作了移動端離線和流式端到端語音識别方案,滿足語音指令、語音識别、實時翻譯等場景需求。根據「一猜到底」項目需求,我們選取"基于SAN-M的離線端到端語音識别"方案,通過極緻的模型壓縮和性能優化,最終實作模型大小小于15MB、記憶體占用低于60MB、1s語料識别快于50ms的高性能方案。

▐ 基于SAN-M的離線端到端語音識别

目前,最具代表性的離線端到端語音識别模型LAS[1]和Transformer[2]都是基于Attention-Encoder-Decoder的。LAS采用基于BLSTM的Encoder和基于單向LSTM的Decoder;而Transformer則采用Multi-head Self-Attention子產品組建Encoder網絡,采用Masked Multi-head Self-Attention組建Decoder網絡。

在公開評測任務集上,Transformer較LAS在性能上有優勢,同時由于采用了Multi-head,訓練并行化效率更高。我們分析了Self-Attention和DFSMN memory block[3,4]之間的關聯性:Self-Attention可以了解為采用了context-dependent系數進行全局模組化,而DFSMN的memory block則采用了context-independent系數進行局部模組化。對于語音識别,局部聲學模組化和全局語義模組化都非常重要,是以我們提出了如下圖所示的SAN-M模型結構,高效地融合了Self-Attention和DFSMN memory block。

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

SAN-M子產品如上左圖所示,将Self-Attention和DFSMN memory block融合一個子產品,有效的結合了Self-Attention的全局長時模組化能力和memory block的局部長時模組化能力。基于SAN-M子產品建構了如上右圖的Encoder-Decoder離線語音識别系統(SAN-M-E2E-ASR),并在開源的1000小時AISHELL-2中文識别任務中獲得了目前該任務的最優性能(CER=5.61%);在工業量級的2萬小時中文識别任務中,該系統也顯著優于我們之前線上的CTC系統和标準Transformer系統。

針對本次識别場景,我們最終實作了不到40MB的端到端模型,而識别性能則可以媲美上一代整體超過100GB大小的雲端DFSMN-CTC系統。我們在finetune資料上進行了不同次元的挑選和搭配,并做了不同政策的資料擴增來覆寫多樣的識别情況。針對模型輸出的token,也進行了一定壓縮,并拉低了與本次任務無關的token機率來降低誤識别率。在ITN子產品,我們采用精小的FST(Finite State Transducer)來實作規則網絡,用狀态轉移來實作文字到阿拉伯數字的轉換,通過邊上權重來控制其轉換方向,并在簡略讀法、諧音、容錯上也做了一系列路徑優化。

▐ 基于PAI-MNN雲端一體化模型壓縮

雖然達摩院語音實驗室通過定制化語音識别模型設計,将原有的170MB模型裁剪至不到40MB,但是考慮到移動端的資源情況,我們還需要通過PAI-MNN雲端一體化模型壓縮方案,進一步将模型基本無損地壓縮到15MB以内。

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

從訓練、模型壓縮到優化部署的PAI-MNN雲端一體方案

PAI混合精度量化流程

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

上圖顯示了PAI團隊 (PAI: Platform of A. I. in Alibaba)研發的無資料标注幹預的自動混合精度量化流程(Label-free AMP Pipeline, AMP: Automatic Mixed Precision),包括量化誤差預補償、離線标定、量化噪聲分析與混合精度決策四個階段,主要創新點包括:

支援端到端Transformer的離線後量化:

  • PAI團隊的後量化方法,引入了循環張量探針,以支援端到端Transformer的離線後量化。
  • 相比于拆圖量化、量化訓練等,端到端後量化具備快捷、高效的優勢;

內建了豐富的後量化政策,為後量化的精度魯棒性提供了堅實保證,基本政策包括:

  • KL算法的改進,能夠有效減少輸入/輸出張量的量化噪聲;
  • EasyQuant(參考文獻 [5])的使用,可進一步減少輸入/輸出張量的量化誤差,尤其能改善INT7等更低精度量化的效果;
  • Bias Correction(參考文獻 [6])通過補償網絡權重的量化偏差(均值與方差的偏差),以減少權重量化噪聲;同時對Bias Correction的适當改進,增強了對SAN-M ASR模型的補償效果;
  • ADMM(參考文獻 [7])亦可優化權重量化參數,減少權重量化噪聲;也适當改進了ADMM的使用,進而在交替方向疊代範圍内,確定權重量化誤差最小;
  • Weight Adjustment(參考文獻 [8])在Kernel weight按Per-tensor量化時,通過Per-channel形式的等價均衡變換,可以減少Weight量化誤差。

無Label幹預的混合精度量化流程:

  • 該流程從模型輸入到混合精度決策,無需資料标注(Label)的幹預,簡潔易用、快捷有效;
  • 量化誤差按逐層統計,且能準确反映每個網絡層的量化敏感度,為混合精度(INT8/FP32混合)決策提供了可靠基礎;
  • 通過控制回退的網絡層數,可選擇出精度與模型容量折中最佳的帕累托最優解,完成多目标優化;
  • 生成的混合精度量化表,能夠對接移動端推理架構MNN,以生成低延遲、高推理精度的運作時推理引擎;進而構成了完整的工具鍊路,即從混合精度量化、到移動端的推理部署;
  • AMP Pipeline不僅适用于移動端,也适用于CPU/GPU優化部署,展現了PAI雲端一體的優勢所在。

基于PAI AMP Pipeline,有效實作了SAN-M模型的離線後量化(PTQ: Post-training Quantization)。為了保持算法模型識别精度,經AMP INT8量化之後(回退3個Op,分類層保留為FP32實作)。

為了解決壓縮率的問題,MNN模型轉換和優化工具對回退的算子統一使用權重8bit存儲、float計算的方式進行優化,進一步壓縮模型大小。通過一套統一格式的模型壓縮檔案,經過PAI AMC優化的模型可以順滑無縫地轉換到MNN的格式。

MNN模型轉換工具基于現有的圖優化流程,根據該模型壓縮檔案将float模型轉換成MNN模型的同時完成離線量化,具體過程如下:

  • 根據量化表中提供的tensor name,在TensorFlow的計算圖中生産和消費該tensor的邊上同時插入一個自定義的量化和反量化算子。
  • 将TensorFlow的計算圖轉換成MNN的計算圖,其中自定義的量化和反量化算子轉換成MNN量化(FloatToInt8)和反量化(Int8ToFloat)算子。
  • 算子融合:将支援量化的算子、輸入的反量化算子和輸出的量化算子融合成一個Int8的算子。
  • 最後消除成對的MNN量化和反量化算子。
淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

最終,SAN-M模型在衆包測試集上的WER絕對損失低于0.1%、SER絕對損失低于0.5%、理論壓縮比約為3.19倍。

▐ 基于MNN推理引擎的實時高性能計算

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

為了在移動端上實作實時的端到端語音識别模型推理計算,MNN在全鍊路上做了諸多優化。

端到端語音識别模型基于Transformer結構,包含一個對輸入音頻特征編碼的Encoder和一個自回歸解碼的Decoder。這類模型結構要求MNN支援Control Flow、Dynamic Shape和Zero Shape等特性,是以,MNN首先在架構層面對這些特性進行了支援和完善:

  • MNN重構了Control Flow支援方案,提供使用者透明的functional control flow實作,并支援了TensorFlow 1.x的控制流模型轉換,為使用者提供一站式的部署體驗。
  • 對于Dynamic Shape的支援,MNN将整圖按照動态形狀算子劃分為多個分段子圖。在代碼層面,一個子圖對應一個Module,Module支援嵌套,即整圖被表達為一個由Module組成的調用樹,樹的每個葉子節點可以使用一個Session來執行,Session每次執行前resize,重新進行shape推理和配置設定記憶體。
  • Zero Shape指的是模型中某些Tensor的shape存在0值,比如 (1, 0, 256),這種情況大多是為了給while-loop中某些循環變量提供初始值而引入的。MNN在形狀推理和執行邏輯上對Zero Shape進行了支援。

之後,MNN根據達摩院模型新增了LayerNorm Fuse、Constant Folding、重複Reshape算子消除等圖優化方法。圖優化之後的計算圖更容易和其他優化方法組合使用,比如,Constant Folding後MatMul的一個輸入可能被替換成一個Constant節點,是以就可以轉換成FullyConnected或Conv1x1進行加速,并且也更容易利用模型壓縮方法對權重進行量化。

而後,語音模型的耗時重點仍然是矩陣乘法。MNN通過更優矩陣乘分塊、基于 NC4HW4 布局優化前後記憶體布局轉化、Strassen 算法改進等政策,優化了整體的卷積和矩陣乘的性能,ARM 架構上性能提高了 10%-20% ,保障了語音模型的高效運作。

同時,MNN最新提出的幾何計算機制也在實時語音識别起到了重要作用。幾何計算是MNN為了解決裝置碎片化問題而提出的一種新機制,其核心在于把坐标映射标準化,以便統一實作與優化。在幾何計算的支援下,我們可以較簡單地合并相鄰的純形變算子,進而降低訪存需求,提升模型運作性能。

最後,在PAI-MNN雲端一體化模型壓縮的加持下,我們利用量化表和有限回退機制,在精度損失可控的前提下,進一步降低了移動端上的計算總量。

RTF (real time factor),即實時率,表示識别一秒鐘音頻需要的耗時。

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

在這一系列組合拳之下,我們才最終在目标裝置上,将RTF(real time factor)降低到了目标值0.02以下,進而實作實時語音識别,讓「一猜到底」得以走到每一個使用者的面前。

總結與展望

通過這次項目合作,基于高性能推理引擎MNN,結合一流的語音模型設計和模型壓縮技術,我們已經能在移動端上實作實時的語音識别,并通過了雙11核心場景的考驗。除了上述離線端到端語音識别之外,我們還實作了更複雜的流式端到端語音識别,能夠低延遲地流式輸出識别結果,可以應用到語音實時翻譯等場景。

在硬體算力、模型設計、模型壓縮和推理引擎飛速發展的共同推動下,CV、Data的AI應用場景已經日趨成熟,ASR、NLP的規模化應用也已指日可待,端側AI的應用場景仍在持續發酵。

淘系技術部端智能團隊,基于淘系豐富業務場景,持續進行端側AI技術建設和業務創新實踐。除開源推理引擎MNN之外,我們将上百次AI應用開發實踐中積累的經驗沉澱為MNN 工作台。MNN工作台将極大降低AI應用門檻,将AI研發的效率提升數十倍,讓“技術小白”也能快速上手,輕松設計自己的AI應用。MNN工作台已于近日正式對公衆開放,趕快進入MNN官網下載下傳體驗吧。

MNN官網:

http://www.mnn.zone

參考:

[1] Chan W, Jaitly N, Le Q, et al. Listen, attend and spell: A neural network for large vocabulary conversational speech recognition[C]//2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2016: 4960-4964.

[2] Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems. 2017.

[3] Zhang S, Lei M, Yan Z, et al. Deep-fsmn for large vocabulary continuous speech recognition[C]//2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018: 5869-5873.

[4] Zhang S, Lei M, Liu Y, et al. Investigation of modeling units for mandarin speech recognition using dfsmn-ctc-smbr[C]//ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019: 7085-7089.

[5] Di Wu, Qi Tang, Yongle Zhao, Ming Zhang, Ying Fu, Debing Zhang, "EasyQuant: Post-training Quantization via Scale Optimization", arXiv preprint 2006.16669, 2020.

[6] Ron Banner, Yury Nahshan, Elad Hoffer, Daniel Soudry, "Post-training 4-bit quantization of convolution networks for rapid-deployment", arXiv preprint 1810.05723, 2018.

[7] Cong Leng, Hao Li, Shenghuo Zhu, Rong Jin, "Extremely Low Bit Neural Network: Squeeze the Last Bit Out with ADMM", arXiv preprint 1707.09870, 2017.

[8] Markus Nagel, Mart van Baalen, Tijmen Blankevoort, Max Welling, "Data-Free Quantization Through Weight Equalization and Bias Correction", arXiv preprint 1906.04721, 2019.

關注「淘系技術」微信公衆号,一個有溫度有内容的技術社群~

淘寶直播“一猜到底”——移動端實時語音識别技術方案及應用業務流程和技術挑戰移動端實時語音識别技術大揭秘總結與展望

繼續閱讀