《Microprocessors and Microsystems》:Exploring fine to medium granularity checkpointing for CNNs inferences in intermittent systems with
Circadia
编辑推荐:
电池供电的嵌入式系统利用能量收集(Energy Harvesting)消除了电池维护的需求,并能够在偏远或难以访问的环境中实现长期部署。然而,其运行本质上是间歇性的,不可预测的电量中断会反复中断执行,显著增加了可靠数据处理的复杂性。现有的间歇性管理方法主要依赖
电池供电的嵌入式系统利用能量收集(Energy Harvesting)消除了电池维护的需求,并能够在偏远或难以访问的环境中实现长期部署。然而,其运行本质上是间歇性的,不可预测的电量中断会反复中断执行,显著增加了可靠数据处理的复杂性。现有的间歇性管理方法主要依赖于检查点(Checkpointing),即周期性地将易失性执行状态保存在非易失性存储器(NVM)中,并在断电重启后恢复。同时,由于原始数据的无线传输是能耗的主要贡献者,直接在设备上进行计算变得至关重要。虽然早期的无电池系统仅限于简单工作负载(如货物识别),最近的进展已使其能用于更计算密集的应用,包括基于卷积神经网络(CNN)的图像识别。在这项工作中,研究人员扩展了Circadia,这是一种专为无电池嵌入式平台上的CNN推理设计的检查点策略。通过利用CNN固有的静态控制流和数据流,Circadia在生成的代码中策略性地放置检查点,以确保前向进展(Forward Progress)和数据一致性(Data Consistency),同时保留模型语义。Circadia的线性复杂度(相对于模型大小)相比现有最优检查点技术表现出的立方复杂度有显著提升。这种算法复杂度的降低在编译级别开启了新机遇,例如探索更细粒度的代码分解策略。研究人员的实验评估表明,细粒度分解仅引入了4.9%的能耗开销,同时显著降低了确保正确执行所需的最小电容(CAPA)大小。
研究背景与问题提出
无电池嵌入式系统依托环境能量收集(Ambient Energy Harvesting)与电容器/超级电容器存储能量,在间歇性计算(Intermittent Computing)范式下运行,面临频繁不可预测断电导致的执行中断挑战,需保证任务完成与数据一致性。现有检查点(Checkpointing)机制多为通用方案,未充分利用卷积神经网络(CNN)静态控制流与数据流特性,且现有最优技术具立方复杂度,难以适应编译级细粒度分解需求。随着边缘设备需在本地执行CNN推理以降低传输能耗与提升隐私,无电池系统在遥感、基础设施监测等场景的部署迫切需高效的CNN专用间歇性执行方案。Circadia作为前期提出的CNN定向静态检查点方法,具线性复杂度与低能耗优势,本研究进一步扩展其编译工具链,探索细(Fine)至中等(Medium)粒度的代码分解策略,以解决极小电容场景下的可执行性问题并平衡能耗与编译开销。
关键技术方法
研究采用Keras(TensorFlow Python库)表示的CNN架构,生成含双卷积层、双最大池化层(Max-Pooling)及全连接层(Dense)的参数化模型(输入32×32×3,输出10类,卷积核3×3,池化2×2,变量N为滤波器数)。基于MSP430FR5969微控制器(2 KB SRAM易失性存储器(VM)、64 KB FRAM非易失性存储器(NVM))的能量模型,利用ScEpTIC模拟器在LLVM中间表示(IR)级模拟间歇性供电(周期断电模型TBPF对应电容CAPA,单位CPU周期)。对比基线为通用静态检查点Schematic与CNN专用Julienning(立方复杂度最优),Circadia采用线性贪婪检查点放置算法,定义细粒度(单数据单元操作为基本操作)与中等粒度(矩阵卷积/局部最大值为基本操作),通过编译链将CNN转为含检查点的C代码,评估指标含单次推理总能耗、检查点能耗占比、放置时间、基本操作数及代码尺寸(.text段)。
研究结果
3. Circadia
研究人员定义了检查点粒度:中等粒度以卷积层的矩阵卷积、池化层的矩阵局部最大值为基本操作(Elementary Operation);细粒度以单标量数据单元生产(如单空间位置核应用、单池化极值、全连接单输出)为基本操作。给出各层两类粒度的操作数公式(如卷积层细粒度为M×N×mout×nout+2,中等为M×N+2,M输入通道、N输出通道、mout×nout输出矩阵尺寸)。提出线性复杂度贪婪检查点放置算法:顺序处理基本操作,维护初始为CAPA的能量配额,若剩余配额不足下一操作与后续检查点能耗则在当前置检查点,重启后配额扣减前次检查点恢复成本;保证任意连续检查点i,j满足CP[i]+ΣOP[k]+CP[j]≤CAPA(CP为检查点能耗、OP为操作能耗),确保前向进展;因仅于检查点断电且状态安全,保数据一致性;不改变操作与顺序,保模型语义。
4. 编译链
编译链为模块化端到端流程:输入含架构、权重、数据流的高层模型(支持卷积、Max-Pool、Dense层及跳过连接(Skip Connections)),逐层划分为基本操作并估算最坏情况能耗(WCEC);应用检查点放置算法(支持替代静态策略),利用静态数据流布局连续内存数据以合并直接内存访问(DMA)传输;基于预定义C模板填充权重全局变量、NVM检查点缓冲区、基本操作例程及主函数指令占位符,生成可直接编译的C代码,支持层划分例程扩展(如跳过连接线性化后按层类型划分,投影与求和归为单操作)。
5. 实验
5.2 中等粒度Circadia性能评估
对比Schematic与Julienning:CNN专用方案(Circadia、Julienning)单次推理总能耗较通用Schematic平均降35%,因Schematic不支持指向分析致所有指针数据存NVM,VM利用率低;Circadia与Julienning能耗近乎重叠,检查点能耗占比最大差0.4个百分点,平均高0.13个百分点,接近最优。放置时间:小模型(15操作)Julienning约3.2 ms,Circadia约0.015 ms(206倍加速);大模型(1059操作)Julienning约1888 s,Circadia约0.23 ms(六阶量级差);真实模型HAR(3540操作)Julienning预估1天,Circadia 0.95 ms;SqueezeNet(22307操作)Julienning预估289天,Circadia 10.5 ms;超时处理能力:0.5 s内Circadia处理696393操作,Julienning仅75(N=6),显线性与立方复杂度差异。支持跳过连接的ResNet(中等粒度1398895操作)Circadia可处理,仅增投影与求和后单检查点。
5.3 不同粒度性能评估
细粒度使最小可行CAPA从中等粒度的1,500,000周期降至700,000周期(电容可小两倍以上)。细粒度基本操作数为中等200~300倍,放置时间随操作数线性增长但仍可控(Circadia线性复杂度)。细粒度默认函数调用致单次推理总能耗平均增4.9%±1.0%,检查点能耗两者大致相当;代码尺寸(.text)在-O0/-Os优化下随模型微增,兼容嵌入式内存。内联(Inlining)启发式(Conv层内联、半内联、全内联)较无内联总能耗降1.3%、0.7%、1.3%,检查点能耗增0.7%,代码尺寸增24.8%、22.6%、45.1%(仍兼容);内联改变检查点放置致能耗微增。
讨论与结论总结
讨论指出Schematic能效低因缺指针分析,CNN专用方案利用数据流绕开复杂分析,显领域定制价值;细粒度4.9%能耗开销可通过内联缓解但增代码尺寸,未来拟加检查点后编译遍合并操作平衡二者;电容随温压湿退化威胁前向进展,需研究空中更新检查点放置;高电压执行降充效且电容老化难满充,细粒度允低电压部分充电运行,未来需开发计及高压能耗损失的放置策略以提升效率与寿命。
结论:Circadia为CNN间歇性系统具低运行时能耗开销与线性复杂度,快于最优立方复杂度方案,适大模型与细粒度分解;细粒度虽增4.9%能耗,但最小CAPA较中等粒度小两倍以上,内联可降开销且代码尺寸兼容嵌入约束;扩展的模块化编译链支持多ML架构,实验证细粒度在极小电容场景的必要性及Circadia的扩展性。
研究结论部分翻译
本文回顾并扩展了研究人员先前的工作Circadia,一种面向基于CNN的间歇性系统的高效节能快速静态检查点放置方法。实验中,Circadia在运行时较最优方案表现出极低能耗开销,其线性复杂度使其能显著更快计算检查点放置。此加速使Circadia适用于更大模型,尤其开启了基本操作粒度的新可能。研究人员探索了细粒度的可能性,引入将模型分解为更小基本操作的方案。同时,研究人员修改了编译工具链(将CNN模型转为含检查点放置的可用C代码),使其更易适配与扩展到其他ML模型架构。实验结果表明,尽管细粒度引入了4.9%的能耗开销,但其允许的最小电容尺寸较中等粒度小两倍以上。内联基本函数有助于以代码尺寸显著增加的代价降低此开销,但仍与小型嵌入式平台的约束兼容。