论文:ICS 2024 PDF
本文目录 · 17 节
Ymir 调度哪些决定
Ymir 面向基础模型微调(FMF)。它预测两个下游任务采用 temporal 或 spatial transfer 后能否更快收敛,把任务是否合并和 GPU 分配放进同一个 ILP,并复用微调运行时以减少频繁切换的代价。
问题背景
传统 DLT scheduler 往往通过共置或弹性扩缩容提高利用率,但 FM 微调有三个不一样的条件。第一,模型大、显存占用高,共置容易 OOM;第二,多 GPU 运行时初始化、权重装载和数据准备很重,频繁扩缩容可能得不偿失;第三,数据中心里大量作业实际共享少数热门 backbone。作者统计 Hugging Face 下载量时,热门前 10 个模型占 top-100 vision FM 下载量的 83%,占 language FM 的 89%(PDF p.2,Fig. 1)。这意味着同一个 backbone 上的下游任务不是完全独立的,它们可能共享已经学到的任务知识,也可以共享已经启动的运行时。
论文把 transfer 分成三种执行方式(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 三种模式在不同 GPU 数量下的完成时间。YmirSched 随后联合求解任务配对、迁移模式与 GPU 分配。YmirTuner 按求解结果实例化任务,并提前准备 dataloader 或流水化搬运参数。完成后返回用户需要的权重。
YmirEstimator 的预测链是:迁移收益 -> 收敛迭代数 -> 单迭代时间 -> 作业完成时间(PDF p.4,Fig. 7)。YmirSched 每 120 秒重算一次,用 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 在前两个 epoch 没有提升目标任务精度,就拆开执行;spatial transfer 中任一任务在前两个 epoch 不改善,也会解耦(PDF p.6,Sec. 4.3)。所以估计器不是一次预测后不可纠错。
2. 把收敛预测和吞吐预测拆开
Iteration estimator 用二次有理函数拟合归一化 loss 曲线,并以相邻步 loss 改善不超过 0.001 作为收敛判据(PDF p.5,Eq. 2-3)。Normal transfer 的 loss trace 来自 profiling;迁移模式下再用 transfer gain 调整曲线,估计达到相同目标精度需要多少步。三种模型在 normal transfer 下的平均迭代数误差为 5.69%-11.3%,在 transfer 场景下平均误差为 11.07%-15.35%,最大误差不超过 32.9%(PDF p.4,Table 2)。
Time estimator 不再在线拟合复杂 scaling law,而是利用 backbone 固定这一条件,离线建立 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 三类候选分别建立二元变量,再用
TranWt 表示相对 SRTF 独立执行的 JCT 收益(PDF pp.6-7,Eq.
7-13)。ILP 同时保证每个任务最多选择一种模式、合并任务不重复占资源、总
GPU 数不超容量。求解后再尽量把每个作业压到更少节点,减少通信。
这不是先配 GPU 再贪心找 partner。迁移模式的优劣会随 GPU
数改变,资源份额又会改变公平
slowdown,因此必须联合求解。为了控制二次增长的任务对数量,系统先删除
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)结构支持三种 transfer mode,并优先把微调变成 data-parallel workload;只有需要时才使用离线 profile 过的 pipeline partition(PDF pp.7-8,Sec. 6.1)。Pipeline Switch 针对两类开销分别处理:data parallel 作业在被恢复前 30 秒提前创建 dataloader;pipeline parallel 作业则把旧任务的反向计算、权重 D2H、新任务权重 H2D 和反向方向的 pipeline execution 重叠起来(PDF p.8,Fig. 9)。
该机制把原本超过一分钟的 context switch 压到一分钟以内(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 个四卡节点,即 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,三个 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 可估计、可优化、可撤销的决策变量。系统 同时改变了三层抽象:作业不再是独立黑盒;完成时间不再只由吞吐和剩余 iteration 决定,还由 partner 与 transfer mode 决定;preemption 也不再等于销毁运行时重启。相比只优化单 job PETL 或 pipeline 的工作,这是一种 cluster-wide algorithm-system co-design。
局限与适用边界
- 主设计和评测假定集群内作业共享一个 FM backbone。多 backbone 只提出按 FM 分 quota 的设想,没有完成联合调度评测(PDF p.11,Sec. 9)。
- 每次最多合并两个任务。三任务及以上缺少可靠的 transfer-gain estimator,ILP 变量也会进一步膨胀(PDF p.11,Sec. 9)。
- Spatial transfer 只适合尚未产生进度、仍共享初始 backbone 权重的任务(PDF p.7,脚注 3)。
- 用户需要允许共享任务参数。虽然不直接共享数据,参数仍可能泄露 membership 信息;系统只能让用户关闭 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 放入配置键。两篇都在突破 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 提取可迁移性。它们分别扩展了执行层、观测层和优化变量。
三种迁移模式的前置背景
Foundation Model Fine-tuning 作业共享大 backbone,只更新少量 PETL 参数或部分层。普通 scheduler 把每个作业当独立黑盒,只估剩余迭代与不同 GPU 数的吞吐;Ymir 观察到两个下游任务若相关,可以复用知识并更快达到目标指标。Normal mode 是各任务独立从基础权重微调;temporal transfer 先训练任务 A,再把 A 的已学参数作为 B 的起点,是有方向的 A 到 B;spatial transfer 让 A、B 同时联合训练,共享部分参数与计算,是近似对称关系。
迁移并非总正向。任务语义冲突会 negative transfer,已训练进度不同也限制合并:spatial 只适合都尚未产生进度、仍共享初始 backbone 的任务;temporal 可以利用前序已完成任务。用户还必须允许参数共享。Ymir 在线预测哪一对任务、哪一方向、哪种模式在给定 GPU 数下能缩短 JCT,并在前两个 epoch 观察不到收益时拆开止损,而不是无条件合并相似任务。
一次请求以 YAML 提交模型、数据集、超参数、停止条件、是否允许 sharing 和是否使用 pipeline parallel。新任务获得少量 profiling 资源,Estimator 读取 loss、gradient 和吞吐;Scheduler 每一百二十秒联合选择 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 的正负迁移分类准确率为百分之九十七点二、九十八点六、九十八点六,gain MAPE 为十五点五三、十六点七六、十八点零五。
Iteration Estimator 先把 profiling loss 归一化,用二次有理函数拟合随迭代下降的曲线;当相邻 step 的 loss 改善不超过零点零零一,视为收敛。Normal 模式直接由曲线求剩余迭代;迁移模式以 transfer gain 调整目标曲线,再估达到相同指标需要多少步。三模型 normal 平均迭代误差百分之五点六九到十一点三,transfer 平均十一点零七到十五点三五,最大不超过三十二点九。预测链明确分成“迁移收益改变迭代数”和“GPU 配置改变单迭代时间”。
Time Estimator 利用同一 backbone 的执行结构固定,离线建立查找表。键包括 GPU 数、gradient accumulation、local batch、冻结层数、AMP、gradient checkpoint 和并行方式,值为每 iteration 时间;每个 FM 的离线 profile 五小时内完成,在线实测继续更新。作业完成时间近似为预测剩余迭代乘查表单步时间,再加 profiling、排队和 context switch。若把迁移收益直接乘吞吐,或用一个 scaling law 同时拟合收敛与系统速度,就会混淆算法和资源两种作用。
联合 ILP 与端到端手算
YmirSched 为 normal、temporal、spatial 候选建立二元变量,候选还绑定 GPU 分配。基线公平目标让作业相对公平份额的 slowdown 接近,避免只优化平均 JCT 而饿死大作业;TranWt 表示候选相对 preemptive SRTF 独立执行的 JCT 收益。约束包括每个任务最多选择一种模式,同一任务不能出现在两个合并对,总 GPU 不超容量,只有共享 backbone、允许共享且满足进度条件的 pair 可用。TranWt<1 的无收益组合先过滤,降低任务对二次增长。
假设 A 独立还需一百步、每步一秒,B 需八十步;temporal A 到 B 预测使 B 只需五十步,二者顺序执行一百五十秒,相对独立总工作一百八十秒有收益。Spatial 预测联合需一百一十步、每步一点三秒,共一百四十三秒,也更快;但若给两倍 GPU 后 normal 单步可降到零点六秒,而联合通信只降到一秒,最优模式可能反转。这个手算说明 partner 与 GPU 数不能分两阶段贪心选择。ILP 会在公平 slowdown、整体资源和 transfer weight 中统一比较。
求解后系统再尽量把每个作业压到较少节点以减少通信。二倍负载大规模实验中,单 CPU 核 ILP 最大五点四三秒、平均零点二三秒,低于一百二十秒调度周期。若 estimator 误判,temporal 在前两个 epoch 目标精度没有改善就拆开;spatial 任一任务不改善也解耦。回退后仍保留各自状态继续 normal,而非丢弃全部进度。
运行时切换、实验与开销
Task Constructor 用统一 PETL 结构构造三种模式,优先转成 data parallel;只有显存或模型配置需要时采用离线 profile 的 pipeline partition。Data parallel 作业恢复前约三十秒提前创建 dataloader,避免 GPU 等 CPU 输入。Pipeline Switch 将旧任务反向计算、权重 device-to-host、新任务权重 host-to-device 与反向 pipeline execution 重叠,把原本超过一分钟的 context switch 压到一分钟内。
系统有五千九百六十七行 Python,基于 Transformers 2.4.1、PyTorch 1.7、Kubernetes 1.18.2、CephFS 14.2.8。物理集群八节点,每节点四张 V100 SXM2 32GB、六十四 CPU core、二百五十六 GB 内存、二百 Gbps HDR InfiniBand;Vicuna-7B 用 A100 SXM4 80GB。模型 ViT-Base、RoBERTa-Base、Vicuna-7B 各九个数据集,共二十七个任务;物理 trace 一百二十到二百四十 job,模拟一千五百到三千 job、六十个四卡节点共二百四十 GPU。
物理 average JCT 相对 Tiresias、Optimus、Pollux 加速一点一一到四点三四倍,百分之九十九 tail 为零点八九到三点五六倍;tail 下界小于一说明某一比较点可能变差,不能只报最高值。二百四十 GPU、负载一到二倍的模拟加速一点六六到二十二点三倍,约百分之二十到三十作业采用 temporal 或 spatial。模拟器与物理 average JCT 差百分之三点二四到八点七七,tail 差零点七四到十点八二。
迁移没有通过降低目标指标换速度:相对 normal,三个 FM 的最小指标提升不低于零。Vicuna-7B spatial 在 SAMSUM BLEU 最大相对提升百分之六十八点八二,平均只有十四点七四,极值不能泛化。运行时消融中,提前 dataloader 为 ViT、RoBERTa、Vicuna 带来一点一二、一点二二、一点七五倍 JCT 加速;pipeline parameter switch 在 Vicuna/ROC 子场景约降百分之四 JCT,但对全局 JCT 无明显改变。
复现清单、隐私与失败边界
复现先为三种 backbone 的九个任务固定 PETL、目标指标和数据 split,采 normal、A到B、B到A、spatial 的梯度向量与真实 gain,重现正负分类和 MAPE。Iteration Estimator 要保存原始/归一化 loss、拟合参数、零点零零一收敛点和实际迭代;Time LUT 枚举论文键并核对插值误差。之后在小集群穷举 pair、mode、GPU,和 ILP 输出比较,确认任务唯一性、容量、公平与 TranWt 过滤。
端到端必须分别关闭 transfer、Estimator、提前 dataloader、pipeline switch,报告 average/tail JCT、采用三种 mode 的比例、负迁移回退数、solver 平均/最大时间和 context-switch 分解。多 backbone 只在论文讨论中提出按 FM 分 quota,没有完整联合评测;每次最多合并两个任务,三任务缺可靠 estimator;spatial 不能合并已有不同进度的权重。若 workload 没有相关 pair 或用户关闭 sharing,Ymir 应退化为带 LUT 的普通弹性调度器。
参数共享即使不直接传原始数据,也可能泄露 membership 信息。系统只提供 opt-out,没有差分隐私、安全聚合或租户隔离协议;跨用户部署应限制在同信任域、记录 partner 与参数流向,并允许任务拒绝 sharing。Task2Vec 与 gain 回归随数据、backbone、PETL 和目标指标变化,必须版本化模型,在线前两个 epoch 止损不能替代事前验证。
最终验收是四条证据闭环:任务相似度能预测 gain,gain 能改善迭代估计,ILP 在容量和公平约束下选择正确 pair/GPU,运行时切换没有吞掉算法收益。若 JCT 降但目标指标下降,是负迁移未捕获;若预测准但端到端不快,是 LUT、通信或切换问题;若 solver 太慢,应先过滤 TranWt 小于一的 pair。Ymir 的核心是把任务关系变成可估计、可撤销的 scheduler 决策变量,而非无条件联合训练。
Temporal 与 spatial 的状态所有权要明确。Temporal 中 A 先完成或积累足够知识,B 以 A 的可迁移 PETL 参数初始化;最终仍需输出 B 自己的权重,A 的结果不因 B 回退而丢失。Spatial 中两个尚未进展的任务共同维护共享 backbone/PETL 结构,同时从各自数据计算目标;任何一方前两个 epoch 不改善就拆开,拆分后的 checkpoint 要能映射回两个独立任务。若实现只保留一份联合 optimizer state,解耦时无法无损恢复,在线止损就只是纸面机制。
Task2Vec 的方向性可用例子理解。通用情感分类 A 可能帮助领域情感 B,因为先学通用表示再适配领域;反向从窄领域到通用未必同样有效,所以 temporal 使用 S(A,B)。Spatial 两者同时优化,没有固定教师学生方向,取双向相似平均。相似不是数据文本 embedding,而是 backbone 在任务样本上的梯度/Fisher 表征,捕捉“更新哪些参数”。同名数据或标签相似不保证梯度相似,反之亦然。
公平目标避免迁移收益大的任务垄断资源。每个作业若按集群总 GPU 均分有一个公平完成时间,实际调度完成时间相对它形成 slowdown;Ymir 让这些相对值接近,同时以 TranWt 奖励能缩短 JCT 的迁移候选。若只最小化总 JCT,短任务 pair 可能持续抢占,长任务饿死;若只 max-min fairness,又可能放弃显著正迁移。ILP 的 normal 候选保证没有合适 partner 时仍有可行解。
调度周期为一百二十秒意味着估计与执行不是每个 batch 都变化。新 job 到达、任务完成或回退后进入下一轮,solver 用当前剩余迭代、LUT 与 GPU 状态重算。求解平均零点二三秒、最大五点四三秒在该周期内可接受,但 Task2Vec profiling 和运行时构造也占时间,不能只报告 ILP。物理端到端结果已经包含这些主要动作,复现仍应把 estimator、solver、dataloader、参数搬运分别计时。
为什么大规模模拟最高二十二点三倍,需要结合负载读。高负载下普通 scheduler 排队长,迁移减少迭代并让合并作业共享资源,释放 GPU 后又缩短后续排队,收益会级联;物理小集群范围只有一点一一到四点三四倍。极高值来自特定 trace、容量与 transfer pair 密度,不代表单个 job 加速二十二倍。报告必须给采用 transfer 的百分之二十到三十比例和未采用多数,才能说明全局收益如何由少数 pair 传播。
Tail JCT 的零点八九倍下界也是重要反例: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 前未到目标,要把删失情况记录,而不能将上限当真实收敛点。零点零零一 loss 改善阈值也应在三类模型分别验证,避免尺度不同造成误判。
LUT 的键空间可能很大,离线五小时以内是每个 FM 的论文结果。组合 GPU 数、accumulation、local batch、冻结层、AMP、checkpoint、并行方式时不可能无限细采样,未测配置需限制或插值。在线实测更新必须绑定硬件和软件版本;V100 与 A100、不同网络的单步时间不可共用。调度日志应记录查表命中、插值来源和预测误差,便于解释错误 GPU 分配。
Pipeline Switch 的重叠有严格依赖:旧任务反向尚未结束时可把已不再使用的权重分段搬到主存,新任务权重分段从主存进入设备,并沿反方向 pipeline 避免争同一阶段;但新 forward 不能读取未完成 H2D 的层。Data parallel 的三十秒提前 dataloader 也必须基于预计恢复时间,过早会占 CPU/内存,过晚 GPU 仍等待。消融的一点七五倍在 Vicuna 上较大,说明大模型切换数据准备不可忽略。
Simulator 校准应按 average 与 tail 分开,论文误差范围不同。把同一物理 trace、相同 estimator 输出和切换时间喂模拟器,比较每个作业开始、抢占、恢复和完成;只对最终平均相近可能掩盖次序错误。之后大规模一千五百到三千 job 的二十二点三倍才有可信基础。Table 3 的百分之三点二四到八点七七和零点七四到十点八二是边界,不是零误差证明。
用户可观测输出除了权重,还应包含任务采用的 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 仍是部署参数。
正迁移分类百分之九十七以上仍意味着少量误判。二十到三十百分比作业采用 transfer 时,错误 pair 可能影响 tail;前两 epoch 止损降低损失,却已经消耗 GPU 和等待时间。应分别统计 false positive、false negative、触发回退后的额外 JCT,以及因保守过滤错过的潜在收益。只有把预测质量转成调度代价,才能判断是否应提高 TranWt 门槛。
最终还要验证用户停止条件与 scheduler 重调同时发生时的原子性:任务达到目标后先冻结权重、释放 partner 关系和 GPU,再进入下一轮 ILP;不能让已完成任务继续作为 spatial 成员占资源。Temporal 的已完成 A 可作为知识来源,但不应重新计入 active JCT。事件日志应给提交、profile、合并、拆分、完成的单调状态机。
这些检查把 Ymir 的最高加速放回正确语境:收益来自可迁移任务、可靠估计、联合资源决策和低成本切换四者同时成立,任何一项缺失都会回到 normal 调度。
因此复现必须同时保存模型质量和调度时间线。