论文:ICS 2024 PDF
本文目录 · 17 节
Ymir 调度哪些决定
Ymir 面向基础模型微调(FMF)。它预测 2 个下游任务采用 temporal 或 spatial transfer 后能否更快收敛,把任务是否合并和 GPU 分配放进同一个 ILP,并复用微调运行时以减少频繁切换的代价。
问题背景
传统 DLT scheduler 往往通过共置或弹性扩缩容提高利用率,但 FM 微调有 3 个不一样的条件。第一,模型大、显存占用高,共置容易 OOM;第二,多 GPU 运行时初始化、权重装载和数据准备很重,频繁扩缩容可能得不偿失;第三,数据中心里大量作业实际共享少数热门 backbone。作者统计 Hugging Face 下载量时,热门前 10 个模型占 top-100 vision FM 下载量的 83%,占 language FM 的 89%(PDF p.2,Fig. 1)。这意味着同一个 backbone 上的下游任务不是完全独立的,它们可能共享已经学到的任务知识,也可以共享已经启动的运行时。
论文把 transfer 分成 3 种执行方式(PDF pp.2-3,Fig. 2):
- Normal transfer:每个任务都从预训练 backbone 独立开始微调。
- Temporal transfer:先完成任务 A,再以 A
的微调权重初始化任务 B,记为
A -> B。 - Spatial transfer:A、B 作为多任务训练共同微调,记为
A || B。
动机实验不是只说“迁移可能有效”。在 RoBERTa-Base 上,先做 STSB 再做 QQP,可把 QQP 达到目标精度所需 epoch 数减少 2.3×;在 ViT-Base 上把 FOOD101 与 ImageNet75 联合训练,可把后者所需 epoch 数减少 2.0×(PDF p.3,Fig. 3)。跨全部测试组合,temporal 和 spatial transfer 的 TTA 最多可加速 10×,而且超过一半组合有正收益(PDF p.3,Fig. 5)。难点在于负迁移同样存在,所以调度器必须先估计,不能见到相同 backbone 就直接合并。
核心设计与调度流程
Ymir 的在线路径分三段(PDF p.4,Fig. 6)。用户提交 YAML,给出模型、数据集、超参数、停止条件、是否允许参数共享以及是否使用 pipeline parallelism。新作业先获得少量 profiling 资源,YmirEstimator 采集 loss、gradient 等统计信息,预测 normal、temporal、spatial 3 种模式在不同 GPU 数量下的完成时间。YmirSched 随后联合求解任务配对、迁移模式与 GPU 分配。YmirTuner 按求解结果实例化任务,并提前准备 dataloader 或流水化搬运参数。完成后返回用户需要的权重。
YmirEstimator 的预测链是:迁移收益 -> 收敛迭代数 -> 单迭代时间 -> 作业完成时间(PDF p.4,Fig. 7)。YmirSched 每 120 秒重算 1 次,用 ILP 在公平性目标上加入 transfer speedup 权重;不值得合并的组合会先被过滤。YmirTuner 则负责让这一调度频率在大模型微调中真正可执行,而不是让重启和装载吞掉收益。
关键机制
1. 用 Task2Vec 估计迁移收益,而不是实际试跑所有任务对
Ymir 用梯度相似性表示任务关系,并在 Task2Vec 上做了两处改造。Temporal transfer 直接估计有向的 \(S(A,B)\);spatial transfer 同时计算 \(S(A,B)\) 和 \(S(B,A)\),取平均值。随后以线性回归把相似度映射到 transfer gain,即任务 B 联合训练后的指标相对独立训练提升多少(PDF p.5,Sec. 4.1)。
Table 2 显示,ViT-Base、RoBERTa-Base、Vicuna-7B 的迁移正负分类准确率分别为 97.2%、98.6%、98.6%;transfer-gain MAPE 分别为 15.53%、16.76%、18.05%(PDF p.4,Table 2)。更重要的是系统有在线止损:如果 temporal transfer 在前 2 个 epoch 没有提升目标任务精度,就拆开执行;spatial transfer 中任一任务在前 2 个 epoch 不改善,也会解耦(PDF p.6,Sec. 4.3)。所以估计器不是 1 次预测后不可纠错。
2. 把收敛预测和吞吐预测拆开
Iteration estimator 用 2 次有理函数拟合归一化 loss 曲线,并以相邻步 loss 改善不超过 0.001 作为收敛判据(PDF p.5,Eq. 2-3)。Normal transfer 的 loss trace 来自 profiling;迁移模式下再用 transfer gain 调整曲线,估计达到相同目标精度需要多少步。3 种模型在 normal transfer 下的平均迭代数误差为 5.69%-11.3%,在 transfer 场景下平均误差为 11.07%-15.35%,最大误差不超过 32.9%(PDF p.4,Table 2)。
Time estimator 不再在线拟合复杂 scaling law,而是利用 backbone 固定这 1 条件,离线建立 LUT。键包括 GPU 数、gradient accumulation、local batch size、冻结层数、AMP、gradient checkpoint 和并行方式;每个 FM 的离线 profiling 可在 5 小时内完成,并在运行中继续更新(PDF p.6,Sec. 4.3)。这种拆分很关键:迁移改变的是还需训练多少步,资源分配改变的是每一步多快。
3. 任务合并与 GPU 分配联合进入 ILP
YmirSched 的基线目标是让每个作业相对公平份额的 slowdown
接近,避免只追求总吞吐而饿死某些作业。完整目标为
normal、temporal、spatial 3 类候选分别建立二元变量,再用
TranWt 表示相对 SRTF 独立执行的 JCT 收益(PDF pp.6-7,Eq.
7-13)。ILP 同时保证每个任务最多选择 1 种模式、合并任务不重复占资源、总
GPU 数不超容量。求解后再尽量把每个作业压到更少节点,减少通信。
这不是先配 GPU 再贪心找 partner。迁移模式的优劣会随 GPU 数改变,资源份额又会改变公平 slowdown,因此必须联合求解。为了控制 2 次增长的任务对数量,系统先删除 \(\operatorname{TranWt}<1\) 的组合(PDF p.7,Sec. 5.2)。在 2× 负载的大规模实验里,单 CPU 核上的 ILP 最大/平均延迟分别为 5.43 秒和 0.23 秒(PDF p.10,Sec. 7.2)。
4. 复用微调运行时,降低调度动作本身的成本
Task Constructor 用统一的 parameter-efficient transfer learning(PETL)结构支持 3 种 transfer mode,并优先把微调变成 data-parallel workload;只有需要时才使用离线 profile 过的 pipeline partition(PDF pp.7-8,Sec. 6.1)。Pipeline Switch 针对 2 类开销分别处理:data parallel 作业在被恢复前 30 秒提前创建 dataloader;pipeline parallel 作业则把旧任务的反向计算、权重 D2H、新任务权重 H2D 和反向方向的 pipeline execution 重叠起来(PDF p.8,Fig. 9)。
该机制把原本超过 1 分钟的 context switch 压到 1 分钟以内(PDF pp.2-3,Fig. 4;PDF p.2,系统概述)。消融中,提前准备 dataloader 带来 1.12、1.22、1.75× JCT 加速,分别对应 ViT-Base、RoBERTa-Base、Vicuna-7B;pipeline parameter switch 在 Vicuna-7B/ROC 子场景中约减少 4% JCT,但没有明显改变全局 JCT(PDF pp.10-11,Table 6 与 Sec. 7.4)。
实验设置与准确数字
物理集群有 8 个节点,每节点 4 张 V100 SXM2 32GB、64 CPU cores、256GB 内存和 200Gbps HDR InfiniBand;Vicuna-7B 因显存需求改用 A100 SXM4 80GB。系统基于 Transformers 2.4.1、PyTorch 1.7、Kubernetes 1.18.2 和 CephFS 14.2.8,共 5,967 行 Python(PDF p.8,Sec. 7.1)。测试覆盖 ViT-Base、RoBERTa-Base、Vicuna-7B,各自 9 个数据集,共 27 个 FMF task。物理 workload 从上海 AI Lab trace 抽样 120-240 jobs;仿真抽样 1,500-3,000 jobs,集群规模为 60 个 4 卡节点,即 240 GPUs(PDF pp.8-9,Sec. 7.1)。
基线包括 Tiresias、Optimus、Pollux,公平性比较另加 Themis 和 preemptive SRTF。物理实验中,Ymir 的 average JCT 相对基线加速 1.11-4.34×,99th-percentile tail JCT 加速 0.89-3.56×(PDF p.9,Fig. 10)。在 240-GPU 仿真、1-2× 负载下,JCT 加速为 1.66-22.3×(PDF pp.9-10,Fig. 11)。约 20%-30% 作业最终采用了 temporal 或 spatial transfer(PDF p.9,Table 5)。
任务合并没有以牺牲指标换速度。相对 normal transfer,3 个 FM 上报告的最小指标提升均不低于 0;Vicuna-7B 的 spatial transfer 在 SAMSUM BLEU 上出现最大 68.82% 的相对提升,但平均提升是 14.74%,不能把这个极值泛化到所有任务(PDF p.9,Table 4)。模拟器与物理实验的 average JCT 差异为 3.24%-8.77%,tail JCT 差异为 0.74%-10.82%(PDF p.9,Table 3)。
方法贡献
迁移学习加速微调本身并不新。Ymir 把过去由模型开发者判断的任务关系变成 scheduler 可估计、可优化、可撤销的决策变量。系统 同时改变了 3 层抽象:作业不再是独立黑盒;完成时间不再只由吞吐和剩余 iteration 决定,还由 partner 与 transfer mode 决定;preemption 也不再等于销毁运行时重启。相比只优化单 job PETL 或 pipeline 的工作,这是 1 种 cluster-wide algorithm-system co-design。
局限与适用边界
- 主设计和评测假定集群内作业共享 1 个 FM backbone。多 backbone 只提出按 FM 分 quota 的设想,没有完成联合调度评测(PDF p.11,Sec. 9)。
- 每次最多合并 2 个任务。三任务及以上缺少可靠的 transfer-gain estimator,ILP 变量也会进一步膨胀(PDF p.11,Sec. 9)。
- Spatial transfer 只适合尚未产生进度、仍共享初始 backbone 权重的任务(PDF p.7,脚注 3)。
- 用户需要允许共享任务参数。虽然不直接共享数据,参数仍可能泄露 membership 信息;部署时应按租户信任域限制 partner,并允许用户关闭 sharing(PDF p.11,Sec. 9)。
- 收益依赖 workload 中确实有可迁移任务对,也依赖 PETL 能减轻 catastrophic forgetting。若任务高度异质、backbone 分散或用户普遍拒绝共享,Ymir 会退化成带 profiling/LUT 的普通弹性调度器。
- Pipeline Switch 的收益依赖 PCIe 带宽和可重叠空间;参数搬运本来就很快时,它不会带来同样比例的收益(PDF p.8,Sec. 6.2)。
与其他绿色论文的技术关系
- 与 Hydro:两者都利用“模型结构重复”做跨作业优化,但边界正好相反。Hydro 在同一数据分布上缩小并融合 HPO trials,理论上不支持 fine-tuning;Ymir 专门处理不同下游数据集的 fine-tuning,通过 task transferability 判断能否共享知识。
- 与 UniSched/CHRONUS:UniSched 把 job type、deadline、profiling 和 placement 统一到 reward-based MILP;Ymir 把 transfer mode 和 task pair 加进相似的联合优化框架。前者的语义来自用户需求,后者的语义来自任务梯度关系。
- 与 ICEFROG:ICEFROG 让“冻结多少层”成为影响吞吐、显存和精度的弹性维度;Ymir 的 LUT 也显式把 frozen layers 放入配置键。2 篇都在突破 scheduler 只看 GPU 数和剩余时间的黑盒模型。
- 与 PromptTuner:PromptTuner 面向有 SLO 的短时 prompt tuning,并强调 warm GPU pool 和 prompt reuse;Ymir 面向更一般的 FM fine-tuning,以 task transfer 和低成本 context switch 为中心。二者都说明微调不能直接套普通长作业调度模型。
- 与 Titan、SchedMate:Titan 关注 FM fine-tuning 的 pipeline scheduling,但不利用跨任务 transfer;SchedMate 从代码、日志提取作业语义,而 Ymir 从 loss/gradient 提取可迁移性。它们分别扩展了执行层、观测层和优化变量。
3 种迁移模式的前置背景
Foundation Model Fine-tuning 作业共享大 backbone,只更新少量 PETL 参数或部分层。普通 scheduler 把每个作业当独立黑盒,只估剩余迭代与不同 GPU 数的吞吐;Ymir 观察到 2 个下游任务若相关,可以复用知识并更快达到目标指标。Normal mode 是各任务独立从基础权重微调;temporal transfer 先训练任务 A,再把 A 的已学参数作为 B 的起点,是有方向的 A 到 B;spatial transfer 让 A、B 同时联合训练,共享部分参数与计算,是近似对称关系。
迁移并非总正向。任务语义冲突会 negative transfer,已训练进度不同也限制合并:spatial 只适合都尚未产生进度、仍共享初始 backbone 的任务;temporal 可以利用前序已完成任务。用户还必须允许参数共享。Ymir 在线预测哪一对任务、哪一方向、哪种模式在给定 GPU 数下能缩短 JCT,并在前 2 个 epoch 观察不到收益时拆开止损,而不是无条件合并相似任务。
1 次请求以 YAML 提交模型、数据集、超参数、停止条件、是否允许 sharing 和是否使用 pipeline parallel。新任务获得少量 profiling 资源,Estimator 读取 loss、gradient 和吞吐;Scheduler 每一 20 秒联合选择 partner、transfer mode 与 GPU 数;Tuner 构造 normal/temporal/spatial 运行时并降低切换成本。每个用户任务保留独立权重与训练状态,共享只发生在受控执行阶段。
估计链、公式与完整变量
Task2Vec 用任务数据在共享 backbone 上产生梯度统计,形成任务向量。Temporal 的相似性 \(S(A,B)\) 有方向,因为先学 A 对 B 的帮助不等于反向;spatial 同时计算 \(S(A,B)\) 与 \(S(B,A)\) 并取平均。线性回归把相似度映射成 transfer gain,即迁移后目标指标相对独立训练的变化。ViT-Base、RoBERTa-Base、Vicuna-7B 的正负迁移分类准确率为 97.2%、98.6、98.6,gain MAPE 为 15.53、16.76、18.05。
Iteration Estimator 先把 profiling loss 归一化,用 2 次有理函数拟合随迭代下降的曲线;当相邻 step 的 loss 改善不超过 0.001,视为收敛。Normal 模式直接由曲线求剩余迭代;迁移模式以 transfer gain 调整目标曲线,再估达到相同指标需要多少步。3 模型 normal 平均迭代误差 5.69%–11.3%,transfer 平均 11.07 到 15.35,最大不超过 32.9。预测链明确分成“迁移收益改变迭代数”和“GPU 配置改变单迭代时间”。
Time Estimator 利用同一 backbone 的执行结构固定,离线建立查找表。键包括 GPU 数、gradient accumulation、local batch、冻结层数、AMP、gradient checkpoint 和并行方式,值为每 iteration 时间;每个 FM 的离线 profile 5 小时内完成,在线实测继续更新。作业完成时间近似为预测剩余迭代乘查表单步时间,再加 profiling、排队和 context switch。若把迁移收益直接乘吞吐,或用 1 个 scaling law 同时拟合收敛与系统速度,就会混淆算法和资源 2 种作用。
联合 ILP 与端到端手算
YmirSched 为 normal、temporal、spatial 候选建立二元变量,候选还绑定 GPU 分配。基线公平目标让作业相对公平份额的 slowdown 接近,避免只优化平均 JCT 而饿死大作业;\(\operatorname{TranWt}\) 表示候选相对 preemptive SRTF 独立执行的 JCT 收益。约束包括每个任务最多选择 1 种模式,同一任务不能出现在 2 个合并对,总 GPU 不超容量,只有共享 backbone、允许共享且满足进度条件的 pair 可用。\(\operatorname{TranWt}<1\) 的无收益组合先过滤,降低任务对 2 次增长。
假设 A 独立还需 100 步、每步 1 秒,B 需 80 步;temporal A 到 B 预测使 B 只需 50 步,二者顺序执行 150 秒,相对独立总工作 180 秒有收益。Spatial 预测联合需 110 步、每步 1.3 秒,共 143 秒,也更快;但若给 2× GPU 后 normal 单步可降到 0.6 秒,而联合通信只降到 1 秒,最优模式可能反转。这个手算说明 partner 与 GPU 数不能分 2 阶段贪心选择。ILP 会在公平 slowdown、整体资源和 transfer weight 中统一比较。
求解后系统再尽量把每个作业压到较少节点以减少通信。2× 负载大规模实验中,单 CPU 核 ILP 最大 5.43 秒、平均 0.23 秒,低于 120 秒调度周期。若 estimator 误判,temporal 在前 2 个 epoch 目标精度没有改善就拆开;spatial 任一任务不改善也解耦。回退后仍保留各自状态继续 normal,而非丢弃全部进度。
运行时切换、实验与开销
Task Constructor 用统一 PETL 结构构造 3 种模式,优先转成 data parallel;只有显存或模型配置需要时采用离线 profile 的 pipeline partition。Data parallel 作业恢复前约 30 秒提前创建 dataloader,避免 GPU 等 CPU 输入。Pipeline Switch 将旧任务反向计算、权重 device-to-host、新任务权重 host-to-device 与反向 pipeline execution 重叠,把原本超过 1 分钟的 context switch 压到 1 分钟内。
系统有 5967 行 Python,基于 Transformers 2.4.1、PyTorch 1.7、Kubernetes 1.18.2、CephFS 14.2.8。物理集群 8 节点,每节点四张 V100 SXM2 32GB、64 CPU core、256 GB 内存、200 Gbps HDR InfiniBand;Vicuna-7B 用 A100 SXM4 80GB。模型 ViT-Base、RoBERTa-Base、Vicuna-7B 各 9 个数据集,共 27 个任务;物理 trace 120 到 240 job,模拟 1500 到 3000 job、60 个 4 卡节点共 240 GPU。
物理 average JCT 相对 Tiresias、Optimus、Pollux 加速 1.11 到 4.34×,99% tail 为 0.89 到 3.56×;tail 下界小于一说明某一比较点可能变差,不能只报最高值。240 GPU、负载一到 2× 的模拟加速 1.66 到 22.3×,约 20%–30% 作业采用 temporal 或 spatial。模拟器与物理 average JCT 差 3.24%–8.77%,tail 差 0.74 到 10.82。
迁移没有通过降低目标指标换速度:相对 normal,3 个 FM 的最小指标提升不低于零。Vicuna-7B spatial 在 SAMSUM BLEU 最大相对提升 68.82%,平均只有 14.74,极值不能泛化。运行时消融中,提前 dataloader 为 ViT、RoBERTa、Vicuna 带来 1.12、1.22、1.75× JCT 加速;pipeline parameter switch 在 Vicuna/ROC 子场景约降 4% JCT,但对全局 JCT 无明显改变。
复现清单、隐私与失败边界
复现先为 3 种 backbone 的 9 个任务固定 PETL、目标指标和数据 split,采 normal、A 到 B、B 到 A、spatial 的梯度向量与真实 gain,重现正负分类和 MAPE。Iteration Estimator 要保存原始/归一化 loss、拟合参数、0.001 收敛点和实际迭代;Time LUT 枚举论文键并核对插值误差。之后在小集群穷举 pair、mode、GPU,和 ILP 输出比较,确认任务唯一性、容量、公平与 TranWt 过滤。
端到端必须分别关闭 transfer、Estimator、提前 dataloader、pipeline switch,报告 average/tail JCT、采用 3 种 mode 的比例、负迁移回退数、solver 平均/最大时间和 context-switch 分解。多 backbone 只在论文讨论中提出按 FM 分 quota,没有完整联合评测;每次最多合并 2 个任务,三任务缺可靠 estimator;spatial 不能合并已有不同进度的权重。若 workload 没有相关 pair 或用户关闭 sharing,Ymir 应退化为带 LUT 的普通弹性调度器。
参数共享即使不直接传原始数据,也可能泄露 membership 信息。系统只提供 opt-out,没有差分隐私、安全聚合或租户隔离协议;跨用户部署应限制在同信任域、记录 partner 与参数流向,并允许任务拒绝 sharing。Task2Vec 与 gain 回归随数据、backbone、PETL 和目标指标变化,必须版本化模型,在线前 2 个 epoch 止损不能替代事前验证。
最终验收是 4 条证据闭环:任务相似度能预测 gain,gain 能改善迭代估计,ILP 在容量和公平约束下选择正确 pair/GPU,运行时切换没有吞掉算法收益。若 JCT 降但目标指标下降,是负迁移未捕获;若预测准但端到端不快,是 LUT、通信或切换问题;若 solver 太慢,应先过滤 TranWt 小于一的 pair。Ymir 的核心是把任务关系变成可估计、可撤销的 scheduler 决策变量,而非无条件联合训练。
Temporal 与 spatial 的状态所有权要明确。Temporal 中 A 先完成或积累足够知识,B 以 A 的可迁移 PETL 参数初始化;最终仍需输出 B 自己的权重,A 的结果不因 B 回退而丢失。Spatial 中 2 个尚未进展的任务共同维护共享 backbone/PETL 结构,同时从各自数据计算目标;任何一方前 2 个 epoch 不改善就拆开,拆分后的 checkpoint 要能映射回 2 个独立任务。若实现只保留一份联合 optimizer state,解耦时无法无损恢复,在线止损就只是纸面机制。
Task2Vec 的方向性可用例子理解。通用情感分类 A 可能帮助领域情感 B,因为先学通用表示再适配领域;反向从窄领域到通用未必同样有效,所以 temporal 使用 \(S(A,B)\)。Spatial 两者同时优化,没有固定教师学生方向,取双向相似平均。相似不是数据文本 embedding,而是 backbone 在任务样本上的梯度/Fisher 表征,捕捉“更新哪些参数”。同名数据或标签相似不保证梯度相似,反之亦然。
公平目标避免迁移收益大的任务垄断资源。每个作业若按集群总 GPU 均分有 1 个公平完成时间,实际调度完成时间相对它形成 slowdown;Ymir 让这些相对值接近,同时以 TranWt 奖励能缩短 JCT 的迁移候选。若只最小化总 JCT,短任务 pair 可能持续抢占,长任务饿死;若只 max-min fairness,又可能放弃显著正迁移。ILP 的 normal 候选保证没有合适 partner 时仍有可行解。
调度周期为 120 秒意味着估计与执行不是每个 batch 都变化。新 job 到达、任务完成或回退后进入下一轮,solver 用当前剩余迭代、LUT 与 GPU 状态重算。求解平均 0.23 秒、最大 5.43 秒在该周期内可接受,但 Task2Vec profiling 和运行时构造也占时间,不能只报告 ILP。物理端到端结果已经包含这些主要动作,复现仍应把 estimator、solver、dataloader、参数搬运分别计时。
为什么大规模模拟最高 22.3×,需要结合负载读。高负载下普通 scheduler 排队长,迁移减少迭代并让合并作业共享资源,释放 GPU 后又缩短后续排队,收益会级联;物理小集群范围只有 1.11 到 4.34×。极高值来自特定 trace、容量与 transfer pair 密度,不代表单个 job 加速 22×。报告必须给采用 transfer 的 20%–30% 比例和未采用多数,才能说明全局收益如何由少数 pair 传播。
Tail JCT 的 0.89× 下界也是重要反例:average 改善不保证每个尾部点改善。任务 pair 选择、等待 partner、回退或 pipeline switch 都可能让某些长任务更慢。生产 SLO 场景应为等待 partner 设置上限,在预测 gain 不够或 deadline 紧时选择 normal;同时分别报告 average、p99、最大 slowdown 和公平性,而不是只用整体吞吐掩盖个别用户退化。
多 backbone 场景按模型分 quota 只是论文设想。不同 FM 的 Task2Vec 空间、LUT、显存和 pipeline partition 不可直接比较,跨 backbone 也不能做参数迁移。若静态分 quota,会在某一模型空闲、另一 模型拥塞时浪费 GPU;若动态 quota,又需要更高层资源优化。复现本论文应保持同 backbone 任务池,扩展研究再单独评测 quota,不能把讨论段当已验证功能。
数据和参数隐私还影响可迁移 pair 的图结构。租户 opt-out 后相关边被删除,ILP 候选减少;若只有同租户可共享,partner 选择需加信任域约束。梯度向量本身也可能泄露数据特征,Estimator 存储与传输要受保护。上线文档应定义加密方式、隐私预算、统计收集范围、保留时间和 partner 资格。
停止条件必须统一才能比较迭代收益。各任务应定义目标 accuracy、BLEU 或 loss,与 normal baseline 达到的质量对应;transfer gain 调整的是达到同目标所需步数,不是允许迁移任务用更低门槛提前结束。若任务在最大 epoch 前未到目标,要把删失情况记录,而不能将上限当真实收敛点。0.001 loss 改善阈值也应在 3 类模型分别验证,避免尺度不同造成误判。
LUT 的键空间可能很大,离线 5 小时以内是每个 FM 的论文结果。组合 GPU 数、accumulation、local batch、冻结层、AMP、checkpoint、并行方式时不可能无限细采样,未测配置需限制或插值。在线实测更新必须绑定硬件和软件版本;V100 与 A100、不同网络的单步时间不可共用。调度日志应记录查表命中、插值来源和预测误差,便于解释错误 GPU 分配。
Pipeline Switch 的重叠有严格依赖:旧任务反向尚未结束时可把已不再使用的权重分段搬到主存,新任务权重分段从主存进入设备,并沿反方向 pipeline 避免争同一阶段;但新 forward 不能读取未完成 H2D 的层。Data parallel 的 30 秒提前 dataloader 也必须基于预计恢复时间,过早会占 CPU/内存,过晚 GPU 仍等待。消融的 1.75× 在 Vicuna 上较大,说明大模型切换数据准备不可忽略。
Simulator 校准应按 average 与 tail 分开,论文误差范围不同。把同一物理 trace、相同 estimator 输出和切换时间喂模拟器,比较每个作业开始、抢占、恢复和完成;只对最终平均相近可能掩盖次序错误。之后大规模 1500 到 3000 job 的 22.3× 才有可信基础。Table 3 的 3.24%–8.77% 和 0.74 到 10.82 是边界,不是零误差证明。
用户可观测输出除了权重,还应包含任务采用的 mode、partner、预计/实际 gain、GPU 分配、回退原因和指标轨迹。若 spatial 合并后两任务都提升,可分别保存 PETL adapter;若一方回退,要确认另一方不会继续读取被撤销共享状态。审计记录对于负迁移、隐私争议和 JCT 归因都必要,而普通黑盒 scheduler 通常没有这些算法语义。
资源不足时 profiling 本身也要调度。新任务先拿少量 GPU 收 loss 和 gradient,若大量任务同时到达,全部 profiling 会挤压正式训练;Estimator 结果过旧又会误判。复现应报告 profiling GPU-time、等待和占总 JCT 比例,并为无 profile 候选保留 normal mode。论文的端到端加速包含其实现开销,但不同到达 burst 下 profiling quota 仍是部署参数。
正迁移分类 97% 以上仍意味着少量误判。20%–30% 作业采用 transfer 时,错误 pair 可能影响 tail;前两 epoch 止损降低损失,却已经消耗 GPU 和等待时间。应分别统计 false positive、false negative、触发回退后的额外 JCT,以及因保守过滤错过的潜在收益。只有把预测质量转成调度代价,才能判断是否应提高 TranWt 门槛。
最终还要验证用户停止条件与 scheduler 重调同时发生时的原子性:任务达到目标后先冻结权重、释放 partner 关系和 GPU,再进入下一轮 ILP;不能让已完成任务继续作为 spatial 成员占资源。Temporal 的已完成 A 可作为知识来源,但不应重新计入 active JCT。事件日志应给提交、profile、合并、拆分、完成的单调状态机。
这些检查把 Ymir 的最高加速放回正确语境:收益来自可迁移任务、可靠估计、联合资源决策和低成本切换四者同时成立,任何一项缺失都会回到 normal 调度。
因此复现必须同时保存模型质量和调度时间线。每次 partner 选择、模式切换、回退和任务完成都应落入同一份可审计事件记录。