使用Vela编译器开发Ethos-U NPU流程导引

使用 Vela 编译器开发 Ethos-U NPU 流程导引

Vela 编译器简介

Ethos-U Vela 是 Arm开发的一款软件工具,可将 TensorFlow Lite(TensorFlow Lite for Microcontroller 是 TensorFlow LIte的一个子集)模型编译为可在 Ethos-U NPU上运行的优化版本。Vela 以 TensorFlow Lite模型为输入,应用包括内存优化和层融合技术在内的优化手段,编译生成专门针对 Ethos-U 架构优化的二进制文件。这一优化的二进制文件最大限度地利用了 Ethos-U NPU 的硬件特性,以高效执行机器学习工作负载。
在这里插入图片描述

图x 使用 Vela 编译器编译 ML 模型

优化后的模型包含 TensorFlow Lite 专门设计的算子,可通过 Ethos-U NPU加速。模型中无法加速的部分保持不变,而是使用适当的内核在主机处理器(如 Cortex‑M 系列 CPU)上运行。

Ethos-U Vela 将会尝试多种不同的编译策略,并对每种策略应用了成本函数。然后,Vela 为每个受支持的 操作符操作符组 选择最优的执行调用。Vela 与 TensorFlow Lite (量化)位精度一致,因此,使用 Vela 编译器优化神经网络时,不会损失精度。

Vela 编译器可以报告预估性能,但仅是近似估计。软件开发人员应考虑将机器学习推理顾问(Machine Learning Inference Advisor,另一个 ML 开发工具)与经过验证的高性能模型结合使用,以获得更准确的性能数据。

Vela 编译器执行各种内存优化,以减少固定存储(Flash)和运行时(SRAM)的内存需求。这些优化包括以下内容:

  • 压缩模型中的所有权重,可以减少固定存储内存的使用。
  • 通过将一组连续的算子的特征图(FM, Feature Map)拆分为多个分块(Stripe),从而减少运行时的内存使用。一个分块可以是特征图的全宽或部分宽度,也可以是特征图的全高或部分高度。然后,每次载入一个分块依次加载所有算子,以避免一次性载入巨大的计算量以及对应的内存使用需求。

模型中可优化和加速的部分被专门识别出来,并转换为 TensorFlow Lite 组件中的特定算子。这些算子随后被编译成命令流,由 Ethos-U NPU 执行。

最后,Vela 将优化后的模型输出为 TFLM 模型(仍然是 *.tflite文件),并生成性能评估报告。该报告提供了内存使用和推理时间等统计数据。

Vela 编译器提供了可配置的选项,使开发者能够指定嵌入式系统配置的各个方面,例如:Ethos-U NPU 的版本型号、内存类型和内存大小。此外,还有配置选项用于控制在编译过程中执行的优化类型。

至 于Vela 本身,是一个Python环境的库,除了必要的基础软件外(C语言运行时环境和Python运行时环境),可以通过Python安装组件库的方式,安装 Vela 工具:

pip3 install ethos-u-vela

在Python的命令行环境中使用 Vela:

  • 输入文件是*.tflite,其中包含了将要编译的神经网络信息。
  • 输出文件是*_vela.tflite文件,仍是一个*.tflite文件,但是文件名中加了个_vela的后缀。以及一个*.csv文件,其中描述了预估模型性能的信息。
  • 预估模型性能的摘要报告也会通过命令行终端输出。
$ vela my_network.tflite

Network summary for my_network
Accelerator configuration               Ethos_U55_256
System configuration                 internal-default
Memory mode                          internal-default
Accelerator clock                                 500 MHz
Design peak SRAM bandwidth                       4.00 GB/s
Design peak Off-chip Flash bandwidth             0.50 GB/s

Total SRAM used                                  0.95 KiB
Total Off-chip Flash used                      106.98 KiB

CPU operators = 0 (0.0%)
NPU operators = 44 (100.0%)

Average SRAM bandwidth                           0.04 GB/s
Input   SRAM bandwidth                           0.01 MB/batch
Weight  SRAM bandwidth                           0.00 MB/batch
Output  SRAM bandwidth                           0.00 MB/batch
Total   SRAM bandwidth                           0.01 MB/batch
Total   SRAM bandwidth            per input      0.01 MB/inference (batch size 1)

Average Off-chip Flash bandwidth                 0.46 GB/s
Input   Off-chip Flash bandwidth                 0.01 MB/batch
Weight  Off-chip Flash bandwidth                 0.09 MB/batch
Output  Off-chip Flash bandwidth                 0.00 MB/batch
Total   Off-chip Flash bandwidth                 0.10 MB/batch
Total   Off-chip Flash bandwidth  per input      0.10 MB/inference (batch size 1)

Neural network macs                             86952 MACs/batch

此处特别注意,报告中的周期和带宽数字并不是实际性能数据的准确表示,也不应与使用不同设置或配置的其他编译结果进行比较。实际上,报告的数据仅供编译器做出优化决策,仅仅为 Vela 自己做参考。若要获得准确的性能数据,仍要在具体的硬件平台上运行网络并进行性能分析。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值