12.RK3588本地大模型性能评估优化

📅 2026/8/12 17:19:07
12.RK3588本地大模型性能评估优化
1.性能分析基础进行性能评估前先建立一个基准方便后续对比请参考 15.RK3588 查询和设置板子配置 把板子CPU、NPU、DDR运行频率设置到最大后续的性能分析都在这个基准上比较避免动态调频导致性能表现出现误差整个部署程序的推理部分耗时的占用有如下三个方面用户应用程序耗时、输入输出数据拷贝耗时、模型推理耗时。2.开启性能调试2.1 板子Linux系统里进行性能分析#设置日志级别 export RKNN_LOG_LEVEL4 #运行大模型 ./run_rknn_test ./test.rknn ./input.jpg比如运行大模型./demo demo.jpg ../models/qwen3-vl_vision_rk3588.rknn ../models/qwen3-vl-2b-instruct_w8a8_rk3588.rkllm 2048 4096 3 |vision_start| |vision_end| |image_pad|就可以看到性能耗时可以看到 Expand 和 Transpose是运行在CPU上的可以通过算子替换等把它修改到NPU上以提高性能比如2.2 rknn-toolkit2里运行性能分析这个是在ubuntu PC机里通过python 调用rknn-toolkit2连接到板端进行性能分析需要调用eval_perf获取每一层的耗时情况# perf_debug 需要改为True rknn.init_runtime(targetplatform, perf_debugTrue) #获取性能情况 rknn.eval_perf()运行结果2.3 优化方法2.3.1算子替代比如上述文章提到的用固定输出尺寸静态Resize代替动态Resize2.3.2强制指定算子跑 NPU转换时配置 op_target 强制指定算子跑 NPU工具 API 强制调度如果算子硬件本身支持只是编译器自动切到 CPU用op_target强制绑定 NPUrknn.config( target_platformrk3588, op_target{ # key算子输出节点名(Netron查看), valuenpu/cpu node_123: npu, avgpool_out: npu } )适用场景AvgPool、Resize、Add、Mul 等基础算子误 fallback。2.3.3 int8量化上NPU量化参数适配消除量化导致的算子降级很多算子 FP32 不支持 NPUINT8 量化后即可上 NPUrknn.config( quantized_methodchannel, # 按通道量化兼容性更好 quantized_algorithmnormal, channel_wise_quantizationTrue #TrueINT8量化FalseFP16/FP32 )补充输入输出尽量统一 INT8避免浮点分支触发 CPU 子图。2.3.4 激活值量化损失绝大多数精度掉点元凶推理时每层 feature map 数值分布不稳定、极值异常优化方法量化校准优化(最高性价比优先做)量化核心依靠校准数据集统计激活值范围 (min/max)决定量化缩放因子校准数据集作用前向跑一遍模型收集每层输出特征图所有数值统计该层激活全局 min、max。-- 剔除极端异常值精度就能提升