隨著用戶量的快速增?,語音識別性能問題凸顯,CPU推理方案在峰值場景TP99延時較高,且難以滿足高算力的業務場景。為確保良好的用戶體驗、進一步提升產品及服務質量,性能優化、降本增效勢在必行。
vivo AI工程中心在模型推理加速積累了多年經驗,為此自研一套語音識別流式推理引擎。引擎支持動態batching、顯存池、數據分桶排序等特性,同時支持CPU和GPU,并在GPU上取得了不錯的加速效果。
昆侖芯科技深耕AI加速領域十余年,專注打造擁有強大通用性、易用性和高性能的通用人工智能芯片,并持續精進在芯片架構、軟件棧、工程化系統層級等方面的技術實力。目前,昆侖芯科技已實現兩代通用AI芯片產品的量產及落地應用,通過用算力賦能不同場景中的 AI 應用,驅動千行百業的智能化轉型。
為進一步降本增效以及提升用戶體驗,vivo AI工程中心同步啟動AI多元算力項目,聯合昆侖芯科技,在語音識別場景首先展開研發共建,深入合作,并已取得階段性突破進展。
vivo自研語音識別流式推理引擎
整個引擎包括四部分:
1.wenet解碼器,包括前端處理(特征、VAD等)->encoder->語言模型(wfst)->decoder流程;
2.數據調度,動態batching、分桶排序等;
3..Runtime適配層,抽象模型推理接口,便于適配不同推理后端;
4.Runtime層,后端推理層包括onnxruntime、GPU、昆侖芯的XpuRT等。
自研引擎特點:
支持多batch流式請求,多batch能充分發揮硬件計算性能;
動態batchting,根據實際請求會在一定時間自動組裝batch,便于提升引擎的并發吞吐能力;
分桶排序,減少多batch的無效padding,減少無效計算量;
顯存池,高并發下流式識別緩存會頻繁申請和釋放,通過顯存池優化了這部分開銷,提高性能。
另外針對語言模型(wfst)優化:
語言模型的lattice-faster-decoder過程有千萬/秒的小對象內存申請(ForwardLink和BackpointerToken),通過將小對象合并大對象的池化方案,一次wfst的search從14ms減少到5ms;
線程模型優化。默認的線程模型是一個會話一個pthread線程,在GPU方案中,每秒數千線程創建系統負載較大,通過將pthread線程優化為bthread;
對象復用。將AsrDecoder池化復用,減少內存的動態申請,cpu性能提升27%。
昆侖芯高性能推理庫方案
AI推理引擎面臨的最大技術挑戰——同時滿足業務快速靈活迭代和硬件高性能。面對該挑戰,昆侖芯科技團隊為vivo提供了兩種解決方案:基于圖編譯引擎方案和基于高性能推理庫方案。綜合業務和性能的雙重考量,vivo團隊最終選擇了高性能推理庫方案。該方案基于昆侖芯API高性能算子庫自研模型推理大算子,主要由Encocer和Decoder兩個大算子組成。
高性能推理庫特點:
支持動態shape,性能與靜態shape無異,相比”靜態模擬動態“可節省大量寶貴的顯存資源;
支持多batch流式推理,解決流式推理一大難題,特別是cache管理;
深度圖優化,使用了昆侖芯豐富的圖融合優化,如:ffn_kernel_fusion、attention_fusion等,可變長優化技術等;
不同量化策略,FP16/INT8動態靜態量化以及混合量化;
定制算子融合,如ConforermEncoder的RelPos相關計算可以融合為rel_pos_fusion_kernel等;
自動化工具,模型一鍵導入等。
性能測試
對比不同后端的性能數據onnxruntime(cpu)、165w GPU、昆侖芯XPU。
硬件配置:
整體來看,在FP16量化后不同后端均達到精度無損,昆侖芯高性能推理庫方案單卡并發達到了1400路,相比CPU的350路的最大并發,性能提升約4倍,首字和尾字耗時也大大降低,降本增效明顯。單機單卡的測試外,也進行了單機4卡的壓測,單機4卡GPU和4卡R200均達到了4000路并發。
相對主流165w GPU方案,昆侖芯語音識別高性能推理庫方案通過構建大算子的方式也為業務根據自身特性做針對性融合、量化、裁剪提供了更加便捷、更加有用的工具。
昆侖芯在wenet中開源XPU支持
wenet是國內最大的語音開源社區,致力于推動語音技術落地, “共創共贏”。昆侖芯是wenet中支持的首款新型異構AI推理芯片,基于昆侖芯第二代推理卡模型推理采用語音高性能推理庫的非流式解碼方案,目前源碼已合入到wenet主線。第二階段,昆侖芯、vivo、wenet社區三方聯手,將共同推出圖引擎和高性能庫兩種后端推理,支持多batch流式解碼,模型優化到部署端到端的解決方案,為客戶業務落地持續賦能。
未來,昆侖芯將持續發揮在推理生態的領先優勢,助力語音業務用戶體驗不斷優化,同時也將與社區緊密合作,協力共建wenet國產生態。