深色模式
读组内论文
进组后最先要读的是组内论文:它们和你将来要做的工作最接近,用的模型、数据和代码组里都有,作者就在身边,读不懂可以直接问。这一页讲组内论文的两种常见类型、每一部分怎么读、推荐的阅读顺序,最后给一份精读示例。通用的读论文方法见找论文与读论文,每篇论文的简介见组内论文导读。
两种类型
| 建模与算法类 | 方法与系统类 | |
|---|---|---|
| 常见发表 | IEEE TMC、TSC、ToN、TC 等期刊 | ICLR、ICML、ACM MM 等会议 |
| 代表论文 | LDLS(TMC 2023)、ROCS(TMC 2024)、ORR(TSC 2025)、LECU(TMC 2025) | BWCache(ICLR 2026)、PrediT 和 SCOPE(ACM MM 2026)、HeraSys 和 SCD(ICML 2026) |
| 主线 | 把调度或资源分配问题写成数学优化问题 → 设计算法(深度强化学习或在线算法)→ 用真实数据做仿真 | 通过测量发现一个现象 → 据此设计方法 → 在公开模型和基准上测速度和质量 |
| 最难读的部分 | 系统模型和问题建模(符号多)、理论证明 | 方法细节、实验设置(模型和指标多) |
| 怎么复现 | 多数要自己写仿真器 | 一般有开源代码,难点在环境和算力 |
也有两者结合的论文,例如 VELO 和 EAT 既有建模和强化学习,又搭了真实系统做实验。
建模与算法类论文怎么读
典型结构
| 章节 | 内容 | 读的时候回答 |
|---|---|---|
| Introduction | 场景 → 现有工作忽略了什么 → 本文的做法,常用“Specifically: 1) … 2) … 3) …”列出三点贡献 | 这篇论文新考虑了什么因素? |
| Related Work | 按类别介绍相关工作 | 和最接近的两三篇工作区别在哪里? |
| System Model and Problem Formulation | 定义节点、任务、镜像层等实体及其参数,写出时间或成本的计算公式,给出优化目标和约束,分析问题的难度 | 决策变量、目标、约束各是什么? |
| 算法 | 强化学习:状态、动作、奖励、网络结构、训练流程。在线算法:问题怎么分解、每一步做什么 | 算法的每一步对应模型里的哪一部分? |
| 理论分析(在线算法类) | 竞争比、复杂度的证明 | 定理给出了什么保证?依赖什么假设? |
| Performance Evaluation | 数据、参数设置表、对比算法,以及改变节点数、任务数、带宽等参数的一组实验 | 对比公平吗?什么条件下优势最大? |
按三遍阅读法,第一遍读引言和贡献列表,第二遍按下面六步读正文。
第一步:整理符号表
组内期刊论文在系统模型一节通常有一张符号表(Notation)。读的时候把它整理到笔记里,按类型分组,每个符号写上中文含义和单位:
| 类型 | 符号(以 LDLS 为例) | 含义 |
|---|---|---|
| 已知输入 | N | 边缘节点集合,另有一个远端云节点 |
| 已知输入 | f_n、b_n、d_n、C_n | 节点 n 的 CPU 频率、带宽、存储空间、最多同时运行的容器数 |
| 已知输入 | L_c、d_l | 容器 c 包含的层;层 l 的大小 |
| 已知输入 | p_k、c_k | 任务 k 需要的计算量、请求的容器 |
| 决策变量 | u_n^k | 任务 k 是否调度到节点 n(取 0 或 1) |
| 中间量 | y_ln(t)、z_ln(t) | 时刻 t 层 l 是否在节点 n 上;它在节点 n 上的下载完成时刻 |
分清已知输入、决策变量(算法要决定的)和中间量(由前两者算出来的),后面的公式就好读了。
第二步:画出一个任务的时间线
把模型中的各种时间画成一条时间线。以 LDLS 为例:
text
任务 k 在时刻 t 到达,被调度到节点 n
│
├─ 下载缺失的层 ── 节点上已有的层跳过;正在下载的层等它下完;
│ 没有的层排进下载队列(每个节点同一时刻只下载一层)
│ 下载时间 = 所需层中最晚的下载完成时刻 − t (式 1)
├─ 计算 ────────── 计算时间 = 计算量 p_k ÷ CPU 频率 f_n (式 2)
│
任务完成 完成时间 = 下载时间 + 计算时间 (式 3)画出来以后就能看清“层感知”省时间的原因:节点上已经有的层不用再下载。这条时间线也是复现时写仿真器的蓝本,L9 层感知容器调度仿真就是照着它写的。
第三步:看懂问题建模
问题建模(Problem Formulation)一般是这样的形式:
text
min 目标函数(LDLS:所有任务的完成时间之和)
s.t. 约束 1:每个节点同时运行的容器数不超过 C_n
约束 2:节点上所有层的总大小不超过存储空间 d_n
约束 3:每个任务只能调度到一个节点
决策变量的取值范围(0/1 整数、非负实数……)逐条把约束翻译成中文,想清楚每条约束在现实中对应什么限制。
然后看论文怎么论证这个问题难。组内论文常见的说法是“这个问题是某个经典 NP-hard 问题(装箱、背包、集合覆盖等)的推广,所以也是 NP-hard 的”,有的论文会给出归约证明。初读时记住结论即可:这个问题目前没有已知的多项式时间最优算法(除非 P=NP),所以论文转而设计启发式、强化学习或近似算法。任务逐个到来、不知道未来的输入时,还需要在线算法,这和问题是否 NP-hard 是两回事。
第四步:读强化学习算法
组内很多调度论文用深度强化学习:LDLS、ToN 2024 和 TSC 2024 用 PPO(带 clip 目标的策略梯度),ROCS 用 SAC,VELO 的期刊版和 EAT 用基于扩散模型的策略网络。先填这张表:
| 要素 | 问自己 | LDLS 中 |
|---|---|---|
| 状态 | 做决策时能看到哪些信息? | 各节点的层分布矩阵(每层是否已有、剩余下载时间、层大小)和资源状态(CPU 频率、带宽、剩余下载时间),加上把当前任务放到各节点的估计值(需要下载的层数、下载时间、等待时间、计算时间)和任务信息 |
| 动作 | 一次决策选什么?有多少种选择? | 把当前任务调度到哪个节点(某个边缘节点或云) |
| 奖励 | 优化目标怎么变成每一步的奖励? | 当前任务完成时间的相反数 |
| 一步 | 什么时候做一次决策? | 每来一个任务决策一次 |
再看三个细节:
- 特征提取:输入怎么处理。LDLS 用基于因子分解机(FM)的嵌入提取层之间的依赖关系,ToN 2024 用注意力加 LSTM 提取多用户的层共享信息,TSC 2024 用自注意力提取节点的位置分布。
- 动作选择的改进:例如提前排除明显不好的动作(调度到存储不够或负载很高的节点)。这在调度问题里几乎是标配,L9 里的动作掩码就是最简单的版本。
- 训练设置:网络结构、超参数、训练用什么数据、测试用什么数据。
基础知识见强化学习。
第五步:读在线算法和竞争比(选读)
OCS(TC 2024)、ORR(TSC 2025)用的是在线算法:请求一个接一个到来,必须马上决策,不知道未来会来什么。评价在线算法用竞争比:在最坏情况下,在线算法的代价不超过“提前知道全部未来的最优解”的多少倍。竞争比为 2,意味着无论输入如何,代价都不超过理想最优的 2 倍。
读这类论文:
- 先看算法的整体思路。ORR 用正则化方法把跨时间耦合的成本(容器放置、服务器唤醒)拆开,每个时刻只需要当前信息和过去的决策,再用逐步取整(stepwise rounding)把小数解变成满足约束的整数解。OCS 把问题拆成两个子问题依次求解:容器缓存用随机化策略,请求分配和容器启动用贪心子过程。
- 再看定理说了什么:竞争比是多少,和哪些参数有关。
- 证明第一遍跳过,准备做这类工作时再和师兄师姐一起推。
需要的数学见数学基础。
第六步:读实验部分
组内期刊论文的实验大多是基于真实数据的仿真,有的还会在真实系统上验证。记下这几项:
| 项目 | 组内论文中的例子 |
|---|---|
| 数据 | 从 Docker Hub 收集的镜像和层信息(LDLS 用了 70 个镜像、378 个层);阿里巴巴集群 trace(ROCS、LECU);出租车移动轨迹(ToN 2024 的车联网容器迁移);oasst1 对话数据(VELO) |
| 参数设置 | 一张表列出各参数的取值,例如 LDLS:节点存储 5~15 GB、带宽 60~90 Mbps、CPU 0.8~1.2 GHz,默认 10 个节点、2000 个任务 |
| 对比算法 | 简单启发式(随机、贪心、K8s 默认调度)、同类代表工作(如 Dep、DepSoft)、通用强化学习算法(DQN、PPO、SAC 等) |
| 变化的参数 | 节点数、任务数、带宽、到达率、存储空间,通常一张图改变一个参数 |
| 指标 | 平均完成时间、部署代价、能耗、收益、SLA 违约率 |
看每张图时先自己想:这个参数变大时,我们的方法优势为什么变大(或变小)? 再去读论文的解释。
方法与系统类论文怎么读
以 BWCache(ICLR 2026)为例,这类论文的主线是“观察 → 方法 → 实验”:
- 观察:论文先测量视频生成各部分的耗时,发现 DiT 模块占了大部分时间;再用相对 L1 距离衡量每个 DiT 模块的输出特征在相邻去噪步之间的变化,发现变化呈 U 形:开始和结束阶段变化大,中间阶段很小。这组图是整篇论文的出发点,读完要能自己复述出来。
- 方法:中间阶段的模块特征几乎不变,就缓存起来复用;用一个相似度指标决定什么时候复用(变化低于阈值才复用),并周期性地重新计算,防止误差累积。读方法时把每个超参数(阈值、复用间隔、最后多少比例的步数必须重新计算)和它的作用列出来。
- 实验:模型(Open-Sora、Open-Sora-Plan、Latte、Wan2.1、HunyuanVideo)、质量指标(VBench、LPIPS、SSIM、PSNR)、速度(A800 上的延迟和加速比)、对比方法(Δ-DiT、T-GATE、PAB、TeaCache、FasterCache)。加速比和质量要一起看:加速越多质量一般越差,论文要证明的是相近质量下更快,或者相近速度下质量更好。
同一方向的后续论文对照着读,能看出一个想法是怎么延续的:
- PrediT(ACM MM 2026):从“复用”变成“预测”。用线性多步法(Adams-Bashforth 预测、Adams-Moulton 校正)根据前几步的输出外推后面的输出,并根据输出变化的大小动态决定跳过几步。
- SCOPE(ACM MM 2026):对象换成自回归视频生成(MAGI-1、SkyReels-V2),在“复用”和“重新计算”之外加入“预测”,并且只计算当前活跃的帧区间。
读这类论文时,L5 扩散模型推理与加速的第 2 步会带你亲手画出相邻步特征相似度的曲线,读完论文再做一遍,理解会深很多。
推荐阅读顺序
先读综述了解全貌,再按方向由浅入深。每篇的简介和链接见组内论文导读。
| 方向 | 先读 | 再读 |
|---|---|---|
| 所有人 | 综述 Empowering Edge Intelligence(ACM CSUR 2025)的第 1~4 节 | 综述第 5 节中和自己方向相关的部分 |
| 一:云边协同的大模型服务 | VELO(ICWS 2024) | VELO 期刊版(TSC 2025)→ SCD(ICML 2026) |
| 二:端侧复杂应用加速 | HeraSys(ICML 2026) | 多模型推理流水线的会议版(HPCC 2024)和期刊版(TSC 2026) |
| 三:生成式 AI 加速 | BWCache(ICLR 2026) | PrediT → SCOPE → EAT(TMC 2026,偏调度) |
| 四:容器调度 | LRScheduler(MSN 2024,篇幅短、有代码) | LDLS(TMC 2023)→ ToN 2024 → TSC 2024 → LECU(TMC 2025);对在线算法感兴趣读 OCS、ORR;对资源超售感兴趣读 ROCS |
精读示例
下面用读书笔记模板整理 LRScheduler,作为精读笔记的参考。
markdown
# LRScheduler: A Layer-aware and Resource-adaptive Container Scheduler
# in Edge Computing(MSN 2024,最佳论文奖)
- 链接:arXiv:2506.03694;代码:https://github.com/pwtttttt/Layer-Scheduler
- 一句话总结:在 K8s 调度框架中实现层感知调度,节点上已有的层越多得分越高,
并按节点负载动态调整这项得分的权重,避免任务都挤到同一个节点上。
## 问题
边缘带宽有限,部署容器时下载镜像的代价很大。已有的层共享调度研究停留在理论和仿真,
没有在真实调度器里实现;而且只看层共享,任务会集中到少数节点上,造成负载不均。
## 方法
1. 下载代价(式 1):所需层中节点上没有的层的总大小。
层共享得分(式 3):节点上已有的所需层的总大小 ÷ 镜像总大小 × 100。
2. 动态权重(式 11~13):节点上已有的层足够多、CPU 使用率低、CPU 和内存的使用比例
均衡,三个条件都满足时,层共享得分用较大的权重 ω1,否则用较小的 ω2。
最终得分 = 权重 × 层共享得分 + K8s 默认插件的得分。
3. 实现:作为 K8s 调度框架的插件(Go 语言),从镜像仓库获取镜像的层信息。
## 实验
真实集群:1 个控制节点 + 4 个工作节点,K8s v1.23.8,容器运行时为 Docker;
私有镜像仓库;镜像包括 WordPress、Ghost、GCC、Redis、Tomcat、MySQL 等。
对比 K8s 默认调度器,比较部署代价(下载量)和负载均衡情况。
## 我的思考
- 阈值和权重 ω1、ω2 是人工设定的,能不能根据负载自动调节?
(后续的 LR²Scheduler 进一步根据用户需求和剩余资源调整打分。)
- 依赖 Docker 作为容器运行时,而 K8s 从 1.24 起移除了 dockershim。
在新版本集群上复现,需要改造获取层信息的方式。
- 只在 5 台机器上测试。节点更多、镜像更多时效果如何?可以先用仿真回答(L9)。
## 生词与术语
dockershim、Scheduling Framework、Score 插件、Iverson bracket(条件成立取 1,否则取 0)每篇组内论文都要回答的问题
读完第二遍后,试着回答下面的问题,答不上来的地方就是第三遍要重点读的:
- 用一句话说出这篇论文新考虑了什么。
- 系统模型里有哪些实体?画出一个任务(请求)的时间线。
- 决策变量、优化目标、约束各是什么?
- 如果用强化学习:状态、动作、奖励是什么?为什么这样设计?
- 对比了哪些算法?其中哪个最强?本文方法在什么条件下优势最大?
- 论文做了哪些假设?例如 LDLS 忽略了任务数据从用户传到基站的时间,理由是镜像有几百 MB,而任务数据只有几百 KB。这些假设在你关心的场景里成立吗?
- 如果让你接着做,你会改动哪个假设,或者把方法用到什么新场景?
第 6、7 题是找研究问题的起点,组内很多后续论文就是这样来的,见复现组内论文。
组里怎么一起读
- 读书会:定期由一位同学主讲一篇论文,按讲论文的结构准备。讲组内论文时,可以请作者到场回答问题。
- 问作者:读完第二遍后,带着具体问题去问作者,例如“式 5 的存储约束为什么不包括正在下载的层”。问之前先自己想过,问题越具体,收获越大。
- 共享笔记:精读笔记放到组内共享的位置,后来的同学可以直接参考。