Qualcomm Cloud AI SDK 用户指南(9)

文章介绍了QualcommCloudAISDK中在生产环境中执行和集成模型的详细步骤,包括通过CLI、C++和Python接口,以及模型执行的四种方式。重点讲解了QAICRunner工具的选项和使用示例,以及如何进行系统级和设备级推理分析以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


2.3 在生产管道中执行、集成和部署

本节将介绍开发人员在云 AI 平台上执行推理的不同方式(CLI、C++、Python 等)以及可集成到推理应用程序并部署在生产管道中的所有工具/实用程序。

2.3.1 模型执行

Qualcomm Cloud AI 100 设备上有 4 种调用推理的方法。

  1. 命令行接口
    qaic-runner是一个 CLI(命令行推理)工具,旨在使用预编译的二进制文件(也称为 QPC(Qaic 程序容器)二进制文件)在设备上运行推理。它提供了各种选项和功能来促进推理和性能/基准分析。在本文档中,我们将讨论工具中可用的不同选项qaic-runner、它们的默认值并提供它们的使用示例。

选项和默认值

范围描述默认
-d, --aic-device-id 指定 AIC 设备 ID。0
-D, --dev-list [:]多设备网络的设备 ID 映射。0[:1]
-d, --aic-device-id AIC设备ID,默认自动拾取0
-D, --aic-device-map [:]多设备网络的设备 ID 映射,0[:1]
-t, --test-data 程序二进制文件的位置
-i, --input-file 要从中加载输入数据的输入文件名。为每个输入文件指定多次。如果未给出 -i,则在 -t 目录下的 bindings.json 中查找可用输入。如果绑定.json 不可用,将生成随机输入。
-n, --num-iter 迭代次数,40
–time 提交推论的持续时间(以秒为单位)
-l, --live-reporting启用以 1 秒为间隔的定期实时报告离开
-r, --live-reporting-period在女士中设置实时报告时间1000
-s --stats以 1 秒的间隔定期启用实时分析统计报告
-a, --aic-num-of-activations 激活次数1
–aic-profiling-start-iter 分析开始迭代0
–aic-profiling-start-delay 分析开始延迟(以毫秒为单位)。分析将在给定的延迟期过后开始
–aic-profiling-num-samples 分析要保存到文件的样本数1
–aic-profiling-format 已弃用DEF
–aic-profiling-type 分析类型,‘stats’|‘trace’|‘latency’用于遗留分析和’trace_stream’ | 'latency_stream’流分析。多次设置多种格式没有任何
–aic-profiling-duration 运行分析的分析持续时间(以毫秒为单位)。开始分析后,分析持续时间结束后将停止
–aic-profiling-sampling-rate 分析采样率 [ full/half/fourth/eighth/sixteenth]。程序将以请求的速率生成分析样本。要分析所有样本,请选择完整,对于每隔一个样本,请选择一半,依此类推满的
–aic-profiling-reporting-rate 分析报告生成率(以毫秒为单位)[ 500/1000/2000/4000]。将在分析持续时间内按照请求的时间间隔生成分析报告500
–aic-profiling-out-dir 保存文件的位置,dir应该存在并且可写‘.’
–write-output-start-iter 写入输出开始迭代0
–write-output-num-samples 要写入的输出数量1
–write-output-dir 保存输出文件的位置,dir应该存在并且可写‘.’
–aic-lib-path DEPRECATED已弃用,请将环境变量 QAIC_LIB 设置为自定义库的完整路径,默认从安装位置加载 libQAic.so
–aic-batch-input-directory批处理模式:处理输入目录中的所有文件。目前仅支持具有单个输入文件的网络DEF
–aic-batch-input-file-list批处理模式:指定包含逗号分隔的缓冲区绝对路径的输入文件。每行是 1 个推理,并且必须具有程序所需的缓冲区数量和大小DEF
–aic-batch-max-memory 批处理模式:加载文件时限制内存使用,提供以 Mb 为单位的参数1024
–submit-timeout 等待内核上的推理请求完成的时间。默认 0 毫秒。当为0时,内核默认为5000ms
–submit-retry-count 推理请求超时时等待调用重试的次数。5
–unbound-random在缓冲区中填充随机值时,不要考虑输入缓冲区格式并使用 0 到 255 之间的随机输入填充每个字节。这可能会导致某些网络出现意外行为。
–dump-input-buffers转储基准测试模式中使用的输入缓冲区
-S, --set-size 设置推理循环执行的大小,最小值:110
-T, --aic-threads-per-queue每个队列的线程数4
–auto-batch-input自动批量输入,满足网络批量要求。输入的批量大小应为 11
-p, --pre-post-processing前后处理[ on|off] 在
-v, --verbose程序的详细日志
-h, --help帮助

使用示例

  1. 使用随机输入运行推理
    例子:
sudo /opt/qti-aic/exec/qaic-runner -t /path/to/qpc  -a 3 -n 5000 -d 0 -v
  • 在此示例中,我们使用已生成的预编译二进制文件。
    • 3 个激活 - 这里的激活是指您想要在设备上运行的网络实例的数量。在这种情况下,网络的 3 个副本可以在设备上并行运行。
    • 假设每个网络都是用 4 个核心编译的(在此命令的输出中sudo /opt/qti-aic/tools/qaic-qpc validate -i /path/to/qpc/programqpc.bin查找Number of NSP required值。)
      • 确保您使用的设备至少有 12 个空闲核心,即 3x4 核心。
    • 由于未提供输入,我们将随机生成的输入(具有从 qpc 推断出的适当尺寸和类型)提供给设备。
    • 这个随机生成的输入用于 5000 次推理。
    • 在设备 ID 上0。使用 CLI 工具检查您的设备 ID /opt/qti-aic/tools/qaic-util -q,查找其中的 QID 值。
    • 使用-v选项启用详细日志。
  • 此配置中的工具可用于测量性能。

对一组输入运行推理
在运行推理之前,需要根据输入大小和类型将输入转换为适当的格式。看看这个 Jupyter 笔记本示例

  1. 生成延迟捕获转储
  • aic-profiling-format latency
  • aic-profiling-out-dir:延迟捕获的输出目录(运行此命令之前需要存在)
  • aic-profiling-start-iter:将此值设置得足够高,以便在设备预热后开始捕获样本
  • aic-profiling-num-samples:要捕获的样本数。可以设置大于推理数

生成延迟统计信息的示例命令

!/opt/qti-aic/exec/qaic-runner -t ./BERT_LARGE -a 8 -S 1 -d 0 \ #-i inputFiles/input.raw \
--aic-profiling-format latency --aic-profiling-out-dir ./BERT_LARGE_STATS \
--aic-profiling-start-iter 100 --aic-profiling-num-samples 99999 --time 20 

看看这个 Jupyter 笔记本示例

结论
qaic-runnerCLI 工具主要用于性能测试目的。对于实际的推理任务,建议使用 Python 或 C++ API,具体取决于您首选的技术堆栈。

2.使用Python API

参考Python API

3.使用C++ API

参考C++ API

4.使用Onnxrt

使用Qualcomm Cloud AI 100 作为 onnxrt 中的执行提供程序。

2.3.2 推理分析 - Cloud AI 100

推理分析

Cloud AI支持系统级和设备级分析,帮助开发人员识别性能瓶颈。无需对 QPC 进行任何更改即可执行系统分析,而设备分析则需要重新编译模型。

系统级分析

系统级分析包括应用程序、Linux 运行时、内核模式驱动程序和设备处理之间的推理时间细分。这可以深入了解每次推理在主机与设备上花费的推理时间。开发人员可以使用此信息优化他们的应用程序或模型。

请参阅教程部分中的 Profiler 笔记本,了解使用 qaic-runner CLI 的模型的完整系统级分析工作流程。

还支持使用 Python API 进行分析。请参阅此页。

设备级分析

设备级分析面向希望识别设备上推理执行瓶颈的高级开发人员。这需要对AI核心和SoC架构有很好的了解。开发人员会感兴趣的 3 个关键功能 -

  • 内存指标 - 这提供了编译器对模型的板载 DDR 与 VTCM(矢量紧耦合内存)使用情况的估计。
  • 摘要视图 - 这提供了操作的直方图、每个操作所花费的总时间、操作数的存储位置(DDR 与 VTCM)、AI 内核中各个 IP 块的有效使用等。此功能仅用于调试,因为它可能会根据模型的大小影响性能。
  • 时间线视图 - 这提供了从推理开始到结束在所有 IP 块上执行的所有操作的时间线视图。此功能主要用于放大操作以了解瓶颈。此功能仅用于调试,因为它会影响性能。

请参阅 Profiler Jupyter笔记本,了解使用 qaic-exec 和 qaic-runner CLI 的模型的完整设备级分析工作流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值