《Electronics》:C2fDeploy: Function-Preserving Graph Rewriting to Eliminate Runtime Split Overhead on FPGA Deep Learning Processing Units
编辑推荐:
摘要:在基于现场可编程门阵列(FPGA)的深度学习处理单元(DPU)平台上,神经网络检测器的高效部署不仅取决于模型复杂度,还取决于编译器可见的图结构。不支持的算子会使执行在加速器与主机执行域之间发生碎片化切分。研究人员提出C2fDeploy,一种针对YOLOv
摘要:在基于现场可编程门阵列(FPGA)的深度学习处理单元(DPU)平台上,神经网络检测器的高效部署不仅取决于模型复杂度,还取决于编译器可见的图结构。不支持的算子会使执行在加速器与主机执行域之间发生碎片化切分。研究人员提出C2fDeploy,一种针对YOLOv8 C2f块的无训练重写方法,将通道切分从激活图迁移至已训练投影与批归一化参数的离线划分中。转换后的块在无需重训练或增加参数的情况下保持32位浮点(FP32)函数不变。在GRAZPEDWRI-DX骨折检测任务上,原始图与重写图产生完全一致的FP32测试指标,并具有可比的8位整数(INT8)精度。对全部八个重写C2f块输出进行的直接张量级FP32比较显示,聚合平均绝对误差(MAE)为9.73×10-8,相对L2误差为1.97×10-7,提供了超越检测级指标的数值验证。针对Kria KV260的编译将九个DPU子图合并为一个,并消除了C2f相关的主机端切片操作。在同检查点全XModel基准测试中,C2fDeploy将全XModel图执行吞吐量提升了95.2倍,并将5 V系统模块(SOM)电源轨上的单次执行能耗降低了98.2%。直接运行时剖析进一步表明,DPU计算单元忙时利用率从0.36%提升至90.75%,而系统级CPU利用率降低了89.5%。聚合APM观测的外部存储器带宽从40.20 MB/s提升至3250.56 MB/s,表明加速器执行变得更加连续,而归一化APM观测流量在每次图执行中降低了14.8%。上述结果表明,编译器感知的图重写可以在不改变已训练检测器的前提下消除部署瓶颈。
论文解读
一、研究背景与问题
在资源受限的边缘平台上对儿科腕部X光片进行实时自动分析,既需要可靠的检测精度,也需要高效的推理性能。儿科腕部骨折在细微骨折线与正常解剖结构重叠时难以定位,这促使了计算机辅助检测方法的发展。GRAZPEDWRI-DX数据集提供了专家标注的儿科腕部X光片,已成为骨折定位的可复现基准。近期针对该数据集的研究主要聚焦于通过数据增强、替代YOLO变体、注意力机制和多尺度特征融合来提升检测精度。然而,将高精度检测器迁移至基于FPGA的边缘平台引入了不同的挑战:编译后的算子图可以决定计算是保留在加速器上,还是在加速器与主机执行域之间碎片化。部署效率并非仅由参数量或浮点运算量决定,实测延迟可能强烈依赖于算子结构、内存访问和编译器降级方式。在Vitis AI 2.5编译路径中,YOLOv8 C2f块中的通道切分被降级为主机端strided_slice操作,八个C2f块产生十六个此类操作,并将编译后的网络划分为九个DPU子图和十九个CPU子图,导致执行在加速器与主机之间反复切换,严重制约了部署效率。
二、研究内容与意义
研究人员提出C2fDeploy,一种无训练重写方法,通过沿输出通道维度划分已训练投影滤波器和批归一化状态,将C2f块中的运行时通道切分从激活图迁移至离线参数划分中。该方法不引入新的权重、近似或重训练,直接从已训练参数获得两个部署分支,保持了FP32函数在精确算术意义上的等价性。在GRAZPEDWRI-DX骨折检测任务上,原始图与重写图产生完全一致的FP32测试指标,张量级比较显示聚合MAE仅为9.73×10-8,相对L2误差为1.97×10-7。编译后,DPU子图从九个合并为一个,消除了全部十六个C2f相关切片操作。同检查点全XModel基准测试显示,吞吐量提升95.2倍,SOM电源轨单次执行能耗降低98.2%,DPU计算单元忙时利用率从0.36%提升至90.75%,系统级CPU利用率降低89.5%。该研究的意义在于证明编译器感知的图重写可以在不改变已训练检测器的前提下消除部署瓶颈,揭示了算子表示对编译划分和硬件利用率的决定性影响。
三、主要技术方法
研究人员使用了以下关键技术方法:基于精确算术推导的参数映射方法,将训练好的投影卷积权重和批归一化状态沿输出通道维度划分为两个分支;FP32张量级数值验证方法,通过前向钩子记录八个C2f块的输出并进行误差累积比较;基于Xilinx Intermediate Representation(XIR)的算子分配与子图划分分析方法;Vitis AI 2.5工具链的INT8后训练量化(PTQ)与XModel编译流程;基于Kria KV260平台的板级性能测量协议,包括xdputil全XModel吞吐量基准、DPU计算单元忙时状态采样、系统级CPU利用率监测、AXI Performance Monitor(APM)外部存储器带宽测量以及INA260电源轨功率监测。样本队列来源于公开的GRAZPEDWRI-DX数据集,共20,327张图像,按患者级别划分为14,204张训练图像、4,094张验证图像和2,029张测试图像。
四、研究结果
FP32保持与INT8量化行为:在相同deploy-s-512检查点下,FP32图中原始C2f与C2fDeploy在精确率、召回率、mAP50和mAP50-95上完全一致。张量级比较显示,八个C2f输出上的最大绝对差为9.73×10-8,聚合MAE为9.73×10-8,RMSE为1.97×10-7,相对L2误差为1.97×10-7。INT8量化后两者差异较小且方向混合,属于量化变异而非精度提升。
编译图划分:原始C2f XModel包含29个顶层子图(1个USER、9个DPU、19个CPU),其中CPU子图包含16个strided_slice、16个float2fix和19个fix2float操作。C2fDeploy将顶层子图减少至5个(1个USER、1个DPU、3个CPU),CPU分配操作从51个降至3个,剩余三个CPU子图仅包含输出侧fix2float转换。
同检查点全XModel性能:C2fDeploy将全XModel吞吐量从0.5160提升至49.14 graph executions/s,提升95.2倍;SOM电源轨能量从0.963 J降至0.0173 J,降低98.2%。外部12 V输入功率交叉验证显示能量降低98.48%,与板载测量趋势一致。
运行时利用率与外部存储器剖析:DPU计算单元忙时利用率从0.36%提升至90.75%;系统级CPU利用率从89.53%降至9.42%;聚合APM观测带宽从40.20 MB/s提升至3250.56 MB/s,归一化流量从77.9 MB/execution降至66.4 MB/execution,降低14.8%。
最终运行点与应用剖析:deploy-s-512在DPU阶段测量边界下达到46.542 FPS,deploy-n-512达到127.280 FPS。完整端到端GraphRunner对比中,总延迟从2045.923 ms降至86.410 ms,对应约23.7倍加速;XModel阶段延迟从1970.381 ms降至20.636 ms,对应约95.5倍加速。
五、讨论与结论
讨论部分指出,C2fDeploy既未剪枝网络也未减少理论卷积算术量,性能差异源于算子表示和编译划分而非模型精简。与源码级C2f替换、硬件自定义层和近似优化等替代策略相比,C2fDeploy在保持精确功能等价的同时降低了工程投入。该方法具有通用性,可推广至其他基于切分的架构,但需满足三个条件:存在编译器不友好的切分操作、存在数学等价的分解路径、离线参数变换后模型语义保持不变。研究人员也承认若干局限,包括依赖特定编译器版本、DPU利用率仅代表计算单元忙时而非内部算术占用率、APM带宽仅表征监测接口流量等。结论部分确认,C2fDeploy通过划分已训练投影和批归一化参数消除了YOLOv8 C2f运行时切分,在KV260平台上消除了C2f相关CPU切片操作,将DPU计算合并为一个子图,同检查点全XModel吞吐量提升95.2倍,SOM电源轨能量降低98.2%,DPU忙时利用率从0.36%提升至90.75%,CPU利用率降低89.5%,端到端应用延迟从2045.923 ms降至86.410 ms,对应约23.7倍加速。该方法代表了面向切分型神经架构的通用部署导向图重写原则。