在ZephyrOS添加NPU驱动支持加速AI应用

承接上文——小编就不再铺垫了,直接上重点!

在上一节中,我们已经成功完成模型训练,并获得了量化后的 TFLite 模型。

那模型到底“长”什么样?结构是否如预期?算子是否都被正确量化?

要回答这些问题,就必须请出我们的一位老朋友-Neutron工具(朋友们可自行下载)来对模型进行可视化与结构检查。通过它,我们能更直观地了解模型的内部构成,为后续移植到Zephyr做好扎实准备。

c261e8e2-07ac-11f1-90a1-92fbcf53809c.png

为了验证是否是量化好的模型,这里任意点击一个节点,在弹出的属性页面下,可以看到他的权重类型为int8,说明我们已经成功量化好了模型,就可以开始做模型转换的准备了。

1.下载适配MCXN947的SDK代码,这样就可以直接已SDK为基础进行改造了,无需额外工作,这里要注意的是:因为转换工具和SDK版本有深度的依赖,在转换前,需要提前决定好要使用的SDK版本https://mcuxpresso.nxp.com/zh/select,这里假设我们选择的是2.16.0版本的SDK包:

点击构建后,会跳转页面勾选中间件,因为是要移植到Zephyr上,这里直接选择MCUXPresso IDE作为工具链(采用的GCC工具链,和Zephyr原生工具链兼容),并勾选eIQ选项,等待构建完成:

c314e028-07ac-11f1-90a1-92fbcf53809c.png

2.下载eiq ToolKit,安装包中包含了我们所需要的转换工具https://www.nxp.com/design/design-center/software/eiq-ai-development-environment/eiq-toolkit-for-end-to-end-model-development-and-deployment:EIQ-TOOLKIT,并根据实际环境下载windows或是ubuntu版本的软件:

下载完成后等待安装完成,安装完成后,就要开始寻找我们需要的转换工具了,切换到安装目录C: xpeIQ_Toolkit_v1.14.0in eutron-converter,里面有不同版本的转换器,要根据刚才下载的SDK版本进行选择,刚才下载的SDK版本是2.16.0,那直接选择MCU_SDK_2.16.000目录下的转换工具:

c3c613ac-07ac-11f1-90a1-92fbcf53809c.png

c41f5098-07ac-11f1-90a1-92fbcf53809c.png

3.模型转换方法:准备好量化好的模型,并利用命令行方式进行转换:

c4793ac2-07ac-11f1-90a1-92fbcf53809c.png

转换成功后,模型会已saved_model_converted.tflite保存,如下图右边的就是转换好的模型,转换器已经将三个FullyConnected算子进行了融合,变成了一个统一的NeutronGraph算子,至此模型转换就成功了。

c4d62502-07ac-11f1-90a1-92fbcf53809c.png

4.将模型保存为C数组的形式:为了在程序中使用转换好的模型,需要将模型降解为C语言数组的形式,这里直接借用Linux所提供的工具,xxd来进行操作(可以借助WSL或是虚拟机实现):

# Install xxd if it is not available

!apt-get update && apt-get -qq install xxd

# Convert to a C source file, i.e, a TensorFlow Lite for Microcontrollers model

!xxd -i {MODEL_TFLITE} > {MODEL_TFLITE_MICRO}

# Update variable names

REPLACE_TEXT = MODEL_TFLITE.replace('/', '_').replace('.', '_')

!sed -i 's/'{REPLACE_TEXT}'/g_model/g' {MODEL_TFLITE_MICRO}

执行完成后会生成一个名为:model.cc的文件,里面就是已经降解为C语言数组形式的模型文件了:

c52c8dd4-07ac-11f1-90a1-92fbcf53809c.png

至此,本期所需的前期准备工作已全部就绪:

我们完成了模型训练、量化处理,并顺利生成了可用于部署的TFLite模型。这些步骤为真正的重点 ——在Zephyr 中集成NPU运行时环境,并将模型文件部署到实际系统—— 打下了坚实基础。

真正的“硬仗”,从下一期正式开始。

敬请期待,我们将在Zephyr上让NPU“跑”起来!

返回顶部
跳到底部

Copyright ©2024 本站由 灵灵猴 版权所有,站长QQ303154759.津ICP备2024027016号-5,本站部分内容为转载,不代表本站立场,如有侵权请联系处理 open开发