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

数字信号处理器(DSP)是任何电池供电的设备的关键部分,提供了一种以非常低的功耗处理音频数据的方法。这些芯片运行信号处理算法,如音频编解码器、噪音消除和波束形成。

越来越多的这些DSP也被用来运行神经网络,如唤醒词检测、语音识别和噪音抑制。实现此类应用的一个关键部分是尽可能有效地执行这些神经网络的能力。

然而,DSP上的机器学习的产品化路径往往可能是临时性的。相比之下,语音、音频和视频编解码器有世界性的标准机构,如国际电联和3GPP创造了压缩和解压的算法,解决了质量测量、定点算术考虑和互操作性等几个方面的问题。

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

谷歌和Cadence--在边缘启用AI的多年合作关系

这是TFLM团队与Cadence的音频DSP团队之间合作的起源,从2019年开始。TFLM团队正专注于利用广泛的TensorFlow框架,并通过解释器和参考内核开发一条从培训到嵌入式和DSP部署的平滑路径。Cadence正在开发一个高度优化的软件库,称为NeuralNet库(NNLIB),利用其低功耗HiFi DSP的SIMD和VLIW能力。这项合作从一个Xtensa DSP的三个优化内核开始,现在包含了50多个内核,涉及各种平台,如HiFi 5、HiFi 4、HiFi 3z、Fusion F1以及Vision DSP,如P6,并包括卸载到加速器(如果有的话)的能力。

此外,我们已经合作为所有针对Cadence DSP的优化代码增加了持续集成。这包括测试TFLM存储库的每个拉动请求是否通过Tensilica工具链与各种HiFix和Vision P6内核的所有单元测试的基础设施。因此,我们确保TFLM和NNLIB相结合的开源软件既紧密集成又有良好的自动测试覆盖率

性能改进

最近,我们合作为使用int16激活的量化模型增加了优化措施。特别是在音频领域,int16激活对量化生成模型的质量至关重要。我们期望这些优化的内核能使一类新的、以ML为动力的音频信号处理成为可能。 下表显示了实现噪声抑制神经网所需的几个运算符。 我们显示SEANet的一个变体的周期数提高了267倍,这是一个噪音抑制神经网的例子。

下表显示了用Xtensa指令集仿真工具测量的优化内核相对于参考实现的改进:

运营商

改进

转置Conv

458x

Conv2D

287x

39x

加法

24x

泄漏的ReLU

18x

隔离区

10x

垫子

6x

整体网络

267x

如何使用这些优化

所有的代码都可以从TFLite MicroGitHub仓库中使用。

要使用HiFi 3z针对性的TFLM优化,需要满足以下条件:

  • TensorFlow Lite (TFLite) flatbuffer模型是用int16激活和int8权重进行量化的。
  • 它使用了上表中所列的一个或多个运算符
  • 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
复制代码

展望未来

虽然到目前为止的工作主要集中在卷积神经网络上,但谷歌和Cadence也在合作开发一个优化的LSTM算子,并发布了第一个基于LSTM的关键词识别器的例子。我们希望在此基础上进行扩展,并继续为Tensilica Xtensa DSP带来人工智能/ML最新发展的优化和生产就绪的实现。

猜你喜欢

转载自juejin.im/post/7125721196615696415