Skip to main content
  1. 如何使用调试日志来调试示例应用? 在运行 AI 示例应用或 gst-launch-1.0 时,如需排查执行失败问题,请启用调试日志。 要在 GStreamer 示例应用中启用调试日志,请使用 GST_DEBUG 环境变量设置调试级别。 GST_DEBUG 环境变量控制调试输出的详细程度。您可以将其设置为不同的级别,例如:
    • 0:无(不输出调试信息)
    • 1:ERROR(记录所有致命错误)
    • 2:WARNING(记录所有警告)
    • 3:FIXME(记录未完成的代码路径)
    • 4:INFO(记录信息性消息)
    • 5:DEBUG(记录一般调试消息)
    • 6:LOG(记录所有日志消息)
    • 7:TRACE(记录跟踪消息)
    • 9:MEMDUMP(记录内存转储)
    例如,要将调试级别设置为 ERROR,可以在终端中使用以下命令:
    如果您想筛选特定类别的调试日志,可以在 GST_DEBUG 变量中指定它们。 例如,要为 ML 推理插件和 FPS 启用调试日志,可以使用:
  2. 哪些常见问题会影响 AI 示例应用的快速开箱即用体验? AI 示例应用的开箱即用体验设计得非常快捷。然而,以下问题是阻碍快速开箱体验的最常见问题。
    • 加载模型文件失败
      当模型文件缺失或格式不正确时会出现此问题。 将模型文件复制到正确的路径,并确保在模型转换/量化时和目标设备上使用相同的 SDK 版本。
    • 反序列化标签失败
      当指定路径下的标签文件不存在时会出现此问题。确保标签文件已复制到设备上且指定的路径正确。
    • 设置模块选项失败
      在为 LiteRT/Qualcomm AI Engine Direct 用例设置常量时会出现此问题。请参阅 Discover SDKs → IM SDKs 了解如何正确读取和设置模型常量。
  3. 如何测量 AI 示例应用的性能分析数据?
    • 预处理时间 在将输入送入 AI 推理插件之前,必须对输入进行预处理(包括归一化、缩放和颜色反转)。 该任务由预处理插件 qtimlvconverter 负责。您可以通过执行以下命令来测量预处理时间:
      预处理时间会显示在日志中。
    • 模型推理时间 Qualcomm Intelligent Multimedia SDK 支持三个 AI 推理插件,分别使用 Qualcomm Neural Processing SDK、LiteRT 和 Qualcomm AI Engine Direct 框架。
      • qtimlsnpe
      • qtimltflite
      • qtimlqnn
      这些插件可以在多种硬件上运行推理,例如 CPU、GPU 和 HTP。要确定硬件上的 AI 推理时间,请使用以下命令。
    • 后处理时间 AI 推理插件的输出由后处理插件处理。 这些插件获取 AI 模型的结果并生成可以叠加在输入流上或用于进一步计算的元素。 例如,分类用例的文本框、分割用例的分割掩码等。 要测量这些插件的处理时间,请使用以下命令。
      后处理时间会显示在日志中。以下以 qtimlvclassification 插件为例。
  4. 如何测量用例的端到端 FPS? 要测量 GStreamer 流水线中的每秒帧数(FPS),请使用 fpsdisplaysink 元素。 该元素可以将当前帧率和平均帧率以叠加形式显示在视频上,或打印到控制台。 示例应用使用 fpsdisplaysink 插件将流水线的 FPS 直接显示在 HDMI 显示器上。
  5. 在参考应用中用自定义模型替换现有模型的最简单方法是什么? 确保您为示例应用使用了正确的模型和标签文件。 在相应的示例应用配置文件中提供模型和标签文件路径。 示例应用将使用指定位置的模型和标签文件。 有关更多信息,请参阅 Discover SDKs → IM SDKs。
  6. 用户在参考应用中替换了另一个受支持的模型(IMSDK 支持)。如何调试性能和精度问题? 要测量模型的性能和精度问题,请使用 AI SDK 工具并遵循以下步骤:
    • 性能测量:
      使用 SDK 基准测试工具。例如,如果您使用的是 Qualcomm Neural Processing Engine SDK,请使用 snpe-bench-py
    • 精度调试:
      • AI Hub 模型:
        1. 确保您使用的是 AI Hub 中的最新模型。
        2. 为所选模型正确填写常量。有关更多信息,请参阅 Discover SDKs → IM SDKs。
        3. 如需就 AI Hub 模型精度问题获得进一步支持,请在 Qualcomm AI Hub slack 上报告您的问题。

      • 自定义模型
        1. 模型量化是精度下降的常见原因。确保您在模型量化时使用了正确的数据集。用户应使用与实际部署环境近似的部分数据集进行训练后量化(PTQ)。为使 PTQ 获得良好效果,用户需要提供足够数量的数据来量化模型,例如大约 25-30 张 RAW 图像。
        2. 尝试不同的模型精度,例如 W8A16 和 W16A16,看看模型精度是否有所提升。
        3. 使用 AIMET 进行训练后量化(PTQ)和量化感知训练(QAT)等高级量化技术。有关更多详细信息,请参阅 AIMET 文档。

  7. 使用 AI SDK 进行模型量化的最佳实践有哪些?
    • 准备校准数据 使用与模型在生产环境中将遇到的数据高度匹配的代表性校准数据。 这有助于准确确定量化所需的缩放因子和零点。
    • 选择合适的量化方法
      • 训练后量化(PTQ):这种方法更简单、更快,适用于可以接受轻微精度损失的模型。它将预训练的浮点模型转换为量化模型,无需重新训练。
      • 量化感知训练(QAT):这种方法在训练模型时就考虑量化,有助于保持更高的精度。它更复杂,但对精度要求较高的模型很有益。
      有关详细步骤,请参阅 AIMET 文档。
  8. AI SDK 提供了将 LiteRT 转换为 DLC 的工具。用户是否必须将 LiteRT 模型转换为 DLC,还是 LiteRT 模型可以直接在 NPU 上加速? 您不一定要将 LiteRT 模型转换为 DLC 才能在 NPU 上加速。 Qualcomm 的 AI SDK 支持使用 LiteRT delegate 直接在 NPU 上运行 LiteRT 模型。 这意味着您无需将 LiteRT 模型转换为 DLC 格式即可利用 NPU 能力。
  9. AI SDK 提供了将 PyTorch、Onnx 和 Tensorflow 模型转换为 DLC 的工具。哪种是最快的部署路径? 先将模型转换为 ONNX,再转换为 DLC,通常是最快且最灵活的部署方式。
  10. 用户如何知道模型是否正在 NPU 上运行? 请使用 Qualcomm 提供的以下工具:
    1. Qualcomm profiler
    2. Sysmon
      如果您有 Hexagon SDK 的访问权限,请参阅位于 <Hexagon_sdk_path>/<version>/tools/sysmon_app.html 的 sysmon 文档
  11. 用户如何获得 Snapdragon 平台异构 AI 引擎的优势?用户如何在不同的硬件核心(GPU、NPU 等)上运行不同的 AI 模型? AI SDK 工具和 API 提供了选择运行时(CPU、GPU 或 DSP)的选项。您可以通过命令行参数选择合适的运行时,或使用特定的 C/C++ API。 有关更多详细信息,请参阅 snpe-net-run。 AI 示例应用默认使用 DSP 运行时。您可以通过示例应用配置更改运行时。 例如,在 gst-ai-object-detection 示例应用中,修改 config_detection.json 文件中的 runtime 参数。 运行时:
    • "cpu"
    • "gpu"
    • "dsp"
  12. 如果使用 AI SDK 进行模型转换失败,该如何处理? 请联系 Qualcomm 支持论坛 获取支持。
  13. 自定义浮点模型在 CPU 上精度良好,但量化模型在 CPU 和 NPU 上的精度都很差。如何调试? 可能存在与模型量化相关的问题,请参阅用户替换模型常见问题以获取模型量化方面的指导
  14. 自定义量化模型在 CPU 上按预期运行,但同一模型在 NPU 上运行不准确。如何调试? qnn-net-run 的 --debug 选项会转储逐层数值,因此您可以比较 CPU 与 NPU 推理的差异。
  15. 运行示例应用时,HDMI 屏幕上没有输出。如何调试? 请按照显示调试来调试 HDMI 显示问题。
  16. 是否可以使用 HDMI 电视代替 HDMI 显示器来运行示例应用? 在大多数情况下可以正常工作。如果不行,请改用 HDMI 显示器。
  17. 如何检查 AI 示例应用的硬件运行时? 许多 GStreamer 示例应用支持在多种运行时(CPU、GPU 和 DSP)上进行推理。要确定应用将使用哪种运行时进行推理,请观察日志。
    • CPU
    • GPU
    • DSP
  18. 什么是 devtool 完整性检查(sanity check)错误?如何调试? 有时您可能会看到 devtool 显示完整性检查错误。 确保您对主机拥有 sudo 权限。如果错误仍然存在,请执行以下变通方法:
    1. 更新权限。
    2. 在 $ESDK_ROOT/layers/poky/meta/conf/sanity.conf 文件中禁用 BitBake 完整性检查。
  19. 在目标设备上旁加载(sideload)Qualcomm Neural Processing Engine SDK 的步骤。
    1. 进入目标设备 shell 并运行以下命令:
    2. 进入主机上的 QAIRT SDK 根文件夹并运行以下命令: 以下命令适用于 QCS6490。
      • 对于 QCS8275:将 hexagon-v68 替换为 hexagon-v75
      • 对于 QCS9075:将 hexagon-v68 替换为 hexagon-v73
    3. 验证新的 SDK 版本:
    有关下载 Qualcomm AI Runtime SDK 的更多信息,请参阅 Qualcomm package manager。
  20. 从 QIM SDK 获取预处理张量并使用 SNPE 运行推理的调试步骤。
    1. 从视频文件生成预处理的原始张量。
      1. 创建一个用于保存原始张量的文件夹。
      1. 运行 GStreamer 流水线,将原始张量转储到该文件夹。
      请根据您使用的视频和模型,按需调整 rate(输入视频的 FPS)和 dimensions(模型的输入尺寸)。
    2. 使用 SNPE 或 QNN 运行推理。 i. 创建一个包含原始文件绝对路径的 input_list.txt 文件,如下所示。 对 input_list.txt 文件中列出的每个文件执行推理。 input_list.txt 中的示例内容
      1. 在 HTP 后端上运行 SNPE DLC 或 QNN 模型。
      有关更多详细信息,请参阅使用 Neural Processing Engine 或 AI Engine Direct 部署模型。

更多支持

请在 Qualcomm 支持论坛上提出您的问题。