AntMan:Dynamic Scaling on GPU Clusters for Deep Learning

杨镇源 于 2024-11-20 发布 浏览量

AntMan: Dynamic Scaling on GPU Clusters for Deep Learning

原文

摘要

AntMan利用深度学习训练的独特特性,在深度学习框架内引入了针对内存和计算的动态扩展机制。这种机制能够实现任务间的细粒度协调,并避免任务干扰,从而提高GPU的内存利用率和计算利用率。

背景

深度学习训练

深度学习的训练过程通常由数百万次迭代组成,每次迭代处理少量样本,这些样本被称为小批量(mini-batch)。通常情况下,训练一个小批量样本可以分为以下三个阶段:

前向传播的计算输出通常包含许多数据,每个数据单元称为张量(tensor)。这些张量需要暂时保存在内存中,供反向传播计算梯度时使用。此外,为了监控模型在训练过程中的质量,训练中会定期触发评估操作。

现状

GPU低利用率出现的原因:

基于MPS的打包策略不好,原因在于:

因此,目前的生产GPU集群通常采用资源独占分配的方式,避免资源竞争和性能下降的风险:

数据并行训练

为了训练大规模数据集,深度学习通常采用数据并行性(data parallelism),在多个GPU上进行任务分布:

观察

文章通过实验,论述Key Insight:大部分模型本身占用的显存并不多,使用的显存多来自mini-batch过程中,在单个mini-batch中会被申请和释放。文章中所有的design基本都是围绕这一Key Insight展开的。

模型规模和小批次(mini-batch)训练过程中的特点:

设计

文章联合设计了调度器和框架,让框架来在训练任务的角度支持显存和算力的动态调整,然后让调度器从集群的角度利用这一新的特性进行更有针对性的调度。

框架上

内存

GPU内存的动态扩展:GPU内存是DL作业中最稀缺的资源,其分配通常面临以下问题

计算

在计算方面,如果多个任务运行在同一个GPU上时,主要会带来GPU Kernel的排队延迟,和PCIE总线带宽的争抢。以下图(a)和(b)来说,B任务影响了A任务原本的执行,为了解决这个问题,Antman在框架层引入了GPU Op Manager。在原本的设计中,一旦Kernel的控制依赖被满足了,就会被执行。GPU Op Manager接管了原本的流程,它会控制GPU Kernel被issue的频率。因为GPU Op Manager只会管控GPU Kernel,因此CPU的Op可以照常被执行,不会被Block。如下图(c)所示,满足了依赖的CPU Op可以在GPU Op没有被执行的时候照常执行,不会受到GPU Op Manager的影响。

GPUop

调度器上

在调度器的设计上,Antman并没有采取Monolithic的架构,而是存在两个角色:Global Scheduler和Local Coordinator。

其中全局的调度器负责进行任务的调度

而Local Coordinator主要负责根据深度学习的训练任务的执行情况(任务情况,硬件指标,mini batch的执行时间,显存和内存的使用情况等),管理训练任务的全生命周期

scheduler

Antman根据SLA把任务分为resource-guarantee和opportunistic两种任务,其中前者需要保证与独占GPU卡类似的训练速度。Antman的设计目标是在保证resource-guarantee类型任务的SLA的同时,提高集群的利用率opportunistic类型的任务主要就是用来提高集群利用率的。

全局调度器的调度算法比较简单,如下图所示。首先调度器会根据拓扑,获得一个最优的节点组合。这一步与业界主流基本一致,尽可能考虑到NVLink等硬件资源的拓扑结构,进行分配。如果是resource-guarantee的任务,有合适的节点就会直接运行。对于opportunistic类型的任务,Antman会找到负载最低的节点,去执行。

algorithm

Local Coordinator最主要的职责是管理在共享的GPU上训练任务。在Antman中,一个GPU只会被分配给一个resource-guarantee的任务。所以当有opportunistic的任务已经在GPU上运行时,为了满足新来的resource-guarantee任务,Local Coordinator会限制opportunistic任务使用的 SM 和显存。随后慢慢提高opportunistic的限制,确保在不影响resource-guarantee任务的训练速度(mini batch 的耗时)的同时,提高opportunistic的资源限额。