This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28P550SG:适用于 F28P55的 TI NNC

Guru**** 2331900 points
Other Parts Discussed in Thread: C2000WARE, TI-CGT
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1506474/tms320f28p550sg-ti-nnc-for-f28p55

器件型号:TMS320F28P550SG
主题中讨论的其他器件:C2000WARETI-CGT

工具/软件:

TI E2E 团队大家好、

我正在尝试通过 Apache TVM 的 Tinie 后端使用片上 NPU ("ti-npu")编译量化 ONNX 模型并将其卸载到 TI C2000 F28P55 MCU。 我在 Windows (Git Bash)和 WSL2上都花了几天时间、但一直在阻止程序中运行。 下面是我的设置、所采取的步骤、遇到的错误和具体问题的简明纯文本摘要。 非常感谢提供任何指导或示例工作流程。

  1. 硬件和 SDK

    • MCU:C2000 F28P55具有嵌入式 DSP/NPU

    • C2000Ware 安装在 C:\ti\C2000Ware_5_04_00_00下

    • TI-CGT C2000 v22.6.2安装在 C:\ti\CGT_C2000_22.6.2.LTS 下

  2. ONNX 模型

    • model_int8.onnx (选项集11)

    • 输入形状[1、1、1256]、输出形状[1、2]

    • 通过 onnx.checker;验证 onnxruntime 无法运行 ConvInteger 节点(预期)

  3. 编译环境

    • Windows 10 Git Bash 和 Ubuntu 22.04 WSL2

    • Python 3.10 venv、安装了 cython、psutil、typeing_extensions、NumPy 1.23.5

    • 克隆的 Apache/TVM (dev tip)、尝试使用以下命令执行 CMake:
      •-Duse_LLVM=on
      •-Duse_Dinie=on
      •-Duse_TVMC=on
      但是在手动安装 cython 之前、看到了"use_Tinie not used"警告和 Cython 错误

  4. Python 绑定问题

    • 即使设置了 LD_LIBRARY_PATH (WSL)或 TVM_LIBRARY_PATH (Windows)、"pip install -e python /"也反复找不到 libtvm.so / libtvm_runtime.so

    • 在 Windows 上安装 ti_mcu_nc-1.3.0滚轮成功、但没有显示 nnc.exe、"which nc"不返回任何值

  5. tvmc 编译尝试和错误
    a)缺少 ONNX 前端:
    "未‘软件包"。 提示:pip install tlcpack[tvmc]"(未发布 tlcpack[tvmc])
    b) CPU 回退:
    tvmc compile --target="c"…
    AssertionError:目标三重值不应为空
    c) TI-NPU 分区崩溃:
    属性错误: 'tvm.ir.type.tupletype'="">没有属性 dtype
    (在转换整数填充期间、中继/后端/contrib/tini/prepare.py 深度)

  6. 关键问题

    1. 在 WSL2和 Windows 下、哪些精确的 CMake 标志和 TVM_target 语法可以为"c;ti-npu"启用 Tinie + TVMC?

    2. 如何正确链接 libtvm.so/libtvm_runtime.so 以便"pip install -e python/"成功?

    3. 我是否可以在 Windows 版 Git Bash 上安装独立的 NNC 工作流程(NNC.exe)而无需从源代码重建 TVM ?

    4. 为 F28P55 + TI NPU 生成.a 库(包括目标三重行、目标主机、交叉编译器选项等)的精确 tvmc 编译命令是什么?

    5. 是否有 Tinie 填充提升通道中 TupleType.dtype AttributeError 的已知补丁或解决方法?

感谢您抽出宝贵时间、为您提供有关 ONNX→TVM→C2000 F28P55 + TI NPU 集成的官方示例或脚本的指南。

此致、
Junsuk
MS/PhD 候选人

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Junsuk:

      请参阅我们的 NNC 编译器用户指南: https://software-dl.ti.com/mctools/nnc/mcu/users_guide/

      我们的 ModelMaker 还可帮助您通过一些通用模型示例应用 TI-NPU QAT 培训: https://github.com/TexasInstruments/tinyml-tensorlab (这可能是您的切入点、而不是直接使用 NNC)

      列表的一些详细答案:

    2.请将模型重新训练为输入形状[1,1256,1]并将2D conv 内核作为[kernel_height,1]

    3.我们不支持构建 TVM,请使用我们的发行版

    4.运行用户指南中指定的"which tvmc"

    5.a pip 安装 onnx

      想知道一下、在开始此次探索之旅时、您遵循了哪些 TI 文档?  我们绝对需要向用户指出正确的起点。  谢谢!

    -元