资源矛盾:训练要整块,推理要在线
一个 AI 企业的 GPU 集群同时承担两种负载,两种负载的资源画像完全相反。训练:长时间独占(几天到几周的连续任务——中断代价高,本库断点续训篇)、资源需求大而稳定(整机的 TP/PP 组合,本库分布式篇)、对故障敏感(checkpoint 之外的中断是损失)。推理:在线服务(用户实时访问)、资源随流量波动(白天高峰夜间低谷)、可用性是生命线(停机即故障)。矛盾的三个具体表现:资源总量的分配(训练拿多少卡、推理留多少卡)、时段的冲突(推理高峰时训练正在占卡)、故障的隔离(训练任务挤占导致推理服务的 OOM——在线服务被批任务压垮是最严重的事故形态)。训推一体的调度设计,就是要让这两种画像在同一个集群里和平共处。
模式一:静态分区——最简单也最浪费
静态分区:集群物理划分——「训练区」与「推理区」各自独立(卡不共享)。优点:隔离彻底(互不影响)、运维简单(两个小集群的管理)。致命缺点:利用率的双输——训练区的卡在训练间隙空闲(训练任务排队等待——本库 Kueue 篇的场景)、推理区的卡在夜间空闲(本库弹性伸缩篇的低谷)——两个区的空闲加起来可能占集群的 40%+。静态分区的适用:规模小、训推团队明确分离、或合规要求物理隔离的场景——简单是有价值的,浪费是有账的,小集群(几十卡)的静态分区可能仍是理性选择。
模式二:抢占式共享——Kueue 的模式
抢占式共享:资源不分区,统一调度——在线服务有优先权、训练任务可被抢占。机制:训练任务以可抢占的方式提交(Kueue 的队列 + 抢占语义)——推理容量不足时(自动扩容触发,本库弹性伸缩篇),调度器抢占训练任务的卡给推理扩容;推理低谷时,被抢占的训练从 checkpoint 恢复继续。技术的前提条件:训练任务的 checkpoint 纪律(频繁保存——本库断点续训篇:被抢占后能恢复的前提是 checkpoint 够新)、推理扩容的预测性(抢占训练是有代价的——能预测的尖峰提前抢占,突发的才被迫抢占)。抢占模式的适用:训推共享的集群的主流模式——「在线优先」的调度纪律(推理的可用性优先级最高)在 Kueue 的优先级体系里可表达。抢占的代价管理:被抢占的训练任务恢复的启动成本(本库弹性伸缩篇的权重加载——抢占的频率要控制,频繁抢占让训练进度停摆)。
模式三:弹性分区与时间分区——介于两者之间
两种中间形态。弹性分区:逻辑分区但边界可动(推理区在低谷可以「借」训练区的卡——低谷时训练的空闲卡被临时划给推理,高峰前归还)——比静态分区利用率高、比完全共享的隔离好,代价是边界管理的复杂度(借还的协调、借出期间训练任务的处理)。时间分区:按时段划分(夜间整段给训练、白天给推理——训练任务被约束在时间窗内执行)——适合「训练任务可分片」的场景(checkpoint 粒度的分片训练),代价是训练的完成时间不可控(时间窗的碎片化让训练拉长)。三种模式的选型:规模小或隔离要求高 → 静态分区;主流的共享集群 → 抢占式(Kueue);训练可分片且流量规律稳定 → 时间分区可作补充。以及一个组合的现实:大集群往往是分区 + 抢占的组合(推理区固定 + 训练区共享可抢占的弹性池)——静态保底线、弹性提利用率的两层设计。
调度的纪律与监控:让共享可持续
共享集群的调度纪律。纪律一:在线服务的资源保障是铁律——推理的容量底线(最低副本的显存)物理预留(不被抢占的硬保障),本库弹性伸缩篇的最低副本在此获得资源层的保护。纪律二:训练任务的「可抢占设计」——checkpoint 频率、单步的恢复成本、以及任务的优先级声明(哪些训练可以抢、哪些不行——优先级的分类学)。纪律三:公平的记账——训推各自的资源用量统计(谁占了集群多少、利用率多少——共享的公平性需要数据支撑,本库 FinOps 篇)。监控的重点:抢占的频率与代价(抢占太频繁 = 容量规划有问题——该扩推理区了)、训练任务的等待时间(排队的深度——训练资源不足的信号)、推理的容量水位。共享集群的终局认知:训推一体的调度,是把「GPU 集群」当成一个「资源操作系统」来设计——在线是前台进程、训练是后台批任务、调度器是内核;前台优先、后台填空、checkpoint 保命——操作系统的三定律,在 GPU 集群里一字不差地重现。
训推一体的实战案例:一个共享集群的调度配置
训推一体(正文模式)的实战案例:一个共享集群的调度配置实例。集群的画像:200 卡 H100,白天推理高峰(企业客户 API)、夜间推理低谷、训练任务持续排队。调度的配置。推理区的保障:推理的基线副本 40 卡物理预留(在线服务的铁底——本库正文的在线优先)。训练区:160 卡的可抢占池(Kueue 的队列 + 抢占语义——训练任务声明可抢占)。弹性借还的配置:夜间低谷(推理缩到基线)→ 训练可借用推理区空闲卡(借还的调度策略:低谷窗口的自动借出、高峰前 30 分钟归还——本库弹性伸缩篇的预测性配合)。优先级的矩阵:P0 在线推理(不可抢占)、P1 紧急训练(可抢占低优先训练)、P2 常规训练(可被 P0/P1 抢占)、P3 实验任务(最先被抢占)——优先级矩阵是共享集群的「宪法」。监控与复盘:抢占的频率与代价(抢占太频繁 = 推理容量规划不足——扩推理区的信号)、训练的排队深度(训练资源不足的信号——扩容或降优先级)、以及整体利用率的水位(共享的价值验证——利用率上去才有共享的意义)。实战案例的收束:共享集群的调度配置,是把「业务优先级」翻译成「调度器的语言」——翻译的准确度决定共享的成败;配置不是一次性的,随业务节奏每季度复盘。
训推一体的进阶形态:训练与推理的模型流水线
训推一体(正文)的进阶形态:训练与推理的「模型流水线」——训推不只是抢资源,还有「模型的流转」协同。模型流水线的形态。训练产出的部署流:训练完成的新模型 → 评测(本库评测篇)→ 灰度发布(本库发布篇)→ 推理服务上线——训练与推理之间是一条「模型的流水线」(数据 → 训练 → 评测 → 发布 → 服务 → 反馈 → 数据的闭环,本库 Harness 篇的经验闭环)。流水线的协同点:训练完成的通知触发评测(自动化的评测触发——本库后台 Agent 篇的事件触发)、评测通过触发灰度(评测与发布的联动)、灰度数据回流训练(线上的 bad case 进训练数据——数据飞轮的闭环,本库合成数据篇)。流水线的工程设施:模型的注册与版本管理(本库模型分发篇的仓库治理)、评测的自动化执行(本库评测篇的工具链)、发布的编排(灰度与蓝绿的自动化——本库发布篇的模式)。流水线的收束:训推一体的最高形态不是「共享资源」,是「模型的流水线」——训练的产出自动流到推理、推理的反馈自动流回训练;资源调度解决「抢卡」,流水线解决「交接」——两件事都做好,才叫真正的训推一体。
训推一体的监控:共享集群的可观测体系
训推一体(正文监控)的可观测体系:共享集群的可观测——训推共享的监控设计。监控的维度。推理侧的监控(在线服务的 SLO 指标:TTFT/TPOT/可用性——本库 SLA 篇)、训练侧的监控(训练任务的进度、checkpoint、吞吐——本库断点篇)、资源层的监控(GPU 的利用率按任务归因——哪张卡被谁用了、利用率多少——共享集群的资源归属追踪)。共享集群特有的监控点。抢占的事件追踪(抢占的频率、代价、原因——抢占的频率是容量规划的核心信号)、借还的日志(借还的窗口与量——弹性分区的运行记录)、训练的排队深度(排队的任务数与等待时间——训练资源不足的信号)。可观测的工具。DCGM + Prometheus 的 GPU 指标(本库 GPU 故障篇)、Kueue 的调度指标(抢占与队列——本库 Kueue 篇)、以及自定义的共享指标(借还事件的日志、推理与训练的利用率对比——自建的聚合面板)。可观测的收束:共享集群的可观测,比独立集群复杂一个维度——每个指标都要「归因」(这个 GPU 的利用率是推理的还是训练的),归因的准确性决定了调度的质量;可观测是共享集群的「眼睛」,没有眼睛的共享是盲目的。**
训推一体的成本效益:共享集群的利用率提升实例
训推一体的成本效益:共享集群的利用率提升实例——从静态分区到动态共享的利用率变化。改造前的状态:静态分区(训练区 120 卡 + 推理区 80 卡)——训练区夜间空闲(训练任务的间歇等待)+ 推理区夜间空闲(流量低谷)——整体的 GPU 利用率约 35%。改造后的状态:动态共享(推理基线 40 卡预留 + 160 卡可抢占池——夜间推理低谷时训练可用全部 200 卡、白天推理高峰时训练被抢占到 120 卡)——整体的 GPU 利用率提升到 60%+。提升的来源:夜间的推理空闲卡被训练使用(40 张卡 × 夜间 8 小时的算力回收)、推理低谷的弹性借还(日间的动态调整)。成本的核算:改造的工程投入(Kueue 配置 + checkpoint 纪律 + 优先级设计——约 2 周的工程)→ 200 卡集群的利用率从 35% 到 60% 相当于多了 50 张等效卡的算力——改造的 ROI 极高。这个实例的元意义:训推一体的调优,是「用工程手段把 GPU 利用率翻倍」的最直接路径——利用率每提升 10 个百分点,等价于节省 20 张 H100 的采购成本。
读者留言
COMMENTS 暂无还没有留言,来说第一句?