在 Cadence 音频数字信号处理器上加速 TensorFlow Lite Micro

发布人:来自 Cadence 的 Raj Pawate 和 Google 的 Advait Jain

数字信号处理器 (DSPs) 是所有电池供电设备的重要组成部分,其提供了一种以极低功耗处理音频数据的方法。这些芯片负责运行信号处理算法,例如音频编解码器、噪声消除和波束形成等。

这些 DSPs 也越来越多地用于运行神经网络,例如唤醒词检测、语音识别和噪声抑制。启用此类应用的关键是,能够尽可能高效地执行这些神经网络。

不过,在 DSPs 上运行机器学习的产品化路径往往是临时路径。相比之下,语音、音频和视频编解码器运行国际电联 (ITU) 和 3GPP 等全球标准机构创建的压缩和解压缩算法,可解决质量测量、定点算法注意事项和互操作性等多方面的问题。

TensorFlow Lite Micro (TFLM) 是一个通用的开源推理框架,可在嵌入式目标(包括 DSPs)上运行机器学习模型。同样,Cadence 也在 PPA 优化的软硬件平台上投入巨大,例如用于音频的 Cadence Tensilica HiFi DSP 系列和用于视觉的 Cadence Tensilica Vision DSP 系列。

基于此,TFLM 团队与 Cadence 的音频 DSP 团队在 2019 年就此展开合作。TFLM 团队专注于利用广泛的 TensorFlow 框架,并通过解释器和参考内核开发从训练到嵌入式和 DSP 部署的平滑路径。Cadence 开发一个高度优化的软件库,称为 NeuralNet 库 (NNLIB),该库利用了其低功耗 HiFi DSPs 的 SIMD 和 VLIW 功能。起初,此合作仅包括一个 Xtensa DSP 的三个优化内核,而现已涵盖各种平台上的 50 多个内核,例如 HiFi 5、HiFi 4、HiFi 3z、Fusion F1 以及 P6 等 Vision DSPs,并包括卸载加速器(如有)的功能。

此外,我们还共同为所有针对 Cadence DSPs 进行过优化的代码添加了持续集成设置。其中包括的基础架构会对 TFLM 存储库的每个拉取请求进行测试,检测其是否通过 Tensilica 工具链的所有单元测试,该工具链具有各种 HiFix 和 Vision P6 内核。因此,我们会确保组合的 TFLM 和 NNLIB 开源软件不仅紧密集成,还具有良好的 自动化测试覆盖率

性能提升

最近,我们共同为 使用 int16 激活函数量化 的模型添加了优化设置。尤其是在音频领域,int16 激活函数对于量化生成式模型的质量至关重要。我们希望这些经过优化的内核能够支持一种新的 ML 驱动型的音频信号处理。下表所示为实现噪音抑制神经网络所需的几个算子。我们以噪音抑制神经网络 SEANet 为例,该网络中一个变体的循环计数提升了 267 倍。

下表所示为经过优化的内核相比参考实现所取得的改进(使用 Xtensa 指令集模拟工具测量)。

算子 改进
Transpose Conv 458 倍
Conv2D 287 倍
Sub 39 倍
Add 24 倍
Leaky ReLU 18 倍
Srided_Slice 10 倍
Pad 6 倍
整个网络 267 倍

如何使用这些优化设置

所有代码均可通过 TFLite Micro GitHub 库来使用。

要使用 HiFi 3z 定向 TFLM 优化设置,需满足以下条件:

已使用 int16 激活函数和 int8 权重对 TensorFlow Lite (TFLite) FlatBuffer 模型进行量化

该模型使用上表中列出的一个或多个算子

TFLM 使用 OPTIMIZED_KERNEL_DIR=xtensa 进行编译

例如,您可以使用参考 C++ 代码运行 Conv2D 内核集成测试:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=xtensa TARGET_ARCH=hifi4 XTENSA_CORE= test_integration_tests_seanet_conv

并通过添加 OPTIMIZED_KERNEL_DIR=xtensa ,将其与经过优化的内核进行比较:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=xtensa TARGET_ARCH=hifi4 OPTIMIZED_KERNEL_DIR=xtensa XTENSA_CORE= test_integration_tests_seanet_conv

展望未来

虽然迄今为止的工作主要集中在卷积神经网络上,但 Google 和 Cadence 也在合作开发经过优化的 LSTM 算子,并已发布基于 LSTM 的关键字识别器的 首个示例。我们希望在此基础上进行扩展,并继续为 Tensilica Xtensa DSPs 带来经过优化的生产级的 ML 领域最新实践。

致谢

衷心感谢以下同事,感谢他们为此番成功合作做出的贡献。

Cadence:Manjunath CP、Bhanu Prakash Bandaru Venkata、Anirban Mandal

Google:Advait Jain、Deiqang Chen、Lawrence Chan、Marco Tagliasacchi、Nat Jeffries、Nick Kreeger、Pete Warden、Rocky Rhodes、Ting Yan、Yunpeng Li、Victor Ungureanu

原文:Accelerating TensorFlow Lite Micro on Cadence Audio Digital Signal Processors
中文:TensorFlow 公众号