Deep Learning (DL) workloads have rapidly increased in popularity in enterprise clusters and several new cluster schedulers have been proposed in recent years to support these workloads. With rapidly evolving DL workloads, it is challenging to quickly prototype and compare scheduling policies across workloads. Further, as prior systems target different aspects of scheduling (resource allocation, placement, elasticity etc.), it is also challenging to combine these techniques and understand the overall benefits. To address these challenges we propose Blox, a modular toolkit which allows developers to compose individual components and realize diverse scheduling frameworks. We identify a set of core abstractions for DL scheduling, implement several existing schedulers using these abstractions, and verify the fidelity of these implementations by reproducing results from prior research. We also highlight how we can evaluate and compare existing schedulers in new settings: different workload traces, higher cluster load, change in DNN workloads and deployment characteristics. Finally, we showcase Blox's extensibility by composing policies from different schedulers, and implementing novel policies with minimal code changes. Blox is available at \url{https://github.com/msr-fiddle/blox}.
翻译:深度学习(DL)工作负载在企业集群中的应用迅速普及,近年来涌现出多种新型集群调度器以支持这些工作负载。随着DL工作负载的快速演进,如何快速原型化并比较不同工作负载下的调度策略成为挑战。此外,由于现有系统针对调度中的不同方面(资源分配、放置、弹性等),组合这些技术并理解其整体收益同样存在困难。为应对这些挑战,我们提出Blox——一个模块化工具包,允许开发者组合独立组件以实现多种调度框架。我们识别了DL调度的一组核心抽象,利用这些抽象实现了若干现有调度器,并通过复现前人研究成果验证了实现的准确性。同时,我们展示了如何在全新场景下评估和对比现有调度器:包括不同工作负载轨迹、更高集群负载、DNN工作负载变化以及部署特征。最后,我们通过组合来自不同调度器的策略、以及仅需极少量代码修改即可实现新策略,充分验证了Blox的可扩展性。Blox开源地址为\url{https://github.com/msr-fiddle/blox}。