阅读导航

这一篇在干嘛?

这篇论文发表在 ACM 期刊 TECS(ACM Transactions on Embedded Computing Systems)2025 年 6 月刊上,研究的是车载边缘计算(VEC, Vehicular Edge Computing)环境下如何加速 DNN 推理。作者做了三件事:用 XGBoost 预测 DNN 每一层在不同设备上的执行延迟;对”链式”和”DAG”两类 DNN 任务分别设计切分点选择算法(线性搜索 + 最小割 HLPP);再用树莓派、Jetson Nano 实车实验和 CARLA/SUMO 仿真验证效果。 适合谁读:对边缘计算、模型切分卸载感兴趣,但又被满页公式劝退过的初学者。读完后你应当能独立复述”为什么切、在哪切、切给谁”这三个核心问题的解法。

VEC 场景入门:汽车为什么算不动大模型

先看场景。现在的智能汽车早已不是单纯的交通工具,而是一个装着摄像头、雷达、OBD(On-Board Diagnostics,车载诊断系统)和车载处理器的”移动数据处理平台”。车上的 DNN(Deep Neural Network,深度神经网络)任务五花八门:红绿灯识别、行人检测、车道线检测、驾驶员分心检测……这些任务对延迟极其敏感——安全关键任务通常要求延迟低于 80 毫秒,否则信息处理不及时就可能酿成事故。

问题是,车载处理器的算力实在有限。随着 AI 应用越来越复杂、模型越来越大,车上的芯片已经”扛不动”了。一个自然的想法是把任务扔给云端,但云计算也有三大痛点:

  1. 往返传输延迟高:数据在车和数据中心之间来回跑,延迟和能耗都上去了;
  2. 通信不可靠带来的数据安全隐患
  3. 海量车辆请求集中打向云端,传输延迟成为瓶颈,还有隐私泄露风险。

于是就有了移动边缘计算(MEC, Mobile Edge Computing):把算力下沉到离用户更近的边缘。而本文研究的 VEC(车载边缘计算) 是 MEC 在道路交通场景里的特化版本——把计算任务卸载到**路侧单元(RSU, Roadside Unit)或者附近有富余算力的服务车辆(SV, Service Vehicle)**上,计算和存储离车更近,延迟更低。

此外,卸载不能只看时间不看能耗。车上装满了各种传感器,管理这些传感器产生的数据本身就是电池寿命的一大挑战,所以一个好的卸载机制必须同时权衡延迟和能耗。这正是全文优化的两条主线。

图 1:车载边缘计算应用场景图。 请求车辆(RV)、服务车辆(SV)和路侧单元(RSU)三类节点各有不同的硬件能力和网络连接特性,DNN 任务可以本地执行、卸载给附近的 SV,或者通过 V2I 卸载给 RSU。

在这个场景里,还有一个容易被初学者忽略的”隐藏成本”:切分决策本身也需要知道信息。如果把 DNN 模型按层切开卸载,你就必须知道每一层在每种设备上大概跑多久,才能决定切在哪。想拿到这些数据,最笨的办法是把 DNN 任务真的跑一遍、逐层计时——但这本身就要消耗大量时间和能量,等于为了做决策先预支了一笔不小的开销。所以论文的第一个关键问题就是:能不能不跑任务,就预测出每层的执行延迟? 这就引出了后面基于 XGBoost 的延迟预测模型。

核心思路与前人研究:把 DNN 切开再卸载

传统卸载思路为什么不够用

传统的计算卸载研究大多把任务当成”一个参数固定的计算块”,以最粗的粒度把整个任务看作不可分割的整体。但 DNN 任务有个独特性质:层与层之间高度相关,上一层的输出就是下一层的输入。这种严格的依赖关系意味着:把 DNN 任务当成黑盒子整体卸载,会浪费大量优化空间;反过来,如果能按层粒度切开,前几层在本地跑、后几层卸到边缘跑,就能显著降低总延迟和能耗。

当然,按层切也不是免费的:切分点处的中间结果要通过无线链路传出去,产生传输延迟和能耗。所以核心权衡是——本地多算一点省传输,边缘多算一点省计算,最优切分点就是让”计算延迟 + 传输延迟 + 能耗”加权和最小的那个点

前人做到哪一步了

论文把相关工作分成两条线:MEC 里的计算卸载与 DNN 切分(如经典的 Neurosurgeon 调度器、DADS 的 DAG 协同推理),以及 VEC 里的各种卸载策略。作者用一张表总结了已有工作在六个维度上的覆盖情况:

参考文献延迟预测DAG 型 DNN 任务链式 DNN 任务能耗-延迟权衡卸载到附近车辆考虑车辆移动性
[17]×××××
[27]×××××
[3, 16, 53]×××××
[49]×××××
[19]××××××
[41]××
[10]××××××
[57]××××
[12]×××
[32]×××
[55]××××
[5]×××
[21]×××
本文

从这张表能看出本文的三个差异化贡献:

  1. 同时考虑 DAG 型和链式 DNN 任务。很多工作只处理其中一种,而这两类任务结构差异巨大,切分策略必须分别设计;
  2. 卸载目标不只有 RSU,还有附近的服务车辆(SV)。在 RSU 通信过载的临时热点区域,附近 SV 是算力的有效补充;
  3. 联合优化系统能耗与延迟,并把车辆移动性纳入考量。

图 2:VEC 环境下基于 DNN 模型切分的计算卸载系统模型图。 路面是双向城市道路,边缘层由 RSU 和若干 SV 组成,车辆用户层由产生 DNN 任务的 RV 组成。

图 4:本文方案的总体流程。 先用 XGBoost 预测各层延迟,再根据 DNN 任务类型选择切分算法:链式任务走线性搜索,DAG 任务走基于 HLPP 的最小割算法,最后得出最优切分点与卸载决策。

常见坑:把"链式"和"DAG"当成一回事

链式 DNN 任务(如 AlexNet)层与层严格串行,结构简单;DAG(Directed Acyclic Graph,有向无环图)型 DNN 任务(如带残差连接的 ResNet)存在并行路径和分支汇聚。如果给链式任务套上为 DAG 设计的切分方法,会引入不必要的复杂度;反过来,把链式方法硬套在 DAG 上,切分效果会很差。很多入门者拿到 ResNet 就直接用”找一个切分点”的思路,结果漏掉了多条分支要同时切的问题。这也是为什么本文要为两类任务分别设计算法。

系统建模:车辆、道路与通信

这一节把现实世界抽象成数学模型,是理解后面所有公式的基础。

节点与任务

系统里有三类节点:

  • 请求车辆(RV, Request Vehicle):产生 DNN 推理任务的汽车,硬件是 Raspberry Pi 4B;
  • 服务车辆(SV, Service Vehicle):有空闲算力、愿意帮忙的汽车,硬件是 Raspberry Pi 3B+;
  • 路侧单元(RSU):路边的基础设施节点,硬件是 Jetson Nano,通过有线光纤互联。

车辆分两类任务:链式 DNN 任务(模型记为 )和 DAG 型 DNN 任务(模型记为有向无环图 ,其中 是层节点集合, 是层间依赖边的集合)。切分的最小粒度是”层”,切出的前段子任务在 RV 本地执行,切分点处的中间输出结果通过 V2I(车到基础设施)或 V2V(车到车)通信卸载给 RSU 或 SV 继续算。

图 3:VEC 环境下基于 DNN 模型切分的计算卸载流程时序图。 卸载过程分四步:① RV 生成链式或 DAG 型 DNN 推理任务;② 分析模型层类型与参数,用延迟预测模型预测各层在不同设备上的执行延迟;③ 按任务类型用不同算法切分模型,前端部分在 RV 本地执行,切分点的中间输出经 V2I 或 V2V 传给 RSU 或 SV;④ 边缘节点以中间结果为输入继续计算,返回最终结果。

移动性模型:车是会跑的

VEC 和普通边缘计算最大的区别就是节点会动。论文假设车辆在双向城市道路上行驶,位置用一维坐标 表示,速度 沿坐标轴正向为正、反向为负。假设在时刻 ,车辆 的通信范围内,它还要行驶多久才冲出当前 RSU 的覆盖范围?剩余距离定义为:

其中 是 RSU 的通信覆盖半径, 是 RSU 到车道的垂直距离。直白地说:这个公式算的是”车沿着路还能在信号圈里待多远的路程”,方向朝 RSU 靠近就加一段、远离就减一段。由此可以算出 能维持 V2I 通信的时长:

同理,两辆车之间能维持 V2V 通信的时长由双方相对位置和相对速度共同决定:

第一行是两车相向而行的情况(相对速度是两者速率之和),第三行是同向而行(相对速度是速度之差),中间那行是当前距离已经超出最大 V2V 通信距离 ,压根无法通信。这个”通信保持时间”非常关键:后面约束条件会要求”卸载给 SV 的任务必须在两车还能通信的时间内算完”,否则数据传到一半车就跑出信号圈了,卸载就失败了。

为了方便分析,论文采用时隙(time slot)模型:把整条时间轴切成等长的时隙 ,每个时隙长 ,假设系统在一个时隙内是准静态的——拓扑和无线信道不变。每个时隙开头任务到达,每辆车每个时隙最多有一个待处理的 DNN 任务。

通信模型:V2I 与 V2V 的上行速率

V2I 通信(RV 卸载任务给 RSU)走的是平坦瑞利衰落信道。假设 RSU 带宽为 ,当前有 辆车要往这台 RSU 卸载任务,带宽均分给它们,根据香农定理, 的上行速率为:

其中 的上行发射功率, 是信道增益, 是背景噪声功率。注意那个 同时卸载的车越多,每辆车分到的带宽越少,速率越低——这就是后面实验中”车辆数增加导致延迟上升”的根源之一。

V2V 通信(RV 卸载给 SV)则独占带宽 ,速率公式为:

下面这张符号表汇总了后文最常用的记号,读公式卡住时可以翻回来查:

符号含义
/ / 个请求车辆 / 第 个服务车辆 / 第 个路侧单元
/ 在时刻 生成的链式 / DAG 型 DNN 任务
任务的容忍延迟上限
链式任务的切分决策(一个整数:前 层本地执行)
DAG 任务的切分决策(一个切分点节点集合)
卸载位置决策:-1 本地、0 卸给 RSU、1..K 卸给不同 SV
的位置与速度
V2I / V2V 上行传输速率
切分点层的输出数据量
本地计算功率与上传功率
延迟与能耗的加权系数,

延迟预测:让 XGBoost 当秒表

此文件夹下有0条笔记。