写点什么

骁龙 AI 大赛直播干货汇总

作者:极市平台
骁龙AI大赛直播干货汇总

上期课程中我们了解了在骁龙 AI PC 上使用 QAI AppBuilder 工具丝滑部署 AI 模型的核心方法,省流版教程:

用户指南:

https://github.com/quic/ai-engine-direct-helper/blob/main/docs/user_guide.md

开源社区:

https://github.com/quic/ai-engine-direct-helper


直播问题 &答疑整理

Q1:在使用 QAI AppBuilder 进行模型部署时,如果模型体积较大或计算量较高,有哪些常用的优化手段可以提升在 NPU 上的推理性能?

A1:

模型体积越小,推理速度通常越快。针对大模型或计算量较高的模型,可以通过量化(Quantization)来优化性能,例如将模型从 FP32 精度转换为 INT8 或 INT4。

这样不仅能显著减少模型体积、降低内存占用,还能减少数据传输带宽,提高在 NPU 上的执行效率。当然,量化也会对精度带来一定影响,因此通常需要进行量化感知训练(QAT)或后量化精度调优。

此外,在某些复杂场景下,也可以结合 CPU、GPU 与 NPU 的算力,让不同任务在最合适的硬件单元上执行,从而获得整体最优性能。


Q2:部署完模型后,怎么快速验证它是否正常运行、性能是否达标?有没有推荐的评估方法?

A2:

部署完成后,可以通过运行推理测试并保存输出结果来检查模型功能是否正确。

对于性能验证,QAI AppBuilder 提供了 profiling level 参数,可在配置函数中设置性能分析等级。

将日志等级(log level)设为 info,推理时系统会自动打印出模型加载时间、推理耗时等性能数据。

通过这些日志即可快速判断模型是否运行正常、性能是否达标。


Q3:如果把 CV 模型落到终端设备上,有哪些常见的坑是开发者容易踩到的?有没有一些实战经验可以分享?

A3:

1. 在端侧部署 CV 模型时,常见问题主要集中在两个方面:输入输出数据处理不当

a.模型前后处理通常在 CPU 上执行,若数据量大,可考虑使用多线程提升处理速度。

b.对于图像类任务,也可利用 GPU 进行图像转换、缩放等操作,以加速前后处理。

2.数据格式不匹配

a.需将原始数据(如图片)转换为模型所需的张量(Tensor)格式,并正确处理输出张量。

b.不同模型的输入输出格式差异较大,可参考官方 GitHub 上的推理示例(包含二十余个模型案例),根据需要调整数据预处理和后处理逻辑。

只要解决好前后处理逻辑,并正确适配模型格式,就能充分发挥骁龙 AI PC 的算力,开发出高性能、低功耗的端侧 AI 应用。


Q4:哪一种部署方式具有更多的模型适配?

A4:

目前来看,Python 格式的模型(如 PyTorch、TensorFlow)在生态上最为丰富。

但若要在 骁龙 AI PC 的 NPU 上获得最佳性能与最低功耗,推荐使用 QAI AppBuilder 或 QAIRT SDK 部署 二进制上下文 格式的模型。

这两种方式中,QAI AppBuilder 操作更简便,同时在“模型广场”上已有数百个经过转换的 QNN 二进制上下文 模型可直接下载使用。

若开发者有自训练的模型,也可根据官方文档自行转换为 QNN 格式进行部署。


Q5:用 QAI AppBuilder 跑大语言模型(LLM)时,怎么让内存占用更小、速度更快?有优化技巧吗?

A5:

大语言模型通常参数量庞大,内存占用和推理速度主要取决于模型规模。

1.优化方向包括:选择合适规模的模型:在满足任务需求的前提下尽量使用小模型,可显著降低内存占用并提升速度;

2.使用量化模型:在 NPU 上运行的 LLM 通常经过 INT8 或 INT4 量化,较 FP32 模型体积更小、速度更快,同时节省内存与带宽。


Q6:本地跑 AI 模型和放在云端相比,各有什么优缺点?

A6:

云端运行模型的优势在于可以支持更大、更复杂的模型,因为云端算力更强,生成效果通常也更好。不过,这也意味着需要通过网络传输数据,响应速度会受到延迟影响,而且涉及的数据隐私需要额外考虑,同时大多数情况下还需要支付云服务费用。

相比之下,本地端侧运行模型的优势在于延迟低、响应快,数据和指令不必经过网络传输,隐私和安全性更高,而且运行成本几乎为零,非常适合需要离线处理或涉及敏感数据的应用场景。但端侧设备的算力和内存有限,因此模型规模和复杂度通常比云端受限。


Q7:如果要同时跑好几个模型,QAI AppBuilder 是怎么分配资源的呢?会不会卡?

A7: QAI AppBuilder 采用多进程架构来高效分配资源并防止应用卡顿。

其核心机制是能够将 AI 模型加载并运行在独立的后台服务进程中。在初始化模型时,通过指定不同的进程名称(proc_name),可以将计算密集型的推理任务从主应用(尤其是 UI 线程)中剥离出去。

这种设计的优势体现在:

1.资源隔离:每个模型或每组模型在独立的进程中运行,内存和计算资源相互隔离。单个模型的异常不会影响主应用或其他模型的稳定性。

2.避免 UI 卡顿:对于图形界面应用,AI 推理在后台进程中执行,UI 线程仅负责任务分发和结果回收,从而确保了用户界面的流畅响应。

3.并行处理:操作系统能够将不同的模型进程调度到多个 CPU 核心上执行。结合骁龙芯片上 AI 硬件(如 HTP)的并行处理能力,可以实现真正高效的多模型并行推理。

因此,通过合理利用其多进程能力,QAI AppBuilder 可以有效管理多个模型的资源调度,避免因 AI 计算导致的应用卡顿。


Q8:支持的模型有什么限制吗?模型大小和性能要怎么平衡?

A8: QAI AppBuilder 对模型的支持能力主要继承自底层的 Qualcomm Neural Network (QNN) SDK。

1.模型格式与算子:平台支持通过 QNN 工具链转换后的主流模型格式(如 ONNX, TensorFlow 等)。模型能否成功运行,关键在于其内部的所有计算算子(Operations)是否被目标硬件后端(如 HTP, CPU)所支持。

2.模型大小:模型体积主要受限于目标设备的物理内存(RAM)。过大的模型可能导致加载失败或运行时内存溢出。

平衡模型大小与性能的策略:

量化(Quantization):此为最核心的优化手段。通过将模型权重从 FP32 转换为 FP16 或 INT8 等低精度格式,可显著减小模型体积、降低内存占用并大幅提升在 HTP 等专用硬件上的推理速度。

模型架构选型:优先选择为移动和边缘设备设计的轻量化网络架构,例如 MobileNet、EfficientNet 等。

模型优化技术:可以结合使用剪枝(Pruning)、知识蒸馏(Knowledge Distillation)等先进技术,在保持精度的同时进一步压缩模型。

总的来说,平衡的关键在于应用有效的量化策略和选择合适的轻量级模型架构。


Q9:我们项目只是用到一个小模型效果,用 QAI AppBuilder 上手会不会很复杂?

A9: 上手不复杂。QAI AppBuilder 对核心 API 进行了高度封装,旨在简化 AI 模型的部署流程。对于仅使用单个小模型的项目,集成过程非常直接。

以 Python 接口为例,开发者仅需几步即可完成集成:

1.配置环境:通过 QNNConfig.Config()接口一次性完成底层库路径和运行后端的配置。

2.模型初始化:通过继承 QNNContext 类并传入模型名称和路径,即可轻松完成模型的加载。

3.执行推理:直接调用 Inference 方法,传入输入数据,即可获得推理结果。

4.资源释放:对象的生命周期结束时,资源会自动被回收和释放。

相较于直接操作底层的 QNN C API,AppBuilder 屏蔽了大量复杂的细节,使开发者能更专注于业务逻辑的实现。


以上内容来自 2025 骁龙人工智能创新应用大赛

参赛:https://a.cvmart.net/rSZB2e

用户头像

极市平台

关注

还未添加个人签名 2025-10-20 加入

还未添加个人简介

评论

发布
暂无评论
骁龙AI大赛直播干货汇总_开发_极市平台_InfoQ写作社区