HiveD 是深度学习工作负载的调度程序。
作为 Microsoft OpenPAI 的一个独立组件,HiveD 被设计为用于多租户GPU集群的 Kubernetes 调度程序扩展器。多租户GPU集群假设多个租户(团队)在单个物理集群(PC)中共享同一个GPU池,并为每个租户提供一定的资源保证。 HiveD将每个租户建模为一个虚拟集群(VC),这样一个租户可以像私有集群一样使用自己的VC,同时也可以以较低的优先级使用其他VC的空闲资源。
HiveD 为深度学习工作负载提供了以下几个关键功能。
HiveD 的杀手级功能是它为每个 VC 提供资源保证,不仅在数量、数值方面,而且在拓扑方面,这是基于 GPU 的训练作业的关键要求。例如,传统的调度器保证一个VC可以使用8个GPU。但是,它不知道这 8 个 GPU 的拓扑。即使 VC 仍有 8 个空闲 GPU,也可能无法分配必须在单个节点内运行的 8-GPU 训练作业。这是因为这 8 个空闲 GPU 可能属于多个节点。
HiveD 根据cell保护 VC 资源,cell 是一种用户定义的资源类型,对数量和其他类型的信息(例如拓扑和硬件类型)进行编码。在上面的示例中,用户可以定义8-GPU节点的单元类型,并且可以为VC分配这样的单元之一。然后,HiveD 将确保始终有一个 8-GPU 节点可用于 VC ,而不管集群中的其他工作负载如何。
HiveD 允许灵活的单元定义,以实现细粒度的资源保证。例如,用户可以针对不同的设备型号(例如,NVIDIA V100 GPU、AMD Radeon MI100 GPU、Cloud TPU v3)或网络配置(例如,InfiniBand 域)在多个拓扑级别(例如 PCI-e 交换机)定义单元。 。一个VC可以有多种类型的cell,HiveD会保证所有的cell。
HiveD 优化了组调度的性能,这是深度学习训练作业的典型调度要求,其中应在训练作业开始之前分配所有容器。多个团伙调度的作业竞争同一组资源可能会导致饥饿,其中每个作业只能获得部分资源并且必须无限期等待。
HiveD 以事务方式调度作业中的所有容器,即所有这些容器的要求将作为一个整体被授予或拒绝,从而避免部分资源分配和饥饿。
HiveD 支持多个作业优先级。较高优先级的作业可以抢占较低优先级的作业。 HiveD还引入了机会性作业,即优先级最低的作业,可以在可能的情况下使用其他VC的免费资源(不破坏对其他VC的资源保证)。
多租户:虚拟集群 (VC)
细粒度VC资源保障:数量、拓扑、类型、固定VC资源等。
灵活的VC内调度:拓扑感知、灵活的硬件类型、固定VC资源、调度策略定制等。
优化资源碎片并减少饥饿
优先级、低优先级的过度使用以及 VC 间/VC 内抢占
作业(全部/部分)组调度/抢占
容错、不良硬件感知、工作保留重新配置
云上或本地的 Kubernetes 集群,v1.14.2 或更高版本。
配置调度程序
运行调度程序
将工作负载提交给调度程序
用户手册
功能演示
设计
DockerHub
FrameworkController:通用 Kubernetes Pod 控制器,可以轻松利用 HiveD 来调度作业。
OpenPAI:完整的AI平台解决方案。 HiveD 与 OpenPAI 配合使用时将更加用户友好。
该项目欢迎贡献和建议。 大多数贡献都要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地装饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。
如果 HiveD 对您的研究有帮助,请在您的出版物中引用它:
@inproceedings {hived-osdi2020, author = {Hanyu Zhao and Zhenhua Han and Zhi Yang and Quanlu Zhang and Fan Yang and Lidong Zhou and Mao Yang and Francis C.M. Lau and Yuqi Wang and Yifan Xiong and Bin Wang}, title = {{HiveD}: Sharing a {GPU} Cluster for Deep Learning with Guarantees}, booktitle = {14th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 20)}, year = {2020}, isbn = {978-1-939133-19-9}, pages = {515--532}, url = {https://www.usenix.org/conference/osdi20/presentation/zhao-hanyu}, publisher = {{USENIX} Association}, month = nov, }