Justitia 是一个面向 task-parallel LLM 应用的应用级调度器,用 WFQ + KV token-time 成本度量实现 finish-time fairness 与近 SJF 效率的兼得。以下 8 篇/项相关工作覆盖 PD 分离通信优化、网络流调度、RL 权重传输、MoE prefill 优化、持久化 kernel 执行、KV 压缩等维度,与 Justitia 在"LLM serving 的资源调度与分配"这一主线上形成多面对比。
DualPath (2602.21548) — 聚焦 PD 分离架构下 agentic 推理的存储带宽瓶颈。DualPath 通过聚合 decode engine 空闲 SNIC 带宽 + CNIC-centric 流量隔离实现 1.87× 离线吞吐 [2602.21548]。与 Justitia 共享"agentic workload"场景但正交:Justitia 调度的是应用间的 KV-block 分配顺序 [2510.17015],DualPath 调度的是 KV-Cache 的物理传输路径。两者可垂直组合——DualPath 负责 KV 怎么搬,Justitia 负责谁先用。
PPD (2603.13358) — 解决多轮对话下 PD 分离的重复 prefill 浪费。PPD 动态路由 Turn 2+ 请求到 decode 节点做 append-prefill,TTFT 降低 48–73% [2603.13358]。与 Justitia 的连接点在"应用级调度决策":PPD 的路由是 per-request 的(Turn 1 vs Turn 2+),Justitia 的调度是 per-application 的(整个 DAG)。PPD 没有公平性保证 [2603.13358],Justitia 有常数延迟界 [2510.17015]。
MFS (2603.17456) — 解决 disaggregated MoE serving 中三阶段通信的网络争用。MFS 用 Reverse Multi-Level Queue 实现 Defer-and-Promote 策略,TTFT SLO 达标率提升 1.2–2.4× [2603.17456]。MFS 与 Justitia 共享"从经典网络调度理论移植到 LLM"的方法论——MFS 借鉴 MLFQ,Justitia 借鉴 WFQ/GPS [2510.17015]。但两者调度的资源完全不同:MFS 调度网络带宽(flow-level),Justitia 调度 KV-cache 显存(application-level)。
TensorHub (2604.09107) — 面向 RL 训练的权重传输框架。ROS 抽象 + pipeline replication 实现 6.7× standalone stall 降低 [2604.09107]。与 Justitia 分属不同阶段(训练 vs 推理),但共享一个设计哲学:用轻量 reference/prediction 实现一次性优先级确定,避免反复重算。TensorHub 的 publish 是轻量引用 [2604.09107],Justitia 的 virtual finish time 一次算定不刷新 [2510.17015]。
PrfaaS (2604.15039) — 将 prefill offload 到跨 DC 集群,通过长度阈值路由 + 双时间尺度调度实现 +54% 吞吐 [2604.15039]。PrfaaS 的调度器也有"两级决策"结构(short-term per-request + long-term N_p/N_d 再平衡)[2604.15039],与 Justitia 的 "一次性 virtual finish time + 堆操作" 形成调度复杂度对比。PrfaaS 需要周期性重解最优阈值,Justitia 一旦设定就不变。
ZeRO-Prefill (2605.02960) — 反转 MoE 的 expert 数据流(按 weight 聚集而非按 activation 路由),配合 frontend 饱和阈值 T 实现 1.35–1.37× 吞吐 [2605.02960]。ZeRO-Prefill 的 frontend-backend co-design(物理量 T 由 backend 定义、frontend 强制)与 Justitia 的 per-app MLP demand predictor + WFQ scheduler 形成对照:两者都需要前端预测后端成本以做调度决策,但 ZeRO-Prefill 的 T 是硬件级物理量(AllGather 延迟 × FLOP rate)[2605.02960],Justitia 的 C_j 是 workload 级预测值 [2510.17015]。
TileRT / Speed Scaling Law (tilert-speed-scaling-law) — 用 AOT 编译将模型展开为单个 Persistent Engine Kernel,消除 inter-kernel overhead,弥合 BS≈1 decode 的理论/实际性能差距 [tilert-speed-scaling-law]。与 Justitia 的连接是间接的:TileRT 解决的是单请求的 GPU 执行效率(微秒级 kernel overhead),Justitia 解决的是多应用间的宏观调度(秒级 JCT)。但 TileRT 的异构 worker 设计(GPU0 做 Sparse Indexer,GPU1-7 做 MLA)[tilert-speed-scaling-law] 暗示未来调度器可能需要感知 GPU 内部的异构执行角色。
KVServe (kvserve) — KV-cache 压缩框架,通过 service-aware controller 动态选择压缩 profile,实现 up to 10× KV 压缩 [kvserve]。与 Justitia 共享 "KV-cache 是核心资源" 的认知。Justitia 用 KV token-time(空间 × 时间)作为成本度量 [2510.17015],KVServe 用 compression ratio 减少 KV 的物理大小 [kvserve]。两者组合时,Justitia 的 $c = pd + d^2/2$ 公式需要修正为 $c = (pd + d^2/2) / \text{cr}$,否则会高估压缩后的实际显存占用。
Justitia 的核心 delta 是把 网络调度的 Virtual-Time Fair Queuing (WFQ) + memory-centric KV token-time 成本度量 组合应用到 LLM 应用级调度,在保证 finish-time fairness 的前提下实现近 SJF 效率。
| 维度 | Justitia | DualPath | PPD | MFS | TensorHub | PrfaaS | ZeRO-Prefill | TileRT | KVServe |
|---|---|---|---|---|---|---|---|---|---|
| 优化目标 | 多应用 JCT + fairness | KV-Cache I/O 吞吐 | Multi-turn TTFT | TTFT SLO 达标率 | 权重传输延迟 | 跨 DC prefill 吞吐 | MoE prefill 吞吐 | 单请求 decode 延迟 | KV 传输带宽 |
| 调度粒度 | Application (多 inference DAG) | Request (路径选择) | Request (Turn routing) | Flow (per-layer) | Replica (权重分发) | Request (长度阈值) | Batch (饱和阈值) | Tile (warp 级) | Request (profile 选择) |
| 调度资源 | KV-cache 显存 (blocks) | 存储+网络带宽 | Compute (P vs D) | 网络带宽 (link) | NIC 带宽 | Compute + network | GPU compute window | SM + NVLink | Network bandwidth |
| 理论基础 | GPS/WFQ (1989/1993) | 带宽约束分析 | Offline profiling table | Reverse MLFQ (LLF 近似) | 无形式化 | 吞吐 min model | 物理量 T 标定 | AOT 编译 | Analytical model |
| 公平性保证 | 常数延迟界 $2c_{\max}+C_{\max}/M$ | 无 | 无 | Per-request EDF | 无 | 无 | 无 | 无 | 无 |
| 预测/估计 | Per-app MLP (2.16ms) | Token count proxy | Offline lookup table | MLU + RLI | Progress counter | Grid search ($t$, $N_p/N_d$) | Profile run (T) | AOT static | Bandit + analytical |
| Workload | Agentic multi-inference | Agentic (157 轮) | Multi-turn dialogue | MoE disaggregated | RL training | Long-context prefill | Prefill-only MoE | BS≈1 decode | PD disaggregated |
| 评估规模 | 1×A100 / 4×V100 | 1152 GPU | 4×H100 | 32 GPU (testbed) | 1024 GPU | 32 H200 + 64 H20 | 8×H100/H200 | 8×H200 NVL | 同节点测试 |
| 开源 | 未公开 | 未公开 | 未公开 | 未公开 | 未公开 | 未公开 | vLLM v0.11.0 | 部分开源 | Apache-2.0 |
Justitia 独有的 contributions:
A1: 评估规模远逊于同期工作。Justitia 仅在 1×A100 和 4×V100 上评估 [2510.17015],而同期 DualPath 达 1152 GPU [2602.21548]、TensorHub 达 1024 GPU [2604.09107]、PrfaaS 达 96 GPU [2604.15039]。单卡 + 4 卡 TP 的结论能否推广到多副本 + 路由层 + 动态扩缩容的生产环境,作者"声称可推广但未给数据"的说法缺乏说服力。
A2: KV token-time 公式在 prefix caching 和 P-D 分离下失效。$c = pd + d^2/2$ 假设 prefill KV 从 0 开始独占增长 [2510.17015]。但在 shared prefix 场景下(PPD 的 multi-turn [2603.13358]、DualPath 的 98.7% cache hit [2602.21548]),KV 被多个请求共享,实际显存占用远低于公式预测。在 P-D 分离场景下(PrfaaS [2604.15039]),prefill 和 decode 的 KV 生命周期分属不同 GPU,$pd + d^2/2$ 的"连续累积"假设不成立。
A3: 非抢占设计与 SLO-aware serving 的矛盾。Justitia 只能在 inference 结束时做应用级切换 [2510.17015]。MFS 在 flow-level 实现了带宽层面的隐式抢占(低优先级 flow 被 starve)[2603.17456]。PrfaaS 的双时间尺度调度器可以在运行时做 P↔D 角色转换 [2604.15039]。Justitia 的非抢占粒度(整条 decode 完成后才切换)在长 decode 序列下可能产生分钟级的 priority inversion。
A4: Per-app MLP 的冷启动问题未解决。Justitia 要求每类应用有 100 样本的 profile 数据 [2510.17015]。这在 agentic 系统中尤为致命——agent runtime 里 prompt template 频繁变化、新工具调用模式不断涌现。PPD 的 offline profiling 虽然也有冷启动问题,但其 scoring function 至少可以 fallback 到标准 PD 路径($x=0$)[2603.13358]。Justitia 没有描述冷启动 fallback 策略。
A5: 公平性基准的自参照问题。Finish-time fair ratio 用 VTC 的 JCT 作分母 [2510.17015]——如果 VTC 在某场景下极慢(如高竞争下 VTC 的 JCT 暴涨 10×),ratio ≤ 1 就很容易达到。缺乏独立的公平基准(如 max-min fairness 的绝对数值或 GPS 理想 JCT 的归一化)。这在 MFS 的评估中也类似——MFS 用无争用 baseline 归一化 CCT [2603.17456],至少参考系是明确的硬件理论值。
Justitia 的生态位是 agentic multi-inference 应用的公平性调度器——一个在 vLLM 之上、在 agent runtime 之下的薄调度层。
范式定位:Justitia 属于"application-aware inference scheduling"这一新兴子方向。在 LLM serving 从单请求 FCFS 演进到多应用 DAG 的过程中,调度粒度从 token(vLLM continuous batching)→ request(SGLang RadixAttention)→ application(Parrot/VTC/Justitia)逐步上升。Justitia 在 application 这一层引入了经济学级别的公平性保证(WFQ 的 GPS 参考系统),超越了此前工作的启发式调度。
互补关系:
采纳障碍:
替代方案:如果放弃公平性保证,SRJF + starvation timeout 是更简单的实现(Justitia 自己的实验也显示 SRJF 在 avg JCT 上与 Justitia 接近 [2510.17015]),只是在 elephant+mice 场景下有饥饿风险。如果需要 SLO-aware 调度,MFS 的 Defer-and-Promote + MLU 是更直接的方案 [2603.17456],但仅面向网络层而非显存层。
H1: KV token-time × prefix sharing × P-D 分离的统一成本模型。Justitia 的 $c = pd + d^2/2$ [2510.17015]、PrfaaS 的 $\Phi_{\text{kv}} = S_{\text{kv}}/T_{\text{prefill}}$ [2604.15039]、DualPath 的 working set model [2602.21548] 都是单维度成本模型。一个将 shared prefix credit、P-D KV transfer overhead、compression ratio 统一编入的 cost function $C_j = \sum_i \frac{(p_i - p_{\text{shared}_i})(d_i) + d_i^2/2}{\text{cr}_i}$ 可以同时服务调度决策(Justitia)、路由决策(PrfaaS)、和压缩决策(KVServe),但目前无人尝试。
H2: Online learning 替代 per-app MLP 解决冷启动。Justitia 的 MLP 需要 per-app offline training [2510.17015],KVServe 的 bandit controller 用 ε-greedy 在线学习 [kvserve],PPD 用 offline grid profiling + online lookup [2603.13358]。一个自然的混合方案是:对已知应用类型用 MLP 的 virtual finish time,对未知类型用 bandit 在 $[V(a_j), V(a_j) + C_{\text{default}}]$ 区间内在线调整,每完成一个 inference 就用 actual KV token-time 修正估计。这将 Justitia 的 WFQ 框架从"需要 per-app profile"扩展到"zero-shot 新应用"。
H3: Hierarchical virtual-time for multi-node clusters。Justitia 的全局虚拟时间 $V(t)$ 在单节点下 $O(\log N_t)$ 高效 [2510.17015],但论文承认多节点同步未解决 [2510.17015]。DualPath 在 1152 GPU 上用 central scheduler [2602.21548],TensorHub 用 centralized reference server [2604.09107]——两者都证明中心化调度在千 GPU 规模可行。Justitia 可以采用层次化虚拟时间:每个 serving replica 维护局部 $V_{\text{local}}(t)$,全局 coordinator 以粗粒度同步 $V_{\text{global}}(t)$,类似 MFS 的 centralized coordinator 与 local RMLQ 的分层 [2603.17456]。
H4: WFQ + network flow scheduling 的端到端联合。Justitia 调度 KV 显存但不感知网络 [2510.17015],MFS 调度网络但不感知 KV 显存 [2603.17456]。在 disaggregated MoE serving 下,一个 TTFT 既受 KV 分配顺序影响(Justitia 的管辖范围),又受三阶段通信争用影响(MFS 的管辖范围)。将 Justitia 的 application-level virtual finish time 作为 MFS 的 per-request TTFT deadline 输入,可以实现"应用级公平 → 请求级 SLO → flow 级调度"的三层级联,但需要跨层信息传递的机制设计。
H5: Persistent kernel execution 下的 KV-aware scheduling。TileRT 的 persistent Engine Kernel 将整个 decode 层融合为单次 launch [tilert-speed-scaling-law],消除了 kernel 间的调度间隙。在这种执行模型下,Justitia 的调度粒度(inference 结束时切换应用)需要与 persistent kernel 的 tile pipeline 协调——调度器不能在 kernel 中间切换应用,但可以在 tile 边界注入优先级信号。这是 GPU-resident scheduling(TileRT)与 application-level scheduling(Justitia)的融合方向,目前完全未被探索。