vivo 携手昆仑芯、wenet 助力提升语音识别效果与性能,共建开源生态

摘要

语音识别是 AI 领域的一项重要基础服务,同样也是 vivo AI 体系中举足轻重的能力,是 Jovi 输入法、Jovi 语音助手等应用的基石。

语音识别是 AI 领域的一项重要基础服务,同样也是 vivo AI 体系中举足轻重的能力,是 Jovi 输入法、Jovi 语音助手等应用的基石。打造高准确率、高性能的语音识别引擎,才能给 vivo 亿级的语音用户带来良好的体验。基于 wenet 端到端语音识别工具,vivo 结合自身业务场景进行深度优化,成功研发离线和流式识别引擎,支撑 vivo 语音业务的快速发展。

随着用户量的快速增⻓,语音识别性能问题凸显,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 国产生态。

来源:互联网

最新文章

极客公园

用极客视角,追踪你不可错过的科技圈.

极客之选

新鲜、有趣的硬件产品,第一时间为你呈现。

张鹏科技商业观察

聊科技,谈商业。