A Real-Time Digital Twin for Adaptive Scheduling (SchedTwin)

framework 2512.18894 — Cross-paper Synthesis

SchedTwin L3 · 调度器如何获得"未来信息":模拟在环 vs 剖析、结构、队列先知 #

Mode A per-paper synthesis。Target: SchedTwin (2512.18894),对照 8 篇 framework 类邻居。任务给出的 related id 2310.0724 / 2401.0967 在 KB 中实际落盘为 2310.07240(CacheGen)与 2401.09670(DistServe),frontmatter 两种 key 都记, 缺失的字面 id 写 MISSING 以便 cascade 跳过;正文引用真实 id。

1. 相关论文 #

SchedTwin 与 8 篇邻居没有一篇共享工作负载:它调度的是 HPC 批作业、整节点独占、

无抢占 [2512.18894],邻居全是 LLM serving 或 RLHF 训练框架。

把它们放在一起唯一有意义的对照轴不是"性能",而是**调度器从哪里获得对未来的知识,

以及这份知识值多少开销**。按这条轴分三组:

A. 同样用"模拟器"决策的近亲(最相关,delta 最锐利)

B. 同为"策略选择/排队顺序"问题、但知识来源不同(直接可比)

C. 提供"未来信息的第三种来源"与"静态配置的教训"(间接相关)

2. 本篇 vs 相关论文的 delta #

真正新的(无邻居覆盖):把一个高保真 DES 接进生产调度器的活控制回路,并且

不改调度器内核——事件经 Redis stream 下行、决策经 qrun 上行,约 1,000 行代码扩展

CQSim [2512.18894]。8 篇邻居里没有一篇的调度决策依赖

"在线跑一次完整模拟"。DistServe 用模拟器,但它是离线搜索、结果是一个静态放置方案

[2401.09670];SchedTwin 让模拟结果的生命周期缩短到一个事件间隔。

其次是双向状态对账层:虚拟未来只允许存在预测 end 事件、用户 walltime 高估要拉回、

run 事件立即退出,这三条构成"虚拟时间轴只被物理事件单向校正"的不变量

[2512.18894]。邻居中最接近的机制是 CachedAttention 的

scheduler-aware placement,但那只是读队列,不需要维护一个与物理系统对账的镜像状态

[2403.19708]。

增量的(换域重做):

矛盾的:SchedTwin §1 的核心批判是静态启发式"one-step decision-making process

provide no guarantees of near-optimal performance",但它自身的选择规则是逐周期对终态

Score 取 argmax、只 commit 队头,其 L2 的最小检查第 4 项判定"单调性/最优性 — 不通过

(未讨论)",并直指 SchedTwin 是"one-step over policies"

[2512.18894]。同一份批判标准若施于自身则不成立。对照 SGLang:它也

用贪心,但证明了贪心 = 离线最优 DFS(在 cache ≥ 最长请求长度的边界条件下),并明确

标注 starvation 未解 [2312.07104]。**矛盾根源不是结论对错,而是论证

义务的不对称**:SchedTwin 用"无近优保证"否定基线,却没有为自己建立任何保证。

第二处矛盾(数字口径):SchedTwin 宣称"low overhead (a few seconds per scheduling

cycle)",但全文无任何计时测量,只有设计层面的 $\max_i$ 界

[2512.18894]。邻居的开销口径全部是实测:SGLang 报 RadixAttention

零复用时开销 <0.3% [2312.07104],vLLM 报 PagedAttention kernel 慢

20–26% [2309.06180],DistServe 报 KV 传输 <0.1% 总延迟且 >95% 请求

<30 ms [2401.09670],CacheGen 报离线编码 ~200 ms

[2310.07240]。矛盾根源:SchedTwin 把"开销"当作可由架构推导的属性

(并行 ⇒ $\max$ 而非 $\sum$),邻居把它当作必须测量的属性。在 rollout 跑到队列排空这一

终止条件下,$\max_i$ 随队列长度而非策略数增长,架构推导恰好落空。

3. 可攻击面 #

攻击 1:没有抢占的自适应是被阉割的自适应。 SchedTwin 一旦 qrun 出去就不可撤回,

重规划只作用于等待队列 [2512.18894]。而邻居中所有真正拿到大幅收益

的调度工作都依赖可撤回性:FastServe 的 skip-join MLFQ 必须能抢占,代价是 KV cache 内存

暴增至 7×,于是配 proactive swapping 才能落地,消融显示 proactive 比 defer 快 2.3–3.5×

[2305.05920];vLLM 的 FCFS 之所以够用,正因为它有 swap /

recompute 两条抢占恢复路径 [2309.06180]。HPC 整节点独占 bare-metal

确实使抢占昂贵,但这意味着**SchedTwin 的策略切换只能影响"下一批启动谁",无法纠正已经

做错的决策**——阶段 2 的 16–20 节点长作业一旦启动就锁死 500–700 秒

[2512.18894],这段时间里"自适应"没有任何着力点。

攻击 2:11.4% 的分母是自己造的。 论文自陈 trace "intentionally designed" 成让 SJF

有效的形状,且雷达面积归一化区间未定义——FCFS 面积恰为 0.00 就是这个不透明归一化的

直接后果 [2512.18894]。$1.86/1.67 = 1.1138$ 只是两个不可复算量的比值。

对照邻居的基线纪律:DistServe 专门做了 "vLLM++"(在共置前提下搜最优并行)消融,证明

增益来自解耦而非调参 [2401.09670];SGLang 报出自己"几乎无加速"的区间

(长输出多轮对话,decode 主导且前缀不重叠)[2312.07104];

CachedAttention 主动暴露最弱配置(LLaMA-65B 仅省 43% 成本 vs 别处 66–70%)

[2403.19708]。SchedTwin 只有一条 trace、且这条 trace 的形状是结论的

前提。可反驳性检验:把阶段 2 删掉(均质小作业),按其 L2 的推断,策略池"complementary

strengths"前提失效、argmax 退化为 tie-break 优先序 [2512.18894],

此时 SchedTwin 就是"WFP + 无用模拟开销"。

攻击 3:Score 与 argmax 方向不兼容,且目标函数不含它宣布获胜的那条轴。 Score 是

wait time(秒)与 slowdown(无量纲)的等权加权和,越小越好,而 §3.4 取 argmax 越大越好;

量纲检查与方向性检查双双不通过 [2512.18894]。更关键的是目标函数里

没有 utilization 项,而 SchedTwin 在 Fig 3 的 "System Util." 轴上被宣布领先。对照

DistServe:它把目标明确定义为 per-GPU goodput(≥90% attainment 下的 requests/s),

并解释为何不是 raw tok/s [2401.09670]。目标函数与评价指标的对齐是

可以做到的,SchedTwin 没做。

攻击 4:"开源"贡献不可核对。 论文把 "implementing SchedTwin as open-source software"

列为三大贡献之二,但全文无仓库 URL,唯一可定位的代码是底层 CQSim

[2512.18894]。这不是小节问题:其 L2 指出 tie-break 优先序

WFP→FCFS→SJF 是一条不在机制描述里、却直接决定 Table 1 数字构成的硬编码偏好,

换成随机或"保持上周期策略"会得到完全不同的分布表 [2512.18894]。

没有代码,35.19% / 15.66% / 49.15% 不可复现。邻居中 vLLM

[2309.06180]、SGLang(L2 甚至给到 radix_cache.py:355

等 file:line)[2312.07104]、DistServe

[2401.09670]、CacheGen [2310.07240]

均公开;FastDecode [2403.11421] 与 FlexRLHF

[2312.11819] 未公开,而 FlexRLHF 的 L2 把"未开源"直接列为最大限制

[2312.11819]。SchedTwin 属于"声称开源但等同未公开",比坦白

未公开更糟。

攻击 5:run 事件立即退出隐含一个未声明的部署假设。 run 事件只插入预测 end 事件后

立即退出、不触发重规划,这假设物理调度器不会自行启动作业、所有启动都源自孪生的 qrun

[2512.18894]。若 PBS 自身调度循环仍活跃,孪生会漏掉由它

触发的资源状态变化。这是部署前提被写成优化的典型:在 33 个容器的伪集群上不会暴露,

在真实站点上会。

4. 生态位 #

这不是范式转移,是一次跨域移植的可行性验证。 三条判据:

(a) 机制新颖度——"用模拟器指导调度"在邻居里已有成熟先例,DistServe 的模拟器精度做到

<2% 并且被独立验证 [2401.09670]。SchedTwin 的新颖处只在把它从

部署期挪到运行期。

(b) 采纳证据——几乎为零。评测是单节点 48 核主机上 33 个 Docker 容器构成的 32 节点

伪集群 + 150 作业合成 trace [2512.18894];motivate 用的 Polaris

真实 trace 在评测中完全没用上 [2512.18894]。对照生态位真正确立的邻居:

vLLM 已成事实标准推理引擎、被 HuggingFace / Ray Serve 集成

[2309.06180];SGLang 在 Chatbot Arena 跑了一个月,实测缓存命中

52.4% / 74.1%、首 token 延迟降 1.7× [2312.07104];CachedAttention 在

9K ShareGPT 会话(约 52K 轮)上评测 [2403.19708]。SchedTwin 是 5 页

的 preliminary-results 短文,作者也用 "Preliminary results" 自我定位。

(c) 生态位的实际形状——它占的是一个结构性空位而非性能高地:邻居里 FlexRLHF 的

placement 在训练前定死、运行时不调 [2312.11819],

DistServe 的 placement 在部署前搜好 [2401.09670],FastDecode 的

R-Worker 数由模型一次性推出 [2403.11421]。三者都把"配置决策"

放在运行前。SchedTwin 是这批 framework 里唯一把配置决策放进每个事件的。这个空位值得

占,但本篇只证明了"接线可行、开销不爆",没有证明"在真实站点上值得"。

(d) 它继承的一个真实优势——三个基线都是同一个 CQSim 策略池的成员,不存在版本/调参差异

带来的基线不公 [2512.18894]。这比 FlexRLHF 被批评"trlX 把 Reward 放

单卡是明显设计缺陷,FlexRLHF 赢得太容易" [2312.11819]、

或 SGLang 被指 Guidance/LMQL 缺 batching/TP 属弱基线 [2312.07104]

都干净。代价是上界被锁死:SchedTwin 永远不可能优于池内策略的逐周期最优组合。

5. 未探索方向 #

D1. 用剖析替代 rollout,或用 rollout 校准剖析(FastServe × SchedTwin)。 SchedTwin 的

开销风险全部来自"每个事件跑 k 次到队列排空"[2512.18894]。FastServe 的

洞察是:LLM 每次迭代的执行时间由 (hardware, model, input_length) 决定、可离线 profiling

一次,从而把调度决策压到 $O(1)$ [2305.05920]。HPC 侧的等价物

是"用历史 trace 离线学一个 (queue state) → (best policy) 的分类器,在线只在分类器低置信度

时才触发真 rollout"。这直接把 SchedTwin 未测过的那条开销曲线(随队列长度增长)截断。

D2. 把队列先知从"模拟"降级为"读"(CachedAttention × SchedTwin)。 CachedAttention

证明了未来信息不一定要模拟出来——等待队列本身就是 Belady oracle,两个 look-ahead 窗口

($L_{pw}=C_{mem}/S_{kv}$ 短窗驱动 prefetch,$L_{ew}$ 长窗否决 eviction)足以把命中搬进

DRAM [2403.19708]。SchedTwin 的 Score 只用终态统计,完全没有利用

"队列前 $L$ 个作业的规模/walltime 分布"这一零成本特征。一个 look-ahead 窗口内的作业形状

直方图很可能就足以判别"该用 SJF 还是 WFP",无需任何 rollout。

D3. 给策略选择补一个最优性/近优性定理(SGLang × SchedTwin)。 SGLang 的做法是:定义

目标(cache hit rate)→ 给下界($C \ge \sum_{e}|e|$)→ 证明贪心在边界条件下取等(cache ≥

最长请求长度)→ 诚实标注在线退化与 starvation [2312.07104]。SchedTwin

的对应命题是可陈述的:"若策略池成员在每个队列状态上的 Score 排序稳定,则逐周期 argmax

等价于某个全局策略"——这恰好是 §3 preamble 那句无检验的前提"provided that they exhibit

complementary strengths"的形式化版本 [2512.18894]。**互补性的可检验定义

是这个方向的第一步**,也是判断"何时该部署 SchedTwin"的唯一非经验判据。

D4. 解析模型与模拟的混合定阶(FastDecode × DistServe × SchedTwin)。 FastDecode 用

解析式 $T_R \le T_S$ 定 R-Worker 数 [2403.11421],DistServe 用模拟器枚举

placement 并靠 M/D/1 排队式($D + RD^2/(2(1-RD))$)解释 intra-op 与 inter-op 的交叉点

[2401.09670]。SchedTwin 完全没有排队模型,其 L2 指出一个粗排队模型即可

回答三个悬空问题:负载相变频率多高时换策略的收益才超过 rollout 开销、receding-horizon

(无界 rollout / 一步 commit)损失了多少信息、Score 权重的敏感度

[2512.18894]。DistServe 的模式(解析模型定性 + 模拟器定量 + 实测校准

<2%)是现成模板 [2401.09670]。

D5. 反向移植:把"模拟在环"搬进 LLM serving 集群。 这是 cluster 最有潜力的一格。

LLM serving 的调度决策目前分散在三处未联合优化的静态选择上:DistServe 的 prefill/decode

实例配比与并行方案(部署期定)[2401.09670]、CacheGen 的逐块质量等级

(逐块贪心,无全局最优保证)[2310.07240]、FastDecode 的 R-Worker 数

(模型一次性推出,且短序列 8 sockets 反而不如 4 sockets)

[2403.11421]。而 LLM serving 恰好具备 HPC 不具备的两个 rollout

友好条件:迭代时间可精确剖析 [2305.05920],且请求可抢占

(swap / recompute)[2309.06180]——后者意味着 rollout 选错的代价

可以被撤回,正是攻击 1 指出 SchedTwin 缺失的那半。**在可抢占的 serving 集群上做在环

预测模拟,比在不可抢占的 HPC 批调度上做,收益结构更好。**

D6. 混合式 commit 视野。 当前是无界 rollout + 一步 commit

[2512.18894]。两端都没被扫过:有界 rollout(跑到固定虚拟

时间窗)能把开销与队列长度解耦;多步 commit 能减少策略抖动(tie-break 若改为"保持上周期

策略"即是一种抖动抑制)。这两个旋钮与 CacheGen 的 chunk 长度"经验取 1.5K token、未解析

求最优"是同一类留白 [2310.07240]。