深言速舟 · 学习站

21 集群调度

Token 工厂拆解手册:从 GPU、推理服务到合同与现金流第四部分 推理系统约 48 分钟更新于 2026-08-04

21.1 调度分层

调度这个词在这个行业里指三件完全不同的事,谈判时必须问清是哪一层:集群编排层决定哪个节点放哪个副本,管资源配额、成组调度、抢占与回填;服务调度层在副本之间分配请求,管路由与负载均衡;引擎调度层在副本内部组批次、做 KV 准入,管延迟分布。这个区分在人才评估上尤其重要:做过万卡训练集群调度的人,熟悉的是第一层;做在线推理调度的人,熟悉的是第三层。两者在 Kubernetes 架构层面有相当程度的重合,但在核心机制上是不同物种。

图 47三层调度的职责边界
全局调度 跨地域跨集群的流量分配与容量规划集群调度 把任务放到哪台机器,资源配额与抢占引擎内调度 把请求放进哪个批次,KV 块怎么分配层级时间尺度典型技术谁负责全局分钟到小时路由 DNS 容量规划平台与商务共同集群秒到分钟Kubernetes 与调度插件平台工程引擎内毫秒连续批处理 KV 管理推理引擎团队
三层职责在小规模系统中可能合并,规模上去之后必须拆开。
他说他做过大规模调度,我要问的是哪一层。这三层是三个工种,经验不通用。

21.2 编排底座

集群层的事实标准是 Kubernetes 加一个批调度插件。原生调度器为无状态微服务设计,一个一个 Pod 独立放置;AI 负载不是这样:一个推理副本可能要八张卡同时就位才能启动,少一张就全部白等,这叫成组调度(gang scheduling)。开源生态里 Volcano、Apache YuniKorn、Kueue 都在解决这类问题,各自侧重队列与配额、层级公平或批任务生命周期。要注意编排器与服务调度器不在一层:Kubernetes 把 GPU 暴露为扩展资源,决定哪个容器拿到几张卡,但它不理解请求长度、KV 压力、前缀局部性或首字延迟,核两层要分开设计、分开验收。

图 48推理集群的编排组件
控制面API 网关鉴权 计费路由器按模型分流副本管理扩缩容调度器以上组件通常跑在 Kubernetes 上,成组调度由插件承担数据面推理副本 1八卡一组引擎进程推理副本 2八卡一组引擎进程推理副本 3八卡一组引擎进程推理副本 4八卡一组引擎进程副本是最小调度单位。副本内部的批处理由引擎负责,副本之间的分配由集群调度负责。
示意架构。生产系统还包括模型分发、配置中心、日志与指标采集等组件。
八张卡凑一组才叫一个副本,少一张这组就起不来。集群层管的是副本,引擎层管的是副本里面。

21.3 扩容反馈

自动扩容不是即时增加容量。新节点要经历供应、镜像、驱动、权重装载、初始化和预热,第 10.4 节的冷启动分段在这里全部生效。缩到零节省空闲资源,却必然引入冷启动;单副本允许过多在途请求,则会在扩容完成前放大尾延迟。这里存在第 11.5 节讲过的反馈:流量上升触发扩容,多个新副本同时拉权重,存储和网络拥塞使冷启动更慢,旧副本队列继续增长,客户端重试又加剧负载。扩容策略必须把装载路径、预热时间、备用容量和主动丢弃放在同一个控制回路里。

21.4 故障分域

推理集群的可用性由最脆弱的共享组件决定,不是由单卡可靠性决定。

故障层级典型故障影响范围恢复手段
单卡掉卡、ECC 错误、过热降频该副本全部请求隔离该卡,副本重建
整机电源、主板、网卡该机上全部副本副本迁移到备机
机柜配电单元、交换机整柜数十台跨柜冗余,路由切换
机房断电、断网、制冷整个站点跨地域容灾,流量切换
软件引擎崩溃、显存泄漏、死锁可能全集群同版本灰度发布,快速回滚
图 49故障域与冗余设计
冗余的层层包裹机房级机柜级整机级机1机2机3机4机5机6运维承诺的三个数字指标含义谈判时要写死的部分可用率服务可正常响应的时间占比统计口径与排除条款恢复时限从故障发现到恢复的时长起算点是告警还是工单赔付上限违约的最大赔偿是否封顶在当月服务费
示意结构。真实冗余设计还需考虑供电双路、网络双上联、跨可用区部署。
卡坏了是小事,机房断电是大事。合同里的可用率承诺,兑现靠的是这几层冗余,不是靠祈祷。

最后一行最容易被低估。硬件故障是局部的,软件故障是全局的:一个新版本推上去,所有副本同时出问题。这是灰度发布在推理场景必须严格执行的原因。故障域要用共同依赖来画,不能用地理标签:两套集群共用同一变电站、核心交换机、身份系统或模型仓库,仍可能同时失效;跨区副本依赖同一控制面密钥,也没有形成完整隔离。冗余只有在故障注入和切换演练之后才算能力,没有演练的双路设计只是结构意图。

21.5 观测体系

没有分阶段的指标,就无法定位问题,也就无法承诺 SLA。推理服务的监控与传统 Web 服务不同,关键在于把一次请求的时间拆成可归因的几段:只看端到端延迟,出问题时无法判断是排队、prefill 慢还是 decode 抖动。观测的三层结构与告警动作在第 23.2 节展开,这里先立一条原则:探针要配对使用。就绪探针控制是否接流量,存活探针决定是否重启;错误的存活探针在高负载下会不断重启尚可恢复的实例,把一次过载变成级联故障。核

图 50一次请求的可观测切分
端到端延迟 = 下面四段之和网关与鉴权排队等待PrefillDecode 全程毫秒级拥塞时暴涨受上下文长度影响受批量与带宽影响必须采集的指标清单指标口径用途TTFT 分布P50 P95 P99 而非均值定位排队与 prefill 问题TPOT 分布相邻 token 间隔定位 decode 抖动批次占用率实际批量与上限之比判断产能是否被浪费KV 显存水位已用块占比预警抢占即将发生缓存命中率按租户与按模型分别统计验证成本模型抢占次数每分钟被踢出的请求数解释偶发超时
百分位数比均值重要。均值好看而 P99 崩溃是推理服务最常见的假象。
客户投诉慢,我们要能在五分钟内说出是排队慢、读题慢还是写字慢。做不到这个就别签 SLA。
追问对方讲的调度经验是三层里的哪一层;灰度发布和回滚的实际记录能不能看;上一次跨故障域的切换演练是什么时候。

修订记录

日期改了什么为什么谁
2026-08-04按章导入,正文与插图保持原样原稿结构清晰,重写反而损失信息工程