✨ 要点🔬 技术摘要
想象一下你是一位规模宏大、混乱不堪的电影片场的导演。你面临着数百万个微小的、瞬息即逝的任务(比如相机闪光灯),以及一些巨大的、移动缓慢的任务(比如移动一座巨大的城堡布景)。在过去,试图在像 Aurora 超级计算机这样规模如城市般的机器上管理所有这些演员和道具是一场噩梦。负责分发工作的“经理”会被海量的请求淹没,导致整个制作过程陷入停滞。
本文介绍了一种运行表演的新方法,叫做 EnsembleLauncher 。EnsembleLauncher 不再采用由一个单一的老板来指挥所有人的模式,而是构建了一个分形树状结构(fractal tree) 。你可以把它想象成一个庞大的公司阶梯:CEO 不直接给实习生打电话;CEO 给副总裁打电话,副总裁给经理打电话,而经理再给实习生打电话。这种“递归层级结构”意味着顶层的老板永远不会因为接听过多的电话而应接不暇。
重大发现:关键在于形态,而非软件
作者进行了一项引人入胜的实验,以查明其他工具为何失效。他们选取了两种截然不同的软件工具(Dask 和 Parsl),并强迫它们使用相同的“扁平化”管理模式(即所有人直接向老板汇报)。结果,这两个工具同时崩溃并宣告失败。
随后,他们为这些工具提供了“层级化”的形态(即树状结构)。突然间,它们表现得出色得多。
研究结果: 论文证明了管理团队的形态 (拓扑结构)才是最重要的,而不是所使用的具体软件代码。如果你拥有扁平的结构,即使是最好的软件也会窒ال窒。如果你拥有树状结构,即使是不同的软件也能实现规模化扩展。
证据: 在 Aurora 超级计算机上,他们将这个新系统扩展到了 8,192 个节点 (这是他们测试中所允许使用的最大值),并运行了 800 万个串行任务 。该系统的速度比目前市面上最好的工具还要快四倍以上 。
为什么旧的方法会失败:“交通堵塞”
要理解为什么旧的方法会失败,请想象一名交通警察站在高速公路中间,试图指挥数百万辆汽车。
扁平化的问题: 在旧有的“扁平化”系统中,每一个任务都必须向中央调度器申请运行许可。论文测量显示,在 128 个节点 的情况下,对于时长仅为 0.1 秒的微小任务,工人们竟然花了 27.6 秒 仅仅是在排队等待与老板沟通,而实际的工作时间仅为 0.1 秒 。工人们处于闲置状态,盯着手机发呆,因为老板太忙了。
树状结构的解决方案: EnsembleLauncher 让局部经理来处理这些琐碎的交谈。工人只与他们的局部经理沟通,而局部经理再向上级沟通。这使得那些微小任务的等待时间从 27.6 秒骤降至仅 1.9 秒 。
“智能”调度器:没有“一刀切”
论文还指出,你不能只用一种规则来管理所有的任务。有时你需要先做最大的任务;有时你需要先做最快的任务。
实验: 他们测试了针对各种规模和耗时差异极大的任务(有些耗时 0.1 秒,有些则超过 1,500 秒)的不同“规则”。
结果: 他们发现,对于具有高度差异性(既有极快的,也有极慢的)的任务,选择正确的规则至关重要。使用“最大优先”或“最长优先”规则,比单纯按任务到达的顺序执行(FIFO)能显著缩短总耗时。
灵活性: EnsembleLauncher 允许科学家插入他们自己的自定义规则。在一次模拟真实科学工作流(称为 MOFA)的测试中,使用一种将任务路由到最闲置团队的“智能”规则,其完成速度比那种强制将所有小任务挤在计算机某个特定角落的僵化规则快了 两倍 。
他们尚未解决的问题(目前)
论文非常明确地说明了他们尚未 解决的问题。
“掉队者”问题(Straggler Problem): 如果树的一个分支被一个缓慢的任务卡住了,系统目前无法轻易地“窃取”该任务并将其交给更快的另一个分支。他们建议将此作为未来的研究方向。
“单节点”崩溃问题: 如果一个经理节点失效,系统目前必须重启该节点下方的整个 分支,而不仅仅是那一个损坏的部分。他们承认这是一个局限性。
规模限制: 虽然他们测试到了 8,192 个节点 ,但论文指出这只是他们所用机器的上限,而非其软件的极限。他们怀疑规模可以更高,但尚未对此进行实测。
总结
这篇论文表明,为了应对未来大规模、混合型的复杂工作流(即 AI 与超级模拟协同工作的时代),我们不能再使用扁平的、单一老板的系统。通过构建一个深层的、递归的经理树,并让科学家能够选择自己的调度规则,我们可以让超级计算机的工人们保持忙碌,让整个制作流程持续推进。这不仅仅是一个新工具,更是一种关于如何组织数百万数字军队的新思维方式。
技术摘要:克服超大规模规模下的编排瓶颈
问题陈述
科学计算正在从单体应用向耦合的模拟-人工智能(Sim-AI)工作流转型。这些工作流由高度异构的任务组成,涵盖了从短时运行的串行推理(亚秒级)到长时运行的多节点 MPI 模拟(数千秒)等多种类型。随着这些工作流向领导级超大规模系统(如 Aurora、Frontier)扩展,它们会产生极端的集成规模(数百万个并发任务)和极高的任务时长方差。
目前的编排方法面临两个主要瓶颈:
系统级调度器: 诸如 Slurm 和 PBSPro 之类的工具针对大型分配进行了优化,但在处理数百万个小型动态任务所需的极高吞吐量方面表现不佳,往往会导致调度瓶颈。
用户空间工作流工具: 现有的框架通常依赖于中心化的控制平面,这在规模扩大时会产生序列化瓶颈。虽然存在去中心化的工具,但许多工具缺乏对多节点 MPI 应用的原生支持,或者存在陡峭的学习曲线。此外,大多数工具缺乏可编程的调度接口,导致领域科学家无法注入特定的运行时策略来解决特定的工作流瓶颈。
方法论:EnsembleLauncher
为了应对这些挑战,作者开发了 EnsembleLauncher ,这是一种为超大规模 Sim-AI 集成设计的递归分层式工作流编排器。
架构设计
EnsembleLauncher 采用完全去中心化的控制平面,其结构为一个递归树:
管理器(Managers): 管理子树(全局管理器作为根节点,子管理器作为中间节点)。它们负责粗粒度的任务路由和资源划分。
启动器(Launchers): 作为叶节点和主要的执行引擎。它们负责细粒度的任务排序和执行。
混合推拉模式(Hybrid Push-Pull Mode): 系统支持混合架构,其中上层使用**静态划分(Push)以最小化控制平面的通信,而底层则使用 动态负载均衡(Pull)**通过工作窃取(work-stealing)来缓解执行时间偏差。
核心组件
可编程调度接口: 系统在两个层面暴露了策略接口:
子节点调度器(管理器层面): 决定任务路由和资源划分(S i + 1 = f ( S i , T , N , d ) S_{i+1} = f(S_i, T, N, d) S i + 1 = f ( S i , T , N , d ) )。
任务调度器(启动器层面): 决定调度队列中的任务顺序(P = f ( T , S ) P = f(T, S) P = f ( T , S ) )。
这些接口允许用户实现自定义启发式算法(例如 FIFO、最短优先、最长优先),而无需修改核心编排器。
执行器抽象(Executor Abckstraction): 一个无状态层,将编排状态与执行机制解耦,支持 Python 进程池、线程池和 MPI 进程池。这使得可以对串行任务和 MPI 任务进行协同调度。
容错机制: 每个编排器维护一个本地检查点。故障会触发受影响子树的局部拆解和重启,并通过心跳机制检测无响应的子节点。
评估设置
实验在 Aurora 超级计算机(10,624 个节点,Intel Xeon Max CPU,Intel 数据中心 GPU)上进行。评估将 EnsembleLauncher 与最先进的工具(Dask、Parsl)以及原生 MPI 基准进行了对比,涵盖:
微基准测试: 单节点吞吐量和延迟。
扩展性测试: 在高达 8,192 个节点上进行弱扩展(工作量随节点数比例增加)和强扩展(固定工作量,增加节点)测试。
策略敏感性: 分析控制平面拓扑对吞吐量的影响,以及不同调度策略对异构工作流的影响。
关键结果
1. 可扩展性与吞吐量
超大规模扩展性: EnsembleLauncher 成功扩展至 8,192 个节点 并处理了 800 万个串行任务 。
性能增益: 在 2,048 个节点时,即使对于长持续时间(60秒)的任务,其表现也优于最先进的工具(Parsl 和 Dask)超过 4 倍 。
拓扑与实现的关系: 受控实验表明,控制平面拓扑 是决定吞吐量的主要因素,而非特定的框架实现。当 Dask 和 Parsl 配置为相同的单层层次结构时,它们表现出几乎相同的扩展行为和失效点。
分层优势: EnsembleLauncher 中的两层层次结构(深度=2)消除了在单层配置中会导致工人饥饿的控制平面饱和问题,保持了近乎理想的强扩展性。
2. 延迟
调度延迟: 在单节点测试中,EnsembleLauncher 实现了 3ms 的中值往返延迟(仅启动器)和 4ms 的延迟(管理器-启动器)。这显著低于 Dask(10ms),并且远低于典型 Sim-AI 推理任务(数十至数百毫秒)的持续时间。
开销: 虽然每个层次结构都会增加约 1ms 的延迟,但与科学任务的执行时间相比,这种开销是可以忽略不计的。
3. 调度策略的影响
异构工作流: 在具有高时长和资源需求方差的“任务包”实验中,随着方差的增加,**最长优先(Largest First)和 最长优先(Longest First)**策略比 FIFO 显著缩短了总执行时间。
Sim-AI 流水线: 在一个 MOFA 工作流原型中,**自适应(Adaptive)**路由策略(动态路由至负载最低的子节点)比静态划分或均匀策略实现了 2 倍更高的 GPU 利用率 并缩短了执行时间。静态划分导致了某些节点被串行任务饱和,从而阻塞了后续的流水线阶段。
意义与主张
论文声称 EnsembleLauncher 通过将架构范式从中心化控制转向递归分层、去中心化模型 ,有效地克服了超大规模 Sim-AI 工作流中的编排瓶颈。
其核心贡献包括:
证明了拓扑主导地位: 证明了控制平面拓扑是实现扩展性的关键因素,而非底层的实现语言或特定的调度算法。
可扩展性: 在 8,192 个节点上的吞吐量超过现有最先进工具 4 倍,能够执行包含多达 800 万个任务的集成。
可编程性: 提供了一个可编程接口,允许领域科学家根据特定工作负载特征(如高方差、混合 MPI/串行任务)定制调度和路由策略,而无需修改编排器代码。
协同调度: 成功集成了细粒度串行推理任务和大规模多节点 MPI 模拟在单一工作流中的执行。
作者总结道,虽然 8,192 个节点代表了 Aurora 的最大分配,但系统的设计表明这并非 EnsembleLauncher 的扩展极限。未来的工作旨在集成模型上下文协议(MCP)接口,以支持 LLM 驱动的智能体工作流,并探索能够运行时调整启发式算法的 AI 驱动调度策略。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。