Page 166 - 《软件学报》2025年第4期
P. 166
1572 软件学报 2025 年第 36 卷第 4 期
考虑并加以利用. 这些特性可划分为运行特性与资源使用特性两类. 其中, 任务运行特性为任务周期迭代性, 而任
务资源使用特性则包括以下 3 类: 任务性能异构性、任务弹性部署性、任务放置拓扑敏感性. 特性的具体解释如
下所述.
● 任务周期迭代性 [20] . 深度学习训练表现为一个周期性的、迭代式的算子计算过程. 每次迭代都计算一个批
次 (batch) 的训练数据, 计算量较为固定, 因此表现出较强的周期迭代性. 这一特性是深度学习训练任务性能建模
的理论基础: 可通过对深度学习训练的单个迭代周期进行性能建模, 然后将其推广至整个训练过程. 同时, 只要资
源配置不变, 任务吞吐率也具有稳定性. 因此, 调度过程无需担心任务性能模型随时间变化.
● 任务性能异构性 [7,21] . 深度学习训练在不同的硬件上表现出明显的性能异构性. 由于不同代际 GPU 在架构、
核心频率、核心数量上存在差异, 训练时可能会产生数十倍的性能差异. 此外, 不同任务的性能加速比也存在显著
差异. 除了 GPU, CPU、内存等其他硬件也会影响数据预处理与传输速度, 从而对性能产生一定影响.
● 任务弹性部署性 [22] . 深度学习训练任务在运行期间可以弹性地调控资源分配量以及任务超参数. 通过数据
并行, 深度学习训练可利用多块 GPU 进行分布式训练, 并根据需要弹性地调整 GPU 使用数量. 如图 2(a) 所示, 在
非弹性部署下, 任务 2 需要排队等待资源释放; 而在弹性部署下, 任务 1 可以通过弹性减少资源占用, 使任务 2 能
1.3 任务调度如何利用性能建模优化调度效果
立即运行. 图 2(b) [22] 展示了 ResNet18 [23] 在不同 GPU 分配量和 batch size 下的吞吐率. 可以看出, 随着 GPU 数量的
增加, 训练速度会加快, 但其吞吐率增长会逐渐放缓, 表现出边际效应. 而不同 batch size 的资源利用率不同, 从而
影响性能. 因此, 调度方法需要根据任务性能模型和集群资源容量来智能地弹性调整 batch size 与 GPU 数量, 以提
高集群的整体训练效率.
Batch size: 512
非弹性部署 弹性部署 1.0 Batch size: 2 048
归一化吞吐率 0.6
任务 1 任务 1 0.8
… …
任务 1 任务 1 任务 2 0.4
0.2
时间 任务 2 排队等待 弹性减少
任务 1 1 2 4 6 8 12 16
GPU 用量
GPU 数量
(a) 弹性部署示例 (b) ResNet18不同GPU数量的归一化吞吐率
图 2 任务弹性部署性
● 任务放置拓扑敏感性 [24] . 不同的任务放置拓扑会对通信速度产生影响, 进而影响训练性能. 如后文图 3(a) 所
示, 松散放置导致跨节点任务间的网络通信效率降低, 而密集放置则通过节点内高速总线提升效率. GPU 间通信
方式多样, 包括 NVLink、PCIe x16、PCIe 主桥、QPI 总线或网络. 它们的带宽差异极大, 例如第 3 代 NVLink 带
宽可达 600 GB/s [24] , 而普通网络带宽仅有 1 GB/s. 同时, 训练模型对通信带宽的需求有差异. 如图 3(b) [25] 所示,
ResNet50 [24] 在跨 PCIe x16、PCIe 主桥、QPI 总线通信时的性能差距较小, 而 VGG16 [26] 则表现出显著的差距. 因
此, VGG16 对放置拓扑敏感性更高. 当通过网络进行通信时, VGG16 与 ResNet50 都显示出较高的性能损失.
性能建模在调度优化中具有至关重要的作用. 与对性能无感知的调度方法相比, 具备性能感知能力的调度方
法能够预测任务执行后的性能, 从而有针对性地设计调度优化策略. 具体来说, 可通过优化任务排序、优化放置拓
扑、优化异构分配和优化弹性部署的策略, 显著提升调度效果. 本节以优化任务排序为例, 探讨如何利用性能建模
来增强任务调度的效果.
实验采用了 Tiresias [27] 提出的 SRSF (shortest-remaining-service-first) 调度方法, 其核心目标是提高任务的完成
效率. 该方法优先选择剩余服务时间最短的任务执行, 旨在避免队头阻塞, 从而加速任务完成. 为了计算剩余服务