076、NPU的强化学习模型加速:嵌入式决策系统
昨晚调试一块基于RK3588的决策控制板,客户反馈说无人机避障响应延迟从15ms飙到了120ms。我盯着逻辑分析仪上的波形,发现NPU推理时间没变,但强化学习模型的策略输出到执行器之间,莫名其妙多了个“思考间隙”。拆开一看,是CPU在跑强化学习的价值网络更新时,把NPU的推理队列给堵死了。这种“NPU算得快,但系统决策慢”的坑,做嵌入式决策系统的人十有八九都踩过。
强化学习在NPU上的“水土不服”
传统CNN模型在NPU上跑,输入输出都是固定张量,流水线一搭就完事。但强化学习模型不一样——它是个闭环决策系统,NPU只是其中的“推理引擎”,外面还套着经验回放、策略更新、环境交互这些环节。我见过太多人直接把PyTorch的DQN模型转成ONNX塞进NPU,结果发现NPU推理只占20%时间,剩下80%全耗在CPU和NPU之间的数据搬运上。
举个例子,一个典型的DDPG(深度确定性策略梯度)模型,Actor网络输出连续动作,Critic网络评估状态价值。在嵌入式场景下,这两个网络往往共享部分特征提取层。如果你把它们拆成两个独立的NPU模型,每次决策都要加载两次模型、搬运两次特征图,内存带宽直接爆炸。我踩过这个坑——在RKNN上试过,推理延迟从3ms变成11ms,就因为多了一次模型切换的开销。
模型分割:把决策流切成NPU友好的块
强化学习模型在NPU上加速的关键,不是让NPU跑得更快,而是让决策流“适配”NPU的硬件特性。NPU擅长的是固定计算图的批量推理,而强化学习需要的是“感知-决策-执行”的实时闭环。