[论文解读] Balsam: Automated Scheduling and Execution of Dynamic, Data-Intensive HPC Workflows
Balsam 是一个工作流管理系统,通过使用 pilot launcher 将异构任务打包为自适应集合作业,自动调度和执行动态、数据密集型的 HPC 工作负载。它无需修改代码即可实现容错、负载均衡的串行和并行程序执行,提高了资源利用率,并在大规模任务活动中减少了脚本编写开销,如在超参数调优和量子化学工作流中的演示所示。
We introduce the Balsam service to manage high-throughput task scheduling and execution on supercomputing systems. Balsam allows users to populate a task database with a variety of tasks ranging from simple independent tasks to dynamic multi-task workflows. With abstractions for the local resource scheduler and MPI environment, Balsam dynamically packages tasks into ensemble jobs and manages their scheduling lifecycle. The ensembles execute in a pilot "launcher" which (i) ensures concurrent, load-balanced execution of arbitrary serial and parallel programs with heterogeneous processor requirements, (ii) requires no modification of user applications, (iii) is tolerant of task-level faults and provides several options for error recovery, (iv) stores provenance data (e.g task history, error logs) in the database, (v) supports dynamic workflows, in which tasks are created or killed at runtime. Here, we present the design and Python implementation of the Balsam service and launcher. The efficacy of this system is illustrated using two case studies: hyperparameter optimization of deep neural networks, and high-throughput single-point quantum chemistry calculations. We find that the unique combination of flexible job-packing and automated scheduling with dynamic (pilot-managed) execution facilitates excellent resource utilization. The scripting overheads typically needed to manage resources and launch workflows on supercomputers are substantially reduced, accelerating workflow development and execution.
研究动机与目标
- 解决在领导级系统上缺乏灵活、用户友好的作业调度与执行工具的问题,以应对动态、数据密集型的 HPC 工作流。
- 减少传统上管理超级计算机大规模任务活动所需的脚本编写和配置开销。
- 支持运行时动态工作流,允许任务在运行时被创建或终止,以支持复杂且不断演化的计算活动。
- 通过动态将任务打包为与本地调度策略一致的集合作业,提高资源利用率。
- 在不修改应用程序代码的情况下,为大规模、多用户的 HPC 活动提供容错机制和溯源追踪。
提出的方法
- 采用服务-数据库-启动器的架构,使用 Python 和 Django ORM 管理集中式任务数据库,以维护工作流状态和溯源信息。
- 自动将资源需求相似的任务分组为动态大小的集合作业,以匹配调度策略并提高吞吐量。
- 采用 pilot 启动器应用程序执行集合作业,管理异构串行和 MPI 并行任务的并发执行。
- 通过隔离任务级故障并提供可配置的恢复机制,实现容错,且无需修改用户应用程序。
- 通过抽象接口与本地调度器(如 SLURM、LSF)集成,实现无缝的任务提交和生命周期管理。
- 提供命令行和 Python API,用于工作流创建、监控和动态修改,包括实时任务生成和终止。
实验结果
研究问题
- RQ1如何在最小用户配置下实现动态、数据密集型 HPC 工作流的调度与执行,并实现最大资源利用率?
- RQ2在具有严格调度策略的领导级 HPC 环境中,自动将作业打包为集合作业在多大程度上能提高吞吐量?
- RQ3基于 pilot 的启动器架构是否能实现无需修改应用程序代码的异构、混合并行任务的高效、容错执行?
- RQ4Balsam 在多大程度上减少了大规模、高吞吐量计算活动的开发和运维开销?
- RQ5与手工优化的批处理脚本相比,Balsam 的自动化层的性能开销如何?
主要发现
- Balsam 显著减少了脚本编写开销,仅用不到 60 行 Python 代码就完成了 1600 个点的量子化学势能面计算。
- 系统通过在 128 个节点上负载均衡 1600 个两节点 MPI 任务,实现了优异的资源利用率,证明了有效的集合打包与调度。
- 在 Theta 系统上,Balsam 的表现优于典型的手工编写的集合作业脚本,后者每秒仅能启动一个 aprun,表明其运行时开销极低。
- 系统支持运行时动态工作流,允许任务在运行时被创建或终止,从而实现对工作负载变化的自适应执行。
- 任务历史和错误日志等溯源数据自动存储在数据库中,支持完整活动的可重现性和调试。
- 现有二进制文件(如 NWChem)无需代码修改即可集成到工作流中,证实了系统的透明性与应用透明性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。