为什么智能GPU调度对现代AI工作负载至关重要
现代AI程序已经从探索性试点转变为具有严格SLA和成本目标的生产流程。随着集群规模的扩大,两个问题反复出现:闲置容量和不可预测的队列时间。当分数GPU分散在各个节点时,多GPU训练作业无法适应;当放置忽略互连拓扑时,昂贵的加速器因I/O而停滞。智能GPU调度通过将作业形状与正确的容器对齐,尊重拓扑结构,并将运行时信号反馈到放置和自动扩展中,解决了这两个问题。回报是更高的吞吐量,更稳定的迭代周期,以及每个实验更可预测的成本。
从实验到生产目标
保持目标简单且可衡量:活跃GPU上的流式多处理器利用率,高峰负载下的中位数和95百分位数队列时间,以及每次成功运行的成本。将这些与SLOs挂钩,并每周审查;将回归视为事件。
GPU利用率的瓶颈
当分数切片分散得很少时,就会出现碎片化;“几乎适合”变成了“无法启动”。内存带宽和互连不匹配默默地限制了训练。冷工件获取和数据集停滞浪费了宝贵的GPU分钟。智能调度器和预热缓存填补了这些差距。
吞吐量和成本的业务成果
拓扑感知放置和明确的排队策略使更多的实验通过相同的硬件进行。开发人员更快地发货,财务看到更稳定的支出,平台团队可以用硬数字证明容量的合理性。
AI基础设施堆栈的架构和GPU资源模型
一个有效的AI基础设施堆栈层次清晰,并将调度视为控制平面和数据平面之间的合同。关键是在不隐藏对放置重要的信号的情况下抽象异构性。
堆栈的分层视图
在底部:加速器、主机和互连。在它们之上:虚拟化以确保安全的租赁,然后是容器以包装作业。数据和工件服务为训练和推理提供支持。在顶部:服务、可观察性和治理。每一层都应该提供足够的元数据——GPU型号和内存、NVLink岛、数据集位置、策略标签——以便调度器可以做出高保真度的决策。
控制平面和数据平面的责任
控制平面拥有准入、优先级、配额和策略;数据平面执行、报告健康状况,并导出细粒度的指标。避免隐藏的节点本地脚本,这些脚本默默地覆盖了上游做出的决策——使队列和策略中的调度行为明确。
GPU资源模式和共享模式
全设备分配对于饱和内存带宽的大型训练来说仍然是最佳选择。分数模式——MIG类硬分区或MPS风格的上下文共享——对于推理和小微调来说效果显著。时间切片适用于突发性评估任务。在ZStack Cloud中,管理员可以将GPU作为物理设备(pGPU)或虚拟设备(vGPU)呈现,并根据设备切换共享范围,这自然地映射到不同租户和工作负载的基于类别的提供。在GPU设备页面上,您将看到pGPU和vGPU列表、状态、附件以及每个设备的详细信息,如利用率、内存、温度和功率——这些信号对于智能放置很有用。
隔离、QoS和基于类别的提供
定义一组小型GPU类别(例如,A100全、A100 MIG 1g、L4分数),具有明确的QoS和配额。项目请求类别,而不是原始设备ID,简化了公平性和展示。在数据隔离至关重要的地方,将租户保持在单独的VM或节点边界上,并仅在这些护栏内使用共享模式。
Kubernetes上的调度和并行策略
当其原语为AI调整时,Kubernetes是一个强大的控制织物。
将AI意图映射到调度原语
作业声明GPU、CPU、内存和临时存储请求;亲和性和污点将Pod引导到兼容节点;拓扑分布约束平衡热点。准入控制器可以自动注入默认值,以便用户专注于模型逻辑而不是YAML细节。
拓扑感知放置
并非所有链接都是相等的。保持张量并行等级在同一NVLink岛上,并使CPU页面与正确的NUMA节点对齐,通常会带来两位数的吞吐量增益。通过节点标签显示NVLink/PCIe分组,并让调度器偏向于共位等级。
帮派调度、回填和抢占
如果作业的一部分启动失败,分布式训练就会失败。帮派调度在所有等级可以启动之前保留资源。回填在帮派等待时有机会运行较小的作业。优先级和抢占确保释放阻塞的重训练不会饿死,前提是您在长时间运行的作业中进行检查点。
数据/张量/管道/专家并行
数据并行支持大批量;张量和管道并行分割不适合内存中的模型;专家(MoE)架构受益于分片感知放置。为每个提供模板,以便用户选择策略,而不是从头开始组装
返回列表