奔驰C300L&小米亮相英伟达GTC 2020,揭秘小米语音背后的硬核技术_推理

12月15日,英伟达GTC 2020如期举办,小米在“深度学习平台及应用”的分论坛进行《语音技术效率优化实践》的内容分享,聚焦深度学习推理优化和部署领域,小米AI实验室语音研发工程师颜钊、深度学习框架

原标题:小米亮相英伟达GTC 2020,揭秘小米语音背后的硬核技术

12月15日,英伟达GTC 2020如期举办,小米在“深度学习平台及应用”的分论坛进行《语音技术效率优化实践》的内容分享,聚焦深度学习推理优化和部署领域,小米AI实验室语音研发工程师颜钊、深度学习框架工程师李滨分别进行演讲,与行业、合作伙伴分享小米的语音技术进展。

在语音识别业务 batch 推理优化方面,小米的在线语音识别业务通过深度优化 Kaldi 中模型推理模式,将原来的单序列模式改为 batch 模式,帮助业务的吞吐量提升3 倍。在端到端语音合成模型 Tacotron2 的效率优化实践方面,小米分享了在利用 TensorFlow 框架在 GPU 上部署 Tacotron2 模型的过程中遇到的效率瓶颈和优化经验,如 CPU/GPU 交互开销优化、自定义算子融合、流式模型优化等。

基于Kaldi的BATCH-AM推理

Kaldi是当前最流行的开源语音识别框架,基于Kalid训练的chain-model也是当前性能最好的声学模型之一,另外Kaldi也提供了十分完善的工具集。

如果使用Kaldi中的解码器直接搭建语音识别服务的话,则会受限于Kaldi中的流式解码只支持单线程解码,而导致服务的吞吐量有限。一般来说,这个问题可以通过使用多线程技术得到缓解。当然,多线程的方式也不完美,其中GPU的算力没有得到充分的利用。

在Kaldi的基础上,我们实现了batch-am推理,更好地挖掘了GPU的算力,进一步提升了服务的吞吐量。batch-am技术的原理相对简单,就是打包多条语音同时送入GPU进行计算,其难点在于能够自动定位神经网络中context的位置并进行管理,且需要兼容Kaldi中各种各样的神经网络。最终,batch-am推理确实能够有效提升服务的吞吐量,以P4服务器为例,加入batch-am推理帮助单台服务器的吞吐量提升3倍。

Tacotron2推理性能优化

手机 x AIOT是小米的公司战略,而小爱同学就是其中很重要的一部分。每天小爱同学有1700万PV,这些访问的典型流程如下,包括了唤醒、声纹、识别、NLP/NLG和合成等几大部分,这几大部分的性能就尤其重要,本次分享重点关注合成部分。

小爱同学坚持用户体验至上,这就对合成的语音有很高要求。第一个是质量好,也就是合成品质高,自然度高。第二点是响应速度要及时,尽量让用户感觉不到等待时间,就像两个人的自然对话一样。第三点是个性化,可以根据每个用户的需求定制语音,用起来会感觉更亲切友好。

为达到这些要求,就需要采用更前沿的技术并做到极致的优化,而这就涉及到质量和复杂度的矛盾。传统的语音合成方法采用拼接合成,寻找候选单元间的最优路径,这种方法简单但合成质量较差。然后随着深度学习的流行,出现了基于深度神经网络的语音合成,对时长和声学特征分别建模。这种方法提升了语音合成的质量,相应地计算复杂度也大大增加。

目前最新的方法是采用端到端合成,利用注意力机制学习对齐信息,语音合成质量和自然度都大大提升,当然计算复杂度也提升了。我们现在采用的就是端到端合成的方法,采用这种方法就对模型推理性能提出了很高的要求。

语音合成模型Tacotron2是自回归模型,前后循环间存在数据依赖,采用GPU推理时并行化程度低,模型执行开销大,速度受限于内存带宽。

小米采用了cuDNN的LSTM实现,速度快很多;并消除了模型中间推理过程中需要多次回退到CPU的情况,切换开销减少;提升reduction factor,单次循环生成多帧,在单次循环时间变化不大的情况下整体循环次数减少多倍;展开了Decoder的while_loop,可以一次while循环执行多次推理,循环判断开销平摊下来大大降低;融合了大量算子,减少了CUDA kernel启动开销和访问显存的次数;最后采用混合精度推理,降低内存带宽对小batch LSTM速度的影响。

此次,小米亮相英伟达GTC 2020,不仅是对行业分享小米最近的技术进展,更希望与行业的合作伙伴联合起来,共同用AI技术为用户提升使用体验,让全球每个人都能享受科技带来的美好生活。

小米公司官方微信

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/8V6z5OxLd2.html

(0)

相关推荐