ARM技术william hill官网
直播中

李艳

7年用户 1435经验值
私信 关注
[经验]

介绍一种Arm ML嵌入式评估套件

Cortex-M55 处理器是 Arm 最具 AI 能力的 Cortex-M 处理器,也是第一款基于 Arm Helium 技术的 CPU。 虽然 Cortex-M55 的速度足以在微型微控制器上运行 ML 模型,但与 Arm Ethos-U55 microNPU 的集成可以将嵌入式系统中的 ML 推理速度提高 480 倍。

Ethos-U55 是一种机器学习处理器,经过优化可以执行常见的数学 ML 算法操作,例如卷积或激活函数。Ethos-U 处理器支持流行的神经网络模型,例如用于音频处理、语音识别、图像分类和对象检测的 CNN 和 RNN。

在 Ethos-U NPU 上部署推理

要在 Ethos-U NPU 上运行推理,必须将网络运营商量化为 8 位(无符号或有符号)或 16 位(有符号),因为 Ethos-U 仅支持 8 位权重或 16 位激活. TensorFlow 模型优化工具包使开发人员能够优化 ML 模型,以便在内存、功率限制和存储限制的设备上进行部署。有不同的优化技术,包括量化、修剪和聚类, 它们是 TensorFlow 模型优化工具包的一部分,并且与 TensorFlow Lite 兼容。例如,您可以执行训练后整数量化 在使用 TFLiteConverter 加载转换后的模型后,将权重和激活从浮点数转换为整数。 请注意,一旦对模型进行了修剪和聚类,通常会在修剪/聚类后进行一次小型训练,以解决准确性损失的问题。因此,您需要在模型复杂性和大小之间进行权衡。

使用训练后量化优化您的模型:

def representative_dataset():

for _ in range(100): 

  # Using some random data for testing purposes  

  data = np.random.rand(1, 244, 244, 3) 

  yield [data.astype(np.float32)]

Load the model into TensorFlow using TFLite converter

converter = tf.lite.TFLiteConverter.from_saved_model(“model_tf”)

Set options for full integer post-training quantization

converter.optimizations = [tf.lite.Optimize.DEFAULT]

converter.representative_dataset = representative_data_gen

Ensure that if any ops can't be quantized, the converter throws an error

converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]

Set the input and output tensors to int8

converter.inference_input_type = tf.int8

converter.inference_output_type = tf.int8

Convert to TFLite

tflite_model_quant = converter.convert()

要在 Ethos-U 上部署您的NN模型,您需要使用Vela编译经过训练的量化模型, 以便为 Ethos-U 生成优化的 NN 模型。Vela 是一个开源 Python 工具,可将 TFLite NN 模型编译为可在包含 Arm Ethos-U NPU 的嵌入式系统上运行的优化版本。您可以通过运行 $pip install ethos -u- vela 命令安装 Vela,然后使用特定的 Ethos-U NPU配置(例如 ethos - u55-128 )编译网络 运行以下命令行。


Accelerator-config 指定要在以下之间使用的 microNPU 配置:

精神-u55-256

精神-u55-128

精神-u55-64

精神-u55-32

精神-u65-256

精神-u65-512

图 1:Vela 工作流程

Vela 的输出是一个优化的 TensorFlow Lite 文件,可以在使用 Ethos-U NPU 的系统上进行部署,在本例中是配置了 Corstone-300 FVP 的 Arm 虚拟硬件。

通常,您可以使用TensorFlow Lite Interpreter Python API从磁盘加载 TFLite 模型进行部署。

然而,大多数微控制器没有文件系统,因此需要额外的代码和空间来从磁盘加载模型。一种有效的方法是在 C 源文件中提供模型,该文件可以包含在我们的二进制文件中并直接加载到内存中。为此,您需要使用适用于微控制器的 TensorFlow Lite C++ 库来加载模型并进行预测。 另一种快速简便的方法是使用开源Arm ML 嵌入式评估套件。它使开发人员能够使用面向 Arm Cortex-M 55和 Ethos-U微控制器的微控制器推理引擎使用 TensorFlow Lite 快速执行神经网络模型 。

E估值K it概述

Arm ML 评估 套件 允许 开发人员快速构建和部署用于 Arm Cortex-M55 和 Arm Ethos-U55 NPU 的嵌入式 机器 学习 应用程序。 它包含为 Ethos-U55 系统开发的软件 ML 应用程序,包括:

图像分类,

关键字发现(KWS),

自动语音识别 (ASR)

异常检测

人员检测

因此,您可以使用这些即用型 ML 示例快速评估在 Cortex-M CPU 和 Ethos-U NPU 上运行的网络的性能指标。您还可以使用评估套件中提供的通用推理运行器轻松为 Ethos-U 创建自定义 ML 软件应用程序。通用推理运行器允许您输入任何模型并获得性能矩阵,例如 NPU 周期数和跨不同总线的内存事务量。

ML Embedded 评估套件软件和硬件堆栈

评估套件的软件堆栈包含不同的层,顶部是应用程序,底部是依赖项。在为 Ethos-U NPU配置构建系统 后,集成 TensorFlow Lite for Microcontrollers 与 Ethos-U NPU 驱动程序执行某些可由 Ethos-U NPU 加速的算子。对于 NPU 上不受支持的神经网络模型算子,推理使用 CMSIS-NN 在 CPU 上运行。CMSIS-NN 优化 CPU 工作负载执行或使用推理引擎提供的参考内核。硬件抽象层 (HAL) 源提供了与平台无关的 API 来访问特定于硬件平台的功能。

图 2:ML 评估套件软件堆栈

ML 评估套件基于 Arm Corstone-300 参考包,可帮助 SoC 设计人员更快地构建安全系统。它利用 Arm Cortex-M55处理器最大限度地提高物联网和嵌入式设备的性能。 Corstone-300 可以轻松集成 Ethos-U55,该平台可用作生态系统 FPGA (MPS3) 和固定虚拟平台 (FVP),以允许在硬件可用之前进行开发(硅硬件即将发布)。

图 3:ML 评估套件硬件堆栈

带有 Ethos-U55 和 Arm 虚拟硬件的Corstone-300 FVP

ML 评估套件工作流程

构建和运行准备使用 ML Eval Kit ML 示例的常见工作流程,例如使用 ML-Eval-Kit 在 Cortex-M 和 Ethos-U 上进行关键字定位,如下所示:

1 确保已安装以下先决条件并且它们在路径上可用。

2 克隆 Ethos-U 评估套件存储库

3 拉取所有外部依赖项

$ git submodule update --in it

4 执行build_default.py以使用默认设置(如 MPS3 FVP目标和 Ethos-U55 时序适配器) 配置构建系统。

$ python build_default。

$ python build_default。

5 使用 make 命令编译项目
6 构建的结果放在 build/bin 目录下,例如:

垃圾桶

├── ethos-u-<use_case_name>.axf

├── ethos-u-<use_case_name>.htm

├── ethos-u-<use_case_name>.map

└── 行业

├── 音频.txt

└── <用例>

├── ddr.bin

└── itcm.bin

7 如果使用 FVP ,则在带有 Arm 虚拟硬件的 FVP 上启动所需的应用程序。 例如,Ethos-U55 上的关键字识别用例可以通过以下命令启动:

$ FVP_Corstone_SSE-300_Ethos-U55 -一个。/构建/ bin / ethos-u-kws。轴心

使用 ML Embedded Evaluation Kit 配置和运行自定义模型

ML Eval Kit 也非常易于与自定义工作流程和 NN 模型一起使用。例如,您可以将新模型而不是 MobileNet 与输入大小一起传递给图像分类。 但是,要在Ethos-U NPU 上运行您的特定 ML模型,请确保您的自定义模型已成功通过V ela 编译器运行以生成优化的 NN 模型。然后通过创建构建目录并设置 Vela 生成的 TFLite 文件的路径,使用 Cmake 配置构建系统。最后,使用 make 编译项目。

您可以使用Generic Inference Runner ML Eval Kit 构建选项来分析您在Cortex-M55 和 Ethos-U55上的特定 ML 应用程序的推理速度。这些可以通过运行以下命令来完成:

$ mkdir 构建 && cd 构建

$ cmake .. \

  • Dinference_runner_MODEL_TFLITE_PATH = TFLITE_PATH
  • DUSE_CASE_BUILD = inference_runner

有关可与 cmake 一起使用的不同参数选项的更多信息, 请参阅构建默认配置。

$制作

然后使用 Arm 虚拟硬件选择 Ethos-U55 在 FVP 上运行应用程序二进制文件。

注意:Arm 虚拟硬件 FVP 执行上的 MAC 数量应与 Vela 编译器--accelerator-config配置上的相同。

FVP_Corstone_SSE-300_Ethos-U55 - C ethosu。num_macs = 128 -一个。/ build / bin / ethos-u-inference_runner。轴心

今天试试

您现在可以使用 ML 评估套件、Arm 虚拟硬件中提供的 Corstone-300 FVP、Arm Vela 编译器和可用的 ML 示例开始为 Arm Ethos-U NPU 开发 ML 软件。

原作者:埃勒姆·哈里普什

更多回帖

发帖
×
20
完善资料,
赚取积分