从一次深夜调参说起
上周在部署RT-DETR到边缘设备时,又遇到了老问题:模型在Jetson Orin上跑起来帧率只有23FPS,离实时检测的30FPS还差一截。
尝试了各种剪枝量化手段,要么精度掉得厉害,要么速度提升有限。盯着TensorRT的profiler输出,突然意识到——我们是不是在错误的方向上优化?现有的RT-DETR架构毕竟是人工设计的,真的适合我们的特定硬件吗?
NAS不是玄学,是硬件感知的架构优化
很多人把神经网络架构搜索(NAS)当成黑魔法,其实它的核心思想很朴素:让算法自动寻找最适合目标硬件和任务的最优架构。
我们手动调结构时,往往基于经验和直觉,但搜索空间有限。NAS则能探索我们想不到的组合。
去年在部署YOLO系列时做过对比实验:人工调整的模型在3080Ti上跑得很好,但移植到边缘端就水土不服。
后来用NAS搜出的架构,参数量多了15%,但在Orin上反而快40%。原因很简单——NAS考虑了内存访问模式、算子融合可能性这些我们容易忽略的硬件特性。
RT-DETR的NAS改造切入点
RT-DETR现有的混合编码器设计其实给了NAS很好的起点。几个关键的搜索维度:
编码器路径搜索:混合编码器里CNN和Transformer的比例不是固定的。我们可以让NAS决定:
- 哪些阶段用CNN,哪些用Transformer
- 跨阶段连接要不要加,加在哪里
- 注意力头的数量动态分配