创建

登录 ReadmeX

或

了解我们如何处理你的信息: 隐私政策

ReadmeX

陪你读懂 AI 动态

今天,想先了解什么?

选一份动态总结,或直接聊聊你的问题。

社区和关注动态总结只属于你自己。

资讯

用RKNN性能数据排查RK3588静默CPU回退

AI 总结

掘金文章介绍了如何在推理结果正确的情况下,识别RK3588 NPU算子静默回退至CPU。作者调用librknnrt的rknn_query(RKNN_QUERY_PERF_DETAIL)获取逐算子明细,并通过CPU时间占比判定执行位置;调用前须在rknn_init中加入RKNN_FLAG_COLLECT_PERF_MASK。YOLOv8n和YOLOv8s-seg的真机测试均被判定为NPU_ONLY,但判定阈值及更广泛结论主要来自作者自定的口径。

深度见解

这套流程可帮助边缘AI开发者核实自定义RKNN模型是否真正运行在NPU上,避免仅凭结果正确或速度表现判断。

先说一个反直觉的结论

模型在 RK3588 上推理出了正确结果,不代表它在 NPU 上跑。

算子不被 NPU 支持时,RKNN runtime 会静默回退到 CPU 执行:程序不报错、结果是对的、只有速度慢得莫名其妙。更麻烦的是,官方模型仓库(model zoo)里的模型一般都很干净,真正会回退的恰恰是大家自己改过结构、加过算子的模型——网上现成的经验帖帮不上忙,只能自己查。

这篇写我实际用的查法:不靠估算,直接调 librknnrt 的 PERF 接口读硬件侧的逐算子账本,再按 CPU 时间占比给结论。包含一个差点让我得出错误结论的坑,和两个模型的真机实测数据。测试环境:RK3588,Ubuntu 22.04,rknpu 驱动 0.9.8,librknnrt 2.3.2。

第一步:坑——PERF 数据会静默为空

查回退的正道是 rknn_query(RKNN_QUERY_PERF_DETAIL),它返回每个算子的耗时明细。但有个巨坑:

#RK3588#RKNN runtime#librknnrt#rk-edge-doctor#YOLOv8n#YOLOv8s-seg

原文约 4 分钟读完阅读原文
群聊

还没有评论,来说说你的看法。