日期:2026-09-20
我们私有化环境里 GPU 就那么十几张,训练团队和推理服务抢得厉害。训练任务一提交就占满卡跑几天,在线推理被挤到没资源,高峰期客服问答直接超时,业务方投诉。训练的同学也委屈,任务排队排到第二天。
没池化前,训练同学占满卡跑实验,推理半夜高峰被挤,客服问答超时,两边互相埋怨,其实都是资源没调度,卡在空转也在荒废。资源就这么多,得有人调度,不然两边都觉得对方占了便宜,矛盾只会越积越多。
池化后我们还接了监控大盘,每张卡的利用率、在跑任务、排队长度一目了然,之前谁占着卡全靠猜,现在浪费一眼看得见。倒逼训练同学自己也优化,卡不荒废,账也算得清。
我们做了 GPU 资源池化,把所有卡收进一个池子统一分配。场景分两类:在线推理要求低延迟高可用,训练任务可以等。我们上了任务排队加优先级调度,推理服务标最高优先级常驻保底资源,训练任务排队,空闲算力才分给它,必要时还能被推理抢占。
优先级调度我们一开始不敢让训练被抢,怕白算,后来加了 checkpoint 断点续跑,抢占的代价可控了才敢放开,在线推理这才保住。配合弹性扩缩容,低峰把卡让给训练,高峰推理抢回,资源跟着业务节奏走而不是反过来。
推理保底配额我们按业务峰值设,大促前临时调高,平时收回给训练,资源跟着业务走,财务看账单也觉得这钱花得明白。不像以前黑盒,审批也好说话,扩容申请也撤了。
资源池化我们给老板算过明细账,同样十几张卡之前只跑单边现在跑双边,等效算力翻倍,扩容申请直接撤了,省下的预算挪去补训练卡,训练同学也满意。一笔钱办了两件事,账算得过来,老板才点头。我们还做了监控大盘让每张卡利用率一目了然,训练同学也被倒逼自己优化,浪费少了。在线推理最高优这条红线守住了,体验和成本才不打架,账算得过来,财务也认。
训练同学看到大盘后也开始自己错峰提交,资源利用率上来了,吵架少了,调度从对抗变成协作,这点我们没想到但很受用,团队氛围都好了。
第一个问题是优先级设错会饿死推理。我们一开始把训练和推理设成平级轮转,结果训练长任务占着不让,推理排队超时。改成推理最高优加保底配额,训练可抢占,才两全。第二个坎是碎片利用,小模型塞不满一张卡。
碎片利用那块,我们把小推理实例按显存切四份共卡,单卡从装一个模型到装三四个,闲卡基本消失,总吞吐也跟着上来。第三个坎是抢占的代价,训练被抢要能断点续跑,否则白算,我们接了 checkpoint 机制,抢之前先存进度,代价才可控。
小推理实例共卡后,我们做了显存水位限流,单卡快满就拒绝新实例,避免互相挤爆,这块是踩过一次 OOM 把所有实例拖垮后才加的。稳了才敢放开,碎片也吃得下。
资源池化后,GPU 平均利用率从约 45% 提到 78%,闲卡基本没了。在线推理的排队延迟从高峰有时十几秒压到秒级,超时告警归零。训练任务平均等待时间反而降了,因为碎片被吃掉了,总吞吐上来了。
低峰把卡让给训练后,训练等待反而短了,因为碎片被吃满,同样十几张卡支撑的业务量涨了近一倍,没再申请扩容。一个季度下来,老板终于满意,既保了在线体验又没浪费闲时算力,账算得过来。
训练任务排队我们按部门配额,不能让一个大团队占满,小团队永远排不上,配额公开后抢卡吵架的事少了一大半。调度从人治变规则,公平也看得见,训练同学也不抱怨了。
GPU 池化先要是分清楚在线和离线,在线推理必须最高优加保底,不然体验守不住。训练任务要能抢占且能断点续跑,否则抢占的代价比收益大,这点我们踩过才敢放开。显存算力细粒度切分很重要。
GPU 调度最怕一刀切轮转,在线推理必须保底最高优,训练可抢占但要能续跑,体验和资源才不打架,利用率才真有意义。小模型共卡才能吃掉碎片,别一张卡只装一个模型,那样闲时就是在烧钱。
GPU 调度我们每月复盘一次优先级,业务变了权重跟着调,但在离线分清这条底线没动过。在线推理最高优是红线,踩过饿死推理的坑才守得住,这条没妥协,体验才稳。
案例片段(已脱敏): 某金融私有化环境,16 张推理卡。我们的资源池与优先级调度配置片段:
队列: online(优先级P0, 保底配额40%) | train(优先级P1, 可抢占) 抢占: train被抢前 trigger checkpoint -> 续跑 切分: 单卡按显存切 4 份, 小推理实例共卡 扩缩: 低峰 train 吃满剩余60%, 高峰 online 抢回上线后 GPU 利用率 45%->78%,推理排队峰值从 14s 降到 1.2s,训练等待反而短了。