侧边栏壁纸
博主头像
蜉蝣的博客博主等级

行动起来,活在当下

  • 累计撰写 39 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Taming Flexible Job Packing in Deep Learning Training Clusters

蜉蝣
2025-09-18 / 0 评论 / 0 点赞 / 12 阅读 / 4974 字

  • TACO 25

  • 作业打包

引入

  • 背景

    • GPU集群成为DL基础设施,好的调度器提升集群效率

    • 任务打包是提升集群利用率的关键

  • 问题

    • 当前打包策略过于保守

      • 仅打包低干扰任务,否则性能严重退化

      • 仅打包GPU需求相同的任务,否则出现Stragger拖慢整体训练

    • LLM广泛应用,保守打包策略无法灵活应对小大模型混部场景

  • 分析

    • 当前调度器只关注作业级资源分配与打包决策,缺少对任务打包执行时负载平衡等的细粒度调整

  • Gimbal

    • 集群调度器和硬件之间的中间件

    • 通过两个校准原语,细粒度协调本地打包作业的执行,支持多种调度目标

    • 非侵入,无需修改代码

    • 贡献

      • 保守原因在于集群调度与作业打包之间的范围和粒度不匹配

      • 细粒度协调机制放宽了作业打包的保守性,从而挖掘出提升集群效率的作业打包潜力

      • 校准原语通用可拓展,支持多种调度目标

      • 效果好

背景和动机

  • DL调度

    • 筛选资源需求互补的任务协同调度

  • 释放打包潜力

    • 以往算法仅打包干扰可忽略且GPU等资源需求一致的任务,保守

    • 自由竞争(共置任务无资源限制)下的共置导致性能下降,使用MPS限制某个任务资源后整体JCT可能降低

    • DL任务随机到达,最优打包方案需要逐步搜索

    • 对于不均衡打包中的straggler,需要细粒度调节批次等进行均衡

  • 调度和打包的范围和粒度不匹配

    • 调度集群级,打包任务级,需要在局部细粒度调整

架构总览

架构

  • 运行时监控,worker校准器,激进的打包协调器(策略需根据目标制定)

工作流

  • 在上层任务打包策略分配共置任务到GPU后,根据运行时信息协调执行过程,以适配上层打包策略的目标

任务打包校准

校准原语与机制

校准原语

  • 针对两任务A、B共置后,A受B影响性能退化严重,限制B的资源可缩短平均JCT

    • worker.squeeze,某工作节点训练速度需要降低

    • worker.swell,某工作节点训练速度需要提高

实现机制

  • LGRR,底层GPU资源限制

    • 通过MPS,限制worker线程资源,调整粒度为10%GPU总资源

  • LISS,输入样本窃取

    • 借鉴LB-BSP,快速节点从慢速节点窃取样本(32 : 32 —> 48 : 16)

校准应用

  • 映射原语到执行机制

    • 压缩/扩张当前任务指定的N个工作节点,通过LGRR调整资源,再通过LISS消除可能出现的stragglers

    • 压缩N个工作节点,扩张M个工作节点,适用作业内工作节点性能差异显著场景,通过LISS重分配样本均衡负载

  • 协调例子

优势

  • 解耦,通过校准原语构建策略,无需关注底层

  • 可以细粒度动态调整,无需重启任务,灵活

激进的作业打包

打包限制

  • 仅允许两个任务打包

  • 拓扑保障

    • 忽视拓扑关系进行分配会产生级联影响

    • 小GPU规模的任务可与大规模任务共置,同规模任务只进行均衡共置

协调策略构建

  • 通过设置局部目标函数和优先级函数,达成总体目标

局部目标和作业优先级

  • JCT:略

  • DDL:略

  • makespan:略

搜索算法(?论文描述不清)

  • 集群中已打包的作业构成独立的作业集

  • 作业集内

    • 按GPU规模划分作业集为两部分,最大规模任务和其他,其他任务集为高优先级

    • 扩张高优先级工作节点,三次无效后退出

    • 压缩低优先级工作节点,如果Jmax属于低优先级且有straggler,同时压缩高优先级工作节点,三次无效后退出

实现

通过上下文池实现低开销资源限制

  • Pytorch仅支持向主CUDA上下文(100%资源)提交内核

  • 重写CUDA上下文管理,动态创建上下文实现细粒度资源控制

    • 校准时新建上下文并删除旧上下文,需要200MB开销维持上下文池

窃取输入样本的采样器

  • 拓展Pytorch数据采样器,根据全局信息动态调整数据分配

实验

0

评论区