资讯动态

在 Synopsys ARC VPX/EM/HS 处理器上构建与部署 TensorFlow Lite Micro:从 MWDT 工具链到 embARC MLI 优化实战

发布时间:2026/10/4 1:56:03 来源:尧图企业网站定制
人工智能深度学习推理引擎本地部署嵌入式物联网【免费下载链接】tflite-microInfrastructure to enable deployment of ML models to low-power resource-constrained embedded targets (including microcontrollers and digital signal processors).项目地址https://gitcode.com/gh_mirrors/tf/tflite-micro点击查看免费下载TensorFlow Lite MicroTFLM为低功耗嵌入式目标提供推理基础设施本文聚焦其面向 Synopsys DesignWare ARC VPX、EM/HS 处理器的完整构建与部署流程涵盖 MetaWare 工具链安装、ARC EM SDP 开发板硬件连接与引导、microlite静态库生成、可选的 embARC MLI Library 2.0 加速实验特性以及 Model Adaptation Tool 权重布局适配。读完本文你将掌握基于 Make 构建系统为 ARC 目标生成并运行 TFLM 应用、利用 MLI 优化算子、以及为自定义 TCF 平台配置 nSIM 仿真环境的完整实战能力。一、目标平台与整体流程概览本文内容基于仓库内 arc 目标构建文档面向三类 ARC 平台ARC EM/HS 处理器经典嵌入式 MCU/DSP 核心ARC VPX 处理器向量 DSP 架构支持 embARC MLI Library 2.0 实验特性ARC EM SDP 开发板Synopsys 官方评估板本文文档的默认部署对象。TFLM 在 ARC 上的构建被明确划分为两个阶段Application Project Generation应用工程生成需要 *nix 环境Linux/macOS 等依赖 shell 与原生文件操作命令Application Project Building/Running工程构建/运行对环境无此要求Windows 亦可。对于面向 ARC EM SDP 的基础工程生成MetaWareMWDT并非必需但以下两种情况必须安装 MWDT生成自定义非 EM SDP目标工程以及为外部使用而构建包含全部 TFLM 对象的 microlib 目标库。这一取舍直接决定你选择安装 MWDT 的 Windows、Linux 还是两个版本。二、安装 Synopsys DesignWare ARC MetaWare 开发工具包MWDTMWDT 是构建并运行所有 ARC VPX/EM/HS 目标 TFLM 应用的强制前置条件获取许可商业授权请联系 Synopsys官网 MetaWare 页面申请评估版通过 Synopsys Eval Portal 申请 MetaWare Development Toolkit 评估版注意不要与页面上的 MetaWare EV Development Toolkit 或 MetaWare Lite 混淆安装下载安装程序后按引导在目标平台完成工具链配置。从仓库源码可进一步确认 MWDT 在构建系统中的角色。在 arc_common.inc 中当TARGET_ARCHarc且ARC_TOOLCHAINmwdt时构建系统将编译器、归档器、链接器全部指向 MWDT 工具链CC_TOOL : ccac # 编译器 AR_TOOL : arac # 归档器 CXX_TOOL : ccac LD_TOOL : ccac # 链接器同时定义运行/调试命令依赖 TCF 文件与mdb调试器ARC_APP_RUN_CMD mdb -run -tcf$(TCF_FILE_NAME) $(DLR)\(DBG_ARGS\) ARC_APP_DEBUG_CMD mdb -OK -tcf$(TCF_FILE_NAME) $(DLR)\(DBG_ARGS\)TCF_FILETool Configuration FileCPU 配置时生成通过-tcf编译选项传给编译器平台级编译/链接选项还包括-Hnocopyr -Hpurge -Hdense_prologue -fslp-vectorize-aggressive -ffunction-sections -fdata-sections、紧凑 CRT-Hcl -Hcrt_fast_memcpy -Hcrt_fast_memset、-Hheap24K堆配置以及为 ARC 目标修复kernel_util所需的-u,TfLiteIntArrayEqual等强制符号链接选项。三、ARC EM SDP 开发板部署3.1 硬件与软件清单在 EM SDP 上部署需要以下组件组件说明ARC EM SDP 板订购信息见 Synopsys 平台页面MetaWare Development Toolkit安装见上文 MWDT 一节Digilent Adept 2 系统软件仅当使用 MetaWare Debugger 调试时需要安装 System 组件与 Runtime 即可Utilities 与 SDK 非必需若走 SD 卡引导则无需安装Make 工具两个阶段都需要要求见下文串口终端仿真程序如 PuTTY用于查看 EM SDP 调试 UART 输出microSD 卡若需自引导脱离调试器独立启动需最小 512 MBFAT32 格式、默认簇大小但小于 32 KB3.2 Make 工具的要求Make 在两个阶段的作用不同测试二进制生成需要兼容 TFLM 构建系统的环境要求make 3.82且具备 *nix 风格环境支持 shell 与原生文件操作命令此阶段不需要 MWDTTFLM 静态库生成要求宽松得多MWDT 自带的 gmake 版本即足够无 shell/*nix 命令依赖可在 Windows 上完成。3.3 连接开发板按以下步骤完成硬件连接与串口观察将板卡 Boot 开关S3配置为开关号位置1Low (0)2Low (0)3High (1)4Low (0)连接随附电源用 USB 线连接 J10 连接器靠近 RST 与 CFG 按钮至开发主机 USB 口确定 USB 串口对应的 COM 端口Windows 上可用设备管理器查看打开串口终端建立连接115200 baud、8 数据位、1 停止位、无校验按下 CFG 按钮数秒后终端应出现以如下内容开头的引导日志U-Boot Versioning info CPU: ARC EM11D v5.0 at 40 MHz Subsys:ARC Data Fusion IP Subsystem Model: snps,emsdp Board: ARC EM Software Development Platform v1.0 …3.4 为 ARC EM SDP 生成 TFLM 静态库若要在自有应用中集成 TFLM需先生成静态库。命令如下先clean再构建make -f tensorflow/lite/micro/tools/make/Makefile clean make -f tensorflow/lite/micro/tools/make/Makefile TARGETarc_emsdp \ TARGET_ARCHarc \ OPTIMIZED_KERNEL_DIRarc_mli \ microlite生成的静态库libtensorflow-microlite.a位于gen/{target}/lib目录从 Makefile 可看到生成目录由$(TARGET)_$(TARGET_ARCH)_$(BUILD_TYPE)组合而成。注意这里默认启用了OPTIMIZED_KERNEL_DIRarc_mli即 ARC 目标的常规库生成默认携带 embARC MLI 优化详见第五节。3.5 示例应用ARC EM SDP 的示例应用托管于 ARC 官方示例仓库可结合 person_detection 等内置示例 与 micro_speech 示例 的模型与算子结构理解 TFLM 在 ARC 上的典型工作负载。四、自定义 ARC EM/HS/VPX 平台部署当目标硬件仅由TCFTool Configuration FileCPU 配置时生成及可选的LCFLinker Command File描述时即为自定义平台此时真实硬件未知应用只能在 MetaWare 工具包自带的nSIM 模拟器中运行。VPX 支持属于实验特性依赖 embARC MLI Library 2.0 与模型适配详见第五、六节。4.1 初始环境要求Synopsys MetaWare Development Toolkit2019.12 或更高使用 MLI Library 2.0 需2021.06 或更高Make 工具make 或 gmakeCMake 3.18 或更高若使用 Model Adaptation Tool还需 Python 3.7 与 TensorFlow for Python 2.5见第六节。4.2 生成 TFLM 静态库自定义平台基础MLI 1.x构建命令make -f tensorflow/lite/micro/tools/make/Makefile clean make -f tensorflow/lite/micro/tools/make/Makefile \ TARGET_ARCHarc \ TARGETarc_custom \ OPTIMIZED_KERNEL_DIRarc_mli \ TCF_FILEpath_to_tcf_file \ LCF_FILEpath_to_lcf_file \ microlite使用 MLI Library 2.0实验特性的构建命令make -f tensorflow/lite/micro/tools/make/Makefile clean make -f tensorflow/lite/micro/tools/make/Makefile \ TARGET_ARCHarc \ TARGETarc_custom \ OPTIMIZED_KERNEL_DIRarc_mli \ ARC_TAGSmli20_experimental \ BUILD_LIB_DIRpath_to_buildlib \ TCF_FILEpath_to_tcf_file \ microliteTCF_FILE与LCF_FILE在 arc_common.inc 中通过?定义为可覆盖变量LCF_FILE若提供会以其文件名$(notdir ...)形式追加到PLATFORM_LDFLAGS。MLI 2.0 模式下生成工程位于tcf_file_basename_mli20_arc_default文件夹。生成的库同样位于gen/{target}/lib/libtensorflow-microlite.a。五、使用 embARC MLI Library 优化算子OPTIMIZED_KERNEL_DIRarc_mli5.1 MLI 加速的适用范围embARC MLI 库用于加速**非对称量化int8**层的推理其优化实现位于 arc_mli 内核目录当前仅覆盖以下算子Convolution 2D——仅支持 per-axis 量化且dilation_ratio 1Depthwise Convolution 2D——仅支持 per-axis 量化且dilation_ratio 1Average PoolingMax PoolingFully Connected。当 MLI 实现不可用时arc_mli 内核自动回退到 TFLM 参考实现。例如 conv.cc 中的IsMliApplicable明确校验filter、input 均为kTfLiteInt8、bias 为kTfLiteInt32、膨胀系数为 1、且权重为 per-axis 量化scale 数量等于量化维度大小任一条件不满足即走参考实现。若你的应用无法从 MLI 获益可去掉OPTIMIZED_KERNEL_DIRarc_mli重新生成库以减小整体代码体积make -f tensorflow/lite/micro/tools/make/Makefile clean make -f tensorflow/lite/micro/tools/make/Makefile TARGETarc_emsdp \ TARGET_ARCHarc \ microlite5.2 MLI 2.0 实验特性使用 embARC MLI Library 2.0 构建时在命令中加入标签ARC_TAGSmli20_experimental部分配置可能要求自定义运行时库可通过BUILD_LIB_DIR指定具体构建选项见 MLI Library 2.0 文档BUILD_LIB_DIRpath_to_buildlib针对 VPX5 的完整示例make -f tensorflow/lite/micro/tools/make/Makefile \ TARGETarc_custom \ TCFpath_to_tcf_file \ BUILD_LIB_DIRvpx5_integer_full \ ARC_TAGSmli20_experimental microlite从源码看MLI 2.0 的支持是通过MLI_2_0宏与MliTensorInterface抽象层实现的该接口在 mli_interface.h 中定义统一封装mli_tensor的 data、scale、zero point、shape、rank 等字段访问mli_interface_mli_20.cc 则在#ifdef MLI_2_0下提供 MLI 2.x 的具体实现如SetScale/SetScalePerChannel用frexpf把浮点 scale 转换为定点 scale 与frac_bitsSetElType将kTfLiteInt8/kTfLiteInt32映射为MLI_EL_SA_8/MLI_EL_SA_32。同时conv.cc 在 MLI 2.0 下将kConvQuantizedDimension从 0 调整为 3反映两代 MLI 库权重量化维度的布局差异——这正是模型需要适配的根本原因见下节。5.3 Scratch Buffers 与切片Slicing机制以下内容仅适用于具备XY 或 VCCM 内存的 ARC EM SDP、VPX 等目标。MLI 假设节点操作数位于 XY、VCCM 及 DCCMData Closely Coupled Memory中当操作数过大放不下时会应用切片逻辑把计算拆成多段并在 X/Y/VCCM/DCCM 内存中分配内部静态缓冲区执行子计算。这一切对用户透明但**DCCM 的一半与全部 XY或 VCCM 的 3/4**会被 MLI 占用。源码层面scratch_buffers.cc 用#pragma Bss(.Xdata)/.Ydata/.Zdata/.vecmem_data把静态缓冲放到相应内存段并提供get_arc_scratch_bufferBest-Fit 分配策略从三块缓冲中选剩余空间最合适的一块、get_arc_scratch_buffer_max_size、get_arc_scratch_buffer_two_max_sizes等接口scratch_buffers.h 中inside_arc_dccm/xccm/yccm/vccm/ccm内联函数用于判断指针是否落在对应紧耦合内存区间。若需为其他任务腾出 XY/VCCM 空间可自定义尺寸替换size[a|b|c]为所需值EM 目标EXT_CFLAGS-DSCRATCH_MEM_Z_SIZEsize_a -DSCRATCH_MEM_X_SIZEsize_b -DSCRATCH_MEM_Y_SIZEsize_cVPX 目标EXT_CFLAGS-DSCRATCH_MEM_VEC_SIZEsize_a例如将 DCCM 与 XCCM 中的数组分别减小到 32k 与 8kmake -f tensorflow/lite/micro/tools/make/Makefile ... \ EXT_CFLAGS-DSCRATCH_MEM_Z_SIZE32*1024 -DSCRATCH_MEM_X_SIZE8*1024 \ microlite从 scratch_buffers.cc 的默认值可见EM__Xxy默认 X/Y 取满core_config_xy_size、Z 取core_config_dccm_size/2VPX__Xvdsp默认 VEC 取core_config_vec_mem_size*3/4且内部再按 1/4、1/4、1/2 切分为三块缓冲。六、Model Adaptation Tool实验特性由于部分内核中权重张量布局不同TFLM 格式模型在使用 MLI 2.0 前必须预先适配。适配在 TFLM 工程生成期间自动完成但要求已安装 TensorFlow原生 TFLM 示例person detection、micro speech在启用 MLI 2.0 时也会自动应用适配无需手动执行。6.1 额外依赖使用 Model Adaptation Tool 需要在通用要求之外Python 3.7 或更高TensorFlow for Python 2.5 或更高。6.2 手动适配自有模型如果你使用从 TensorFlow 导出的.tflite或.cc格式自有模型需要手动适配命令位于tensorflow/lite/micro/tools/make/targets/arc/目录python adaptation_tool.py path_to_input_model_file path_to_adapted_model_file6.3 适配原理与实现细节adaptation_tool.py 的核心逻辑如下输入解析.tflite文件通过_convert_model_from_bytearray_to_object转为模型对象.cc文件先正则提取0x..字节数组还原为 bytesconvert_c_source_to_bytes再转为模型对象并记录#include头路径与数组名以便写回权重转置transpose_weights将 buffer 数据按transpose_shape重排同时更新tensor.shape与quantizedDimensionquantizedDimension映射为transpose_shape中的索引逐算子适配adapt_op_codes字典按内建算子码分发——CONV_2D(3) 按[1,2,3,0]转置权重DEPTHWISE_CONV_2D(4) 将权重 shape 重排为[1,2,0,3]FULLY_CONNECTED(9) 按[1,0]转置其余算子码忽略输出.tflite直接写回字节流.cc则调用convert_bytes_to_c_source携带 TensorFlow 许可头重新生成 C 源码若输入输出为同一文件会先备份为orig_filename。若未安装 TensorFlow脚本会提示 Install TensorFlow package first to use MLI adaptation tool. 并退出。七、版本与适用前提小结配置项取值/说明TARGETarc_emsdp开发板或arc_customTCF 自定义平台TARGET_ARCHarc唯一受支持值其余会报错OPTIMIZED_KERNEL_DIRarc_mli默认启用 MLI 优化可移除以减小体积ARC_TAGSmli20_experimental启用 MLI 2.0 实验特性BUILD_LIB_DIRMLI 2.0 自定义运行时库路径如vpx5_integer_fullTCF_FILE/LCF_FILE自定义平台的 TCF/LCF 文件路径EXT_CFLAGS覆盖 MLI 暂存缓冲尺寸SCRATCH_MEM_*MWDT 版本2019.12MLI 2.0 需 2021.06CMake 3.18自定义平台Python / TensorFlow3.7 / 2.5仅 Model Adaptation Tool 需要限制说明本文所有命令与行为均以当前仓库 arc 构建文档、arc_common.inc、adaptation_tool.py 及 arc_mli 内核文档 为准MWDT、embARC MLI 库的获取与详细构建选项需参考 Synopsys 官方与 embARC MLI 项目资料。文中实验特性标注均沿用原文档定义表示相关能力仍处于演进阶段。许可证说明TensorFlow 代码遵循仓库内含的 Apache 2.0 许可证第三方依赖如 MLI 库分别遵循其各自许可证见仓库third_party目录。赞分享人工智能深度学习推理引擎本地部署嵌入式物联网【免费下载链接】tflite-microInfrastructure to enable deployment of ML models to low-power resource-constrained embedded targets (including microcontrollers and digital signal processors).项目地址https://gitcode.com/gh_mirrors/tf/tflite-micro点击查看免费下载相关推荐基于 cbertscore 的 Clinical BERTScoreCBERTScore实现与临床 ASR 评估指南基于 cbertscore 的 Clinical BERTScoreCBERTScore实现与临床 ASR 评估指南 导读 本文围绕 google rese人工智能深度学习推理引擎本地部署嵌入式物联网RT-Thread 在 Synopsys ARCv2 上的移植实战embARC BSP 板级支持包与构建调试指南RT Thread 在 Synopsys ARCv2 上的移植实战embARC BSP 板级支持包与构建调试指南 本篇技术指南以 RT Thread 仓库中操作系统嵌入式物联网嵌入式OSRTOS在 Android 上部署 TensorFlow Lite 端侧智能回复模型Smart Reply从架构原理到 JNI 实战在 Android 上部署 TensorFlow Lite 端侧智能回复模型Smart Reply从架构原理到 JNI 实战 本文以 TensorFlow示例工程上一篇实时说话人分离终极指南WhisperLiveKit如何实现多角色语音精准识别下一篇Seldon Server核心功能详解从预测到推荐的一站式AI部署平台创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑