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.

[参考译文] SK-AM62A-LP:Tensorflow 性能*NO*在浮点数和 INT8 量化模型之间使用 tidl 加速/比较

Guru**** 2416110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1529080/sk-am62a-lp-tensorflow-performance-not-using-tidl-acceleration-comparison-between-float--and-int8-quantized-models

器件型号:SK-AM62A-LP

工具/软件:

您好、

(如果此问题不在本论坛的主题中,请原谅!)

我们将使用“Linux SDK 适用于 AM62A 上的边缘 AI 应用“(版本 10.00.00.08)。 为了更好地了解 Tensorflow 的性能,我们希望使用“tidl_TFL_delege"比较“比较浮点和 int8 量化模型的推理,也就是说我们希望 Tensorflow 运行(多线程)浮点量化模型的 XNPack 委托,以及 INT8 量化模型的“Ruy"增强“增强计算。

通过使用“perf record“工具和运行时检查,我们发现这些假设是正确的:推理运行两种模型类型的相应运算,是多线程的,并利用 ARM+SIMD (Neon) 指令。 但是,int8 量化模型的推理速度要比其他类型的 XNPack 慢得多。

我们在 tensorflow 存储库(在 GitHub 上)中发现了一个看似相关的问题#21698(INT TFLITE 比浮动 TFLITE 问题#21698 tensorfollow/tensorflow 慢得多)··,提供的一个解释指出了一个不太优化的 ISA(在 x86 上),它没有涵盖我们的情况。

除了使用 TIDL 学员、是否还有其他想法可以提高 INT8 模型上的推理性能?

此致

 Stefan Birkholz

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

    您好 Stefan、

    TFLite 中的 Arm 端推理主题不在我们的支持范围内 — 我可以帮助在 SDK 中使用 tensorflow-lite 以及与 TIDL 相关的任何内容,但标准的 XNNPACK ,包括性能/性能分析,不是。  

    我注意到在 GITHUB 上的这个问题、其中一个用户在 Arm 设备(Android 手机)上看到了类似的行为--量化运行比非量化运行慢: https://github.com/tensorflow/tensorflow/issues/21698#issuecomment-1216966119

    除了使用 TIDL 委托、还有没有其他想法可以提高 INT8 模型的推理性能?

    不幸的是、没有明显的想法。 与 TIDL 相关的是、是否缺少一些内容(层类型或功能)来引导您处理 CPU/XNNPACK 主题?

    我知道 Arm CPU 也有一个 ARMNN 后端 (当然)、但我不相信 SDK 中提供了该后端。 我也无法支持此委派选项

    BR、
    Reese

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

    您好 Reese、

    感谢您的回复 — 我们正在测试不同的设置,因为未来我们可能希望切换到没有 NPU/DSP 的器件、因此我们明确在没有 tidl-delegate 的情况下进行测试。 我基本上要确保我们不会犯任何明显的错误(对比我们有更多经验的人来说)、让一些绩效旋钮不掉头。

    因此、我们的方法是反汇编学员(以验证是否使用了 SIMD 指令)、并对推理执行运行时分析(在目标硬件上使用“perf record“)。 顺便说一下、我们注意到在 Yocto 版本(基于 SDK 版本 10.01.00.01)中、“tflite_2.12_aragoj7.tar.gz"和“和“tflite_runtime-2.12.0-cp312-cp312-linux_aarch64.whl"是“是从software-dl.ti.com/...“下载 的、因此显然可以作为预编译的二进制文件用于调试符号吗? 我们尝试自己编译 TFLite/LiteRT、但却一直试图交叉编译这些库。

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

    您好、Stefan:

    一切都是有意义的,感谢上下文。

    在重建 TI-TFLite [1]二进制文件/滚轮这一主题上提供的支持有限。 我可以分享的最有用的资源是用于使用 Docker 在内部工作流程之外重建轮子的存储库[0]。

    我在其他方面找到的说明(此处提供,但不能提供详细指导)适用于夹头轮:

    • Git 结账 tidl-j7-2.12-latest
    • 暴露依赖性
      • sudo apt install swig libjpeg-dev zlib1g-dev python3-dev python3-NumPy
      • PIP 安装 NumPy pybind11 轮
    • 使用 cmake 进行构建

     [0] https://github.com/TexasInstruments-Sandbox/edgeai-osrt-libs-build 

    [1] https://github.com/TexasInstruments/tensorflow/tree/tidl-j7-2.12-latest 

    BR、
    Reese