音视频及家电
(文章来源:机器之心)
英伟达近日一篇论文为语音识别技术在边缘设备上的部署带来了福音,其新提出的解码器方法即使在边缘嵌入式 GPU 上也能高效高速地执行。而且这种方法不仅适用于低端硬件,而且也能为数据中心带来显著的效率提升,从而能够识别更多并行的在线音频流。该方法的早期版本已开源。
这篇论文提出了一种经过优化的加权式有限状态变换器(WFST/ weighted finite-state transducer)解码器,能够使用图像处理单元(GPU)实现对音频数据的在线流处理和离线批处理。这种解码器能高效利用内存、输入/输出带宽,并为最大化并行使用了一种全新的维特比(Viterbi)实现。内存节省让该解码器能比之前处理更大的图,同时还能支持更多数量的连续流。对 lattice 段进行 GPU 预处理能让中间 lattice 结果在流推理期间返回给请求者。
总体而言,相比于单核 CPU 解码,新提出的改进能实现高达 240 倍的提速,并且解码速度也比当前最佳的 GPU 解码器快 40 倍,同时返回的结果表现相当。从大型数据中心服务器到低功耗边缘设备,该架构可在各种层级的硬件上部署生产级模型。
深度学习研究推动了自动语音识别(ASR)技术的大发展,质量的显著提升让这项技术在许多人机交互用例中得到了实际应用,「流 ASR 即服务(streaming ASR as a service)」的需求也随之水涨船高。通常来说,如要满足这一需求,将需要在数据中心配置大量商用服务器。由于很多用例对时间延迟有很严格的要求,因此人们正在大力投入,意图加快数据中心中模型的推理速度;当然也有研究正致力于实现边缘推理,包括在低功耗设备上实现推理。
在这项研究中,研究者提出了一种全新的加权式有限状态变换器(WFST)实现,其可使用 GPU 和英伟达的 CUDA 编程语言为语音识别任务提供高速解码。他们将该解码器设计成可直接替代现有解码器,而无需修改语言或声学模型。其设计目标是尽力实现最大的灵活性,能支持多路同时音频流的在线识别和 lattice 生成。
研究者还严格限制了该解码器的内存使用,从而可确保 GPU 内存能为大型语言模型和共同常驻的声学模型留有足够的空间。最后,从低功耗嵌入式 GPU 到单个服务器中运行的多个数据中心级 GPU,该算法都能有效地运行。
并行式 WFST 解码器通常会遵照串行解码器中的典型操作顺序:对于声学模型(AM)后验的每一帧,该解码器可基于帧值处理发射弧(标签非零的弧),再处理任何非发射弧链,最后执行剪枝。新提出的算法利用了两个类型不同的异步 CUDA 流:一个负责执行计算核,另一个负责执行非阻塞的设备到主机(D2H)lattice token 内存副本。使用第二个用于 D2H 副本的流,无需中止计算流程就能在在线编码期间返回中间结果。
研究者消除了很多常见的面向 CPU 的优化和限制,这种做法有时会妨害并行表现。具体来说,在扩展 token 时不测试新 token 是否唯一。将重复的 token 保留下来留待以后清理对正确性而言是足够的:少量额外的工作能减少对同步和原子操作的依赖。在 GPU 上,解码核的执行速度很快,其性能受限于核启动的延迟。通过调整解码器的结构,解码器能并行处理多路音频流,通过更长时间地运行这些核能够掩盖启动延迟。
为了同时处理多路音频流,研究者引入了两种不同的机制:干道(channel)和小道(lane)。小道大致等同于神经网络中的批大小,代表了正被解码的话语或流的集合。干道则能为有待继续处理(由于缺少音频或已计算后验)的话语维持状态。这种随时准备 GPU 工作的线程化解码器负责将干道(因为它们已准备就绪)多路复用到小道(因为它们可用)上。这种方案能根据模型和代表性数据与 GPU 的搭配而轻松地调整:增加小道的数量直到收益开始下降,并让通道的数量匹配所测得的吞吐量/xRTF。
全部0条评论
快来发表一下你的评论吧 !