跳转至

ATLAS: Alibaba Dataset and Benchmark for Learning-Augmented Scheduling

会议: ICLR 2026
OpenReview: QBvxXzHdZx
代码: https://github.com/zhiyunjiang0810/non-clairvoyant-with-predictions
领域: 数据集与基准 / 学习增强调度 / 算法与预测
关键词: 学习增强调度, 非透视调度, 阿里 PAI trace, 作业时长预测, 竞争比

一句话总结

本文把阿里 PAI-2020 GPU 集群 trace 清洗、特征工程成一个 73 万作业、带真实作业时长标签的「非透视调度(non-clairvoyant scheduling)」数据集 ATLAS,并配套一个端到端基准 LASched——既评测「用提交时特征预测作业时长」的预测任务,又评测「把预测喂给调度器、在总完成时间/最大伸展/makespan 三个目标上做学习增强调度」的调度任务,让一直只能在合成数据上跑的「算法+预测」理论第一次能在真实负载上被公平复现和对比。

研究背景与动机

领域现状:调度领域有一个经典难题叫非透视调度——作业提交时调度器不知道它要跑多久(作业大小未知),于是无法实现像 SRPT(最短剩余处理时间)这样需要知道作业大小的最优策略,只能退而用 FIFO、Round-Robin 这类盲调度,性能天然次优。近几年兴起的学习增强算法(learning-augmented algorithms,又叫 algorithms with predictions)给出一条出路:用一个 ML 预测器估计作业大小 \(\hat p_j\),把它喂给在线算法,在预测准时逼近最优、在预测烂时退化也有最坏情况保证。这套框架已经形成一个活跃社区,针对总完成时间、最大伸展、makespan 等目标都有了带可证明竞争比的算法。

现有痛点:理论很漂亮,但没人知道这些算法在真实负载上到底好不好。原因是数据和基准都不够用——(1) 现有生产 trace 要么把作业时长归一化/脱敏(Google Borg 抹掉了用户、作业类型、资源请求等上下文),要么只关注虚拟机分配(Azure / 微软 VM trace 没有作业结构和精确完成时间),要么虽有作业结构但是为「负载刻画」而非「调度评测」设计的(原始阿里 trace);(2) 大多数理论工作干脆只在合成负载上跑,把作业大小限制成指数/Pareto/均匀分布,丢掉了真实系统里的复杂模式;(3) 整个领域缺一个标准化基准:调度框架(在线/离线、是否可抢占、几台机器)、预测器怎么训练和验证、结果怎么归一化报告,各家都不一样,导致跨论文根本没法比;更糟的是很多工作忽略时序约束(拿未来信息训练)或跳过校准-测试分离,存在信息泄漏,违背了「非透视」的本意。

核心矛盾:真实生产集群严重违背理论模型的假设——作业是多步工作流(预处理失败会终止整条链)、硬件异构(V100/P100/T4 混部)、到达是随机的,这些都让标准分析失效。于是一个核心问题悬而未决:学习增强调度器在真实环境里到底表现如何?

本文目标:造一个「研究就绪(research-ready)」的真实数据集 + 一个泄漏安全、可复现、覆盖完整管线(预测→调度)的标准基准,把理论和实践之间的鸿沟补上。

切入角度:阿里 PAI-2020 GPU 集群 trace 本身是公开的、有完整作业生命周期记录(提交、排队、调度、执行)的真实 MLaaS 负载,只是它原本不是为调度评测设计的。作者的观察是:只要把「提交时可见的特征」和「执行后才知道的真实时长」严格分开,再补一套防泄漏的特征工程和评测协议,这份 trace 就能变成非透视调度的黄金数据集。

核心 idea:把生产 trace 重构成「非透视 + 真实标签 + 防泄漏」的数据集 ATLAS,再在它之上搭一个把预测任务和调度任务串起来、用归一化竞争比统一度量的基准 LASched。

方法详解

整体框架

整篇工作是一个「数据集 + 基准」的两层结构。底层是 ATLAS 数据集:从阿里 PAI-2020 两个月的 GPU 集群 trace(6500+ 张 GPU、约 1800 台机器、73 万+ 已完成作业)出发,把原始 trace 的 job / task / instance / group-tag 关系表清洗、连接、特征工程,产出一张「以作业为行、只含提交时已知信息」的表,并为每个作业算出一个真实处理时长标签。数据集刻意做成非透视的:模型只能看到提交时刻就存在的信息(资源请求、用户/组/负载标签、历史频率等),所有执行后才知道的量(实际资源利用率、机器放置、传感器指标)全部排除。

上层是 LASched 基准,分两个任务串成一条管线:

  1. 预测任务——输入提交时特征 \(x_j\),预测作业时长 \(\hat p_j\),用 RMSLE、Coverage@τ、Spearman 相关性等一组指标度量预测质量;作者实现了 4 个朴素 baseline + 6 个高级方法,并把它们统一进一个防泄漏的多阶段框架(Algorithm 1)。
  2. 调度任务——把预测 \(\hat p_j\) 喂给学习增强调度器(如 SPJF、PRR、SPRPT、EDF-P、LPPT/SPPT),在三个目标上评测:单机在线可抢占的总完成时间 \(\sum_j C_j\)、多机批量到达非抢占的 makespan \(C_{\max}\)、单机在线可抢占的最大伸展 \(\max_j S_j\);每个目标都用最优解或紧界归一化成一个经验竞争比,让不同方法、不同规模可比。

两层合起来形成一个闭环:数据集提供真实负载和标签,预测任务产出预测,调度任务消费预测并量化「预测误差如何传导成调度损失」。

关键设计

1. 非透视的数据集划界 + fork-join 真实标签:把「提交时能看到什么」和「最终跑了多久」严格切开

整个数据集的价值取决于一条红线:特征必须只来自提交时刻,标签必须是真实且无偏的执行时长。作者据此把 PAI 的列分成三类——✓ 预测特征(提交时间、用户 ID、计划 CPU/GPU/内存、实例数、组标签、负载类型、GPU 规格、历史频率等)、• 真实标签、× 排除(实际分配的 GPU 类型、实例 ID、运行时传感器指标、网络/机器配置),因为后两类要么是执行后才知道、要么是调度决策的产物,放进特征就构成泄漏。

标签的定义是这篇数据集论文里很关键的一个技术点。作业由多个 task 组成、每个 task 又有多个 instance,作者用「各 task 平均时长」当作业大小,而是用首尾时间戳重构:对 task \(t\)\(s_t=\min_{i\in I(t)} s_i\)\(e_t=\max_{i\in I(t)} e_i\),再对整个作业取 \(S=\min_t s_t\)\(E=\max_t e_t\),定义

\[p^*_j = E - S.\]

这正好对应经典的 fork-join 完成规则:一个 task 要等它所有 instance 都完成、一个作业要等它所有 task 都完成。相比 Weng 等人用「实例平均时长 \(\bar d_t\)」的口径,\(p^*_j\) 更悲观也更安全——因为 \(\bar d_t \le d_t\) 会系统性低估 gang 调度作业的占用(gang 调度下尾部决定释放,而 trace 里 85% 的 task 实例需要 gang 调度)。作者也诚实承认:两种定义都没法把「作业真实需求」从 Fuxi 调度器的历史分配决策里完全解耦,分配偏好和 CPU 争用仍嵌在记录的时长里,但在安全性这个权衡上 \(p^*_j\) 更可取。

2. 防泄漏的特征工程与划分:所有统计量都只用「过去」

真实 trace 做预测最容易踩的坑是时序泄漏——拿未来信息算特征、或在全量上拟合编码器。作者把整套流程都钉死在「严格因果」上:按提交时间 \(r_j\) 切分(最早 70% 训练 / 中间 15% 验证 / 最后 15% 测试),所有编码器和统计量只用训练集拟合,未见类别映射为 -1。从 13 个原始列工程出 53 列、过滤到 33 个模型特征,分五类:(1) 资源——对 CPU/GPU/内存/实例/task 做对数变换(PAI 分布重尾,偏度高达 11.02,log 后降到 0.17)并算 per-instance 比率;(2) 时间——小时用 sin/cos 编码保持周期连续性,加 day-of-week 和周末标记;(3) 复现签名——把用户、组、负载、分桶资源拼成签名,匹配历史执行并挂上「只用训练集」的统计量;(4) 历史——对 \(y=\log(1+p^*)\) 做按提交时间排序的扩展统计(累计均值、计数、指数加权移动平均),全部用 shift(1) 做一步滞后,低支持度的组用经验贝叶斯收缩(\(\lambda=5\))向训练集均值靠拢;(5) 类别——用户/组/负载/GPU 规格做标签编码。预测目标统一用 \(\log(1+p^*_j)\) 来压住重尾。

3. 统一的多阶段预测框架(Algorithm 1):把 10 种方法塞进一条防泄漏管线

朴素 baseline(不带 task 签名特征,只用滚动历史)的覆盖率只有 19.5–20.2% Cov@25,说明光靠资源特征不够,必须靠复现签名 + 校准。作者因此设计了一个三阶段框架把所有方法统一评测:Stage 1(在训练集上训)——训练 \(\alpha\in\{0.1,0.5,0.9\}\) 的分位数回归器、\(\ell_2\)/Huber/正则化的 LightGBM 回归器、一个把作业分成三档时长的 Two-Stage 分类器+各档专家、多个时间衰减的 Recency 模型、以及带 EB 收缩的签名统计;Stage 2(在验证集上校准)——CQR 共形分位回归算出区间 \([L,U]\)、Isotonic 单调校准、Meta-stacking 用 LightGBM 在验证预测上做堆叠、Recency 按验证 MAE 加权融合;Stage 3(在测试集上预测)——各方法各自出 \(\hat y\),最后统一 \(\hat p^*_j=\exp(\hat y_j)-1\)。所有校准器只在验证集上拟合,贯彻「诚实预测」原则,彻底杜绝校准-测试泄漏。这套框架的意义不在某个单点模型多强,而在于它让 CQR / Isotonic / Meta / Two-Stage / Weighted-Recency / HRAS 这些异质方法第一次能在同一条无泄漏管线里被公平横评。

4. 三目标调度评测 + 归一化竞争比:把「预测误差」翻译成「调度损失」

调度任务才是最终落脚点——它要回答「预测准不准,对实际调度到底有多大影响」。作者针对三个经典目标分别设定实现框架并给出归一化基准,让结果跨方法、跨规模可比:(1) 总完成时间 \(1|r_j,\text{pmtn}|\sum C_j\),单机在线可抢占,用最优的 SRPT 归一化 \(\rho_{TC}=\sum_j C^{ALG}_j/\sum_j C^{SRPT}_j\);(2) makespan \(P||C_{\max}\),多机批量到达非抢占,用 McNaughton 抢占下界 \(\text{OPT}_{pre}=\max\{\sum_j p^*_j/m,\ \max_j p^*_j\}\) 归一化;(3) 最大伸展 \(1|r_j,\text{pmtn}|\max_j S_j\),单机在线可抢占,先用二分 + EDF 可行性求 \(S^*\) 再归一化,伸展定义为响应时间与作业大小之比 \(\frac{C_j-r_j}{p^*_j}\),刻画公平性、防止大作业饿死。每个目标都把对应的学习增强调度器(SPJF / PRR / SPRPT / EDF-P / LPPT / SPPT,预测变体)和透视/非透视 baseline(SRPT、SJF、FIFO、RR、LAS、LPT、SPT)一并跑,直接读出「用预测换来的竞争比 vs 已知真实大小的最优」之间的差距。

损失函数 / 训练策略

预测器以 LightGBM 为主回归器,目标是 \(\log(1+p^*_j)\)(压重尾);分位数回归用 LightGBM quantile loss,回归器用 \(\ell_2\)/Huber/正则化三种损失,校准阶段 CQR 用共形分数 \(r=\max(Q_{0.1}-y,\ y-Q_{0.9})\) 取分位 \(k=Q_{60}(\max(r,0))\) 构造区间。低支持度签名用经验贝叶斯收缩 \(\bar\mu_s=\frac{n_s\mu_s+\lambda\mu_0}{n_s+\lambda}\)\(\lambda=5\))稳定稀有模式。所有统计/编码/校准严格只用训练或验证集拟合。

实验关键数据

主实验(预测任务,LASched on PAI trace)

覆盖率 Cov@k = 预测相对误差在 k% 以内的作业比例(All / Rec. 为全体 / 复现作业):

方法 类型 Cov@25 (%) All/Rec. Cov@50 (%) All/Rec. RMSLE ρ
Single-Stage Baseline 19.5 / 28.5 36.2 / 51.6 1.568 0.690
CRR++ Baseline 20.2 / 29.2 37.7 / 53.1 1.621 0.665
HRAS Advanced 25.6 / 29.1 46.9 / 52.5 1.373 0.801
CQR-Stack Advanced 49.0 / 57.1 67.5 / 76.8 0.944 0.897
Two-Stage Advanced 49.8 / 58.0 68.8 / 78.0 0.945 0.897
LGBM-Meta Advanced 51.2 / 58.3 70.6 / 77.5 0.871 0.912

LGBM-Meta(Meta-stacking)综合最强:51.2% Cov@25、70.6% Cov@50、ρ=0.912;Two-Stage(分类优先路由)在复现作业上 Cov@50 最高(78.0%)。带 task 签名特征 + EB 收缩的高级方法相比朴素 baseline 提升巨大,确认了复现签名是关键信号。

主实验(调度任务,三目标竞争比,越低越好)

最大伸展 n=5000、总完成时间 n=10000、makespan 在 \(m\in\{5,10,20,50,100\}\) 上平均:

目标 代表方法 竞争比 对照
总完成时间 Meta-SPJF 1.106 SRPT=1.000, SJF=1.001, FIFO=5.372, RR=1.975
总完成时间 Meta-PRR (λ=0.7) 1.292 弱于直接用预测排序的 SPJF
makespan Iso-LPPT 1.574 LPT=1.000, SPT=1.539, Random=1.898
最大伸展 ρ_max Meta-SPRPT 18.13 LAS/FB=205.28(约 11× 改善)
最大伸展 ρ_med Meta-EDF 4.504 LAS/FB=187.31(约 40× 改善)

关键发现

  • 任务签名 + EB 收缩是预测质量的命门:去掉签名特征的 baseline 只有 ~20% Cov@25,加上后翻到 50%+;复现作业占测试集 81.3%,所有方法在复现作业上都明显更准,印证历史执行数据的价值。
  • 消融(LightGBM):负载复现 + 组级执行模式是最主要的预测信号(相比只用资源的 baseline +20.2%),个体用户行为是次要精修;过拟合分析显示 5 折交叉验证训练与测试之间 Cov@25% 只差 1.1%,对未见用户也只掉 5.8%,泛化稳健。
  • 预测误差到调度损失的传导因目标而异:总完成时间对预测最不敏感(Meta-SPJF 仅比透视 SJF 退化 10.5%,且「完全相信预测排序」胜过用 round-robin 对冲的 PRR);makespan 中等敏感(只取决于能否认出最大的作业);最大伸展最脆弱——基于截止时间的 EDF-P 会放大绝对大小误差(HRAS-EDF 的 ρ_max 飙到 1700),而 SPRPT 只从 18 退化到 51,说明伸展目标下应优先用「预测剩余处理时间」而非「预测截止时间」。

亮点与洞察

  • 把一份「为负载刻画而生」的 trace 改造成「为调度评测而生」的数据集,核心不是新算法而是一套严谨的划界协议:非透视特征/标签切分 + fork-join 真实标签定义 + 按提交时间的因果划分,这套协议本身就是可复用的方法论。
  • fork-join 标签 \(p^*_j=\max_t e_t-\min_t s_t\) 替代实例平均这一处看似细节,实则决定了 gang 调度作业不被系统性低估,体现了作者对「安全比省事更重要」的取舍判断——这是数据集论文里最容易被忽视、却最影响下游结论的地方。
  • 端到端打通「预测→调度」并用归一化竞争比统一度量,让「预测准 1%、调度好多少」第一次有了可量化的真实答案;尤其「EDF-P 放大绝对误差、SPRPT 不放大」这个结论,对学习增强调度的算法选型有直接指导意义。
  • shift(1) 一步滞后 + 校准器只在验证集拟合」这套防泄漏工程套路,可以直接迁移到任何「拿历史 trace 做在线预测」的系统数据集构建中。

局限与展望

  • 标签未与调度器历史决策解耦:作者自己承认 \(p^*_j\) 里仍嵌着 Fuxi 调度器的分配偏好和 CPU 争用,真实「作业内在需求」无法从记录时长中干净剥离——这会让下游调度评测带上原系统的印记。
  • 单一数据来源:只基于阿里 PAI-2020 一份两个月的 trace,时段、机型、负载结构都被这份 trace 固定,跨集群/跨厂商的泛化性未验证。
  • 调度仿真的简化:总完成时间假设单机可抢占、makespan 假设批量到达,和真实生产里 reserving-and-packing、分数 GPU 共享等复杂机制相比仍是简化模型;预测器也只覆盖梯度提升一类,没纳入序列/图模型对作业结构建模。
  • 改进方向:引入因果/反事实手段去除调度器偏置、补充多集群 trace 做跨域评测、把仿真器做得更贴近真实放置约束。

相关工作与启发

  • vs Google Borg / Azure / 微软 VM trace:它们要么归一化/脱敏作业时长、抹掉用户和作业类型上下文,要么只关注 VM 分配而无作业结构和精确完成时间;ATLAS 保留了完整的提交时上下文 + 真实作业时长标签,专为调度评测设计。
  • vs 原始阿里 PAI trace(Weng et al., 2022):原 trace 为「负载刻画」设计、在实例粒度训回归器;本文重构为「作业级、非透视、防泄漏」的调度数据集,并用 fork-join 标签替代实例平均,标签口径更安全。
  • vs 纯合成负载的理论工作(Zhao et al., 2022; Benomar & Perchet, 2024):它们把作业大小限制成指数/Pareto/均匀分布,错过真实系统的重尾和复现模式;ATLAS 提供真实重尾负载(偏度 11.02),让带可证明竞争比的算法第一次能在真实数据上被检验。
  • vs 各家不统一的学习增强调度评测:本文用 LASched 固定了调度框架、预测器训练/验证协议、归一化方式,解决了「跨论文无法比较」的痼疾。

评分

  • 新颖性: ⭐⭐⭐⭐ 算法本身多为已有方法的组装,但「把真实 trace 重构成非透视防泄漏调度数据集 + 端到端基准」这件事填补了实打实的空白。
  • 实验充分度: ⭐⭐⭐⭐⭐ 预测 10 种方法横评 + 调度三目标多规模评测 + 消融/过拟合/泄漏分析,覆盖完整管线。
  • 写作质量: ⭐⭐⭐⭐ 形式化定义严谨(标签、可行性约束、竞争比都给了公式),但符号密集、表格信息量大,初读门槛偏高。
  • 价值: ⭐⭐⭐⭐⭐ 给学习增强调度社区提供了真实可复现的数据集和标准基准,是能长期被复用的基础设施型贡献。