企业私有化 AI 工作负载怎么调度?在线推理、批处理、队列、优先级、限流、降级、峰谷与验收清单
同一套私有化 AI 集群,上午可能挤满知识问答,午后开始跑文档批处理,晚上又有模型评测和索引重建。所有任务同时抢加速卡时,最先受影响的往往是正在等答案的业务人员。简单加机器能缓解一段时间,却没有解决谁先运行、谁可以等、谁必须降级的问题。
调度先区分业务时钟
在线推理按秒或毫秒等待,批处理按分钟或小时完成,训练与评测可能按天计划。把三类任务混进同一条无差别队列,平台无法做正确取舍。每个任务应声明响应目标、完成期限、资源需求、可中断性和业务负责人。
工作负载台账
| 负载类型 | 主要约束 | 适合的调度方式 |
|---|---|---|
| 在线交互 | 首字时延、完整响应、成功率 | 保留容量、短队列、快速限流 |
| 近线任务 | 数分钟内完成、可短时排队 | 按期限和优先级调度 |
| 离线批处理 | 截止时间、总吞吐、可重试 | 队列准入、低谷运行、检查点 |
| 训练与评测 | 多卡、长时间、数据与版本 | 预约、配额、成组启动 |
不要只按部门分队列
同一部门既有生产问答,也有实验性批任务;不同部门又可能共享一项关键流程。队列至少同时表达租户、环境、业务等级和任务类型。部门归属用于成本与配额,业务等级决定等待和抢占规则。
资源申请要能被验证
提交任务时声明加速卡类型与数量、CPU、内存、存储、预计时长、模型、数据量和期限。平台用历史实测或基准结果检查申请是否离谱。申请过大造成闲置,申请过小会反复失败,两者都降低集群可用容量。
在线服务保留基础容量
根据真实高峰和故障余量,为关键在线模型保留最小实例或资源池。批任务可以借用未使用部分,但当在线队列上升时必须按规则归还。保留量过大也会浪费,平台要用一段完整业务周期的数据定期调整。
优先级来自业务影响
生产安全、客户承诺、员工辅助、周期报表、实验和个人开发可对应不同等级。每级写清最大等待、能否抢占别人、被抢占后怎么恢复。不要让提交人自由填写“最高优先级”,也不要用职位高低代替业务影响。
高优先级不必都能抢占
某些任务需要排在前面,但不值得杀掉已运行两小时的批作业。Kubernetes 的Pod 优先级与抢占文档区分了可抢占和不抢占的高优先级。企业可以沿用这个思路,把“先排队”与“立即腾资源”分成两个决定。
抢占前计算损失
记录任务已运行时间、检查点、重启成本、数据写入状态和外部副作用。没有检查点的长任务被中断后可能全部重算。只有当新任务的业务价值和时限超过中断损失,平台才执行抢占。
为长任务设置检查点
训练、批量嵌入、OCR 和评测在可恢复位置保存进度、输入范围、模型版本和输出状态。检查点也要测试损坏、重复执行和版本不兼容。一个“支持断点续跑”的开关,不能替代恢复演练。
队列顺序不只看提交时间
严格先进先出容易被一个暂时无法满足的大任务堵住;完全按最短任务优先,又可能让大任务长期饥饿。根据期限、优先级、资源适配、等待时长和公平份额组合排序,并公开规则。
大任务需要成组资源
多卡任务只拿到一部分资源时,可能占着设备却无法开始。采用全量准入或成组调度,在满足所需资源后一起启动。等待期间不锁住零散卡,避免阻塞可以立即完成的小任务。
队列配额控制租户占用
给部门、项目和环境分配名义配额,允许在别人空闲时借用,同时设置借用上限和归还规则。Kueue 的ClusterQueue 文档说明了资源配额、不同资源规格、公平共享、借用和队列策略等机制。是否采用 Kueue,仍取决于现有平台。
开发环境不能无限占生产资源
开发任务设置较低默认优先级、并发上限、空闲回收和最长运行时间。确需复现生产问题时申请限时提升。测试账号长期保持高优先级,会让生产保障形同虚设。
资源规格需要清楚命名
不同加速卡、显存、互联和驱动组合用稳定的资源规格表示。任务选择经过验证的规格,而非模糊地申请“一张 GPU”。调度器只有知道兼容性,才能把任务放到正确节点。
模型与硬件亲和性来自实测
记录每个模型在不同硬件和运行时上的质量、延迟、吞吐、显存与功耗。调度规则以这张兼容矩阵为依据。新硬件加入资源池前完成相同测试,不能只因驱动能识别就承接生产任务。
在线请求进入短队列
队列吸收短时抖动,但不能无限延长。为每个服务设置最大队列长度、最大等待时间和超时返回。请求已经超过业务等待上限时,继续排队只会浪费后续计算。
超时预算贯穿调用链
网关、检索、重排序、模型、工具和后处理共享一份端到端预算。上游把全部时间交给模型,后续步骤就无法完成。每层收到剩余期限,并在期限不足时停止低价值工作。
重试必须有上限和抖动
过载时所有客户端同时重试,会把一次拥堵放大成持续故障。只对可重试错误执行有限次数,采用退避与随机抖动,并让服务端返回明确的重试提示。已经执行过外部操作的请求还要处理幂等。
入口限流保护共享资源
按用户、应用、部门、模型和业务等级设置速率与并发限制。限流发生时记录原因、当前配额和请求 ID,给调用方可执行的反馈。关键服务也要有限制,防止错误循环耗尽全局容量。
模型内部也需要并发控制
多个模型同时运行可能耗尽显存或内存。NVIDIA Triton 的Rate Limiter 文档展示了跨模型推迟部分实例执行、使用优先级和资源约束的方式。其他推理服务同样要控制模型级并发,入口限流不能覆盖所有内部竞争。
动态批处理要守住等待上限
合并请求可以提高吞吐,却会增加等待。Triton 的Batcher 文档允许配置批大小、等待时间、队列、优先级和超时。企业应通过真实请求找平衡,不能只追求最大批次。
长短输入可以分流
超长文档或长上下文请求会占用更多显存和时间。按输入长度、预计输出和任务类型分队列,避免一个长请求阻塞大量短请求。分流规则要监控误判和用户体验,不能暗中降低某类用户的服务。
流式输出也占用会话资源
用户看到首字后,模型仍在生成。监控首字时延、token 生成速度、完整时长、主动取消和连接中断。客户端取消后及时停止下游计算,避免无人接收的响应继续占用加速卡。
缓存只服务可复用结果
相同模型、版本、权限、知识和参数下的确定性结果才适合复用。缓存键遗漏权限或知识版本,可能返回越权或过期内容。命中率、节省量、失效和内存成本一起进入监控。
降级顺序提前批准
过载时可以缩短上下文、减少检索候选、关闭低价值工具、切换较小模型、返回异步结果或转人工。每项降级都要通过质量、安全和业务审核,并在响应中标识。平台不能临时把高风险任务切换到未经验证的模型。
拒绝比无限等待更诚实
当队列、资源或期限已经无法满足服务目标,快速拒绝并给出替代方案。调用方可以稍后重试、改用异步任务或转人工。把请求留到超时,只会占用连接并制造更多重试。
过载保护设自动触发和人工总控
队列长度、预计等待、错误、显存、温度和节点健康可以触发限流或降级。高风险变更由值班人员确认,紧急情况下也要有一键冻结批任务和恢复默认策略的入口。
Google SRE 对过载的提醒
Google 的Handling Overload讨论了过载时接受多少请求、保护系统和客户端退避等问题。AI 服务虽然有模型与加速器约束,仍应遵守同一个基本原则:系统接收的工作量不能长期超过它能完成的工作量。
扩容指标不能只看加速卡利用率
利用率高可能表示设备工作充分,也可能表示请求正在排队。结合队列等待、服务目标、吞吐、失败、显存和待处理任务期限判断。在线服务更适合用队列和时延触发,批任务则关注积压与截止时间。
扩容有准备时间
新实例需要拉取镜像、加载模型、建立缓存和通过健康检查。流量增长后才启动,可能赶不上峰值。根据启动时间、预测误差和服务目标保留热容量或提前扩容。
缩容需要稳定窗口
短时波动就缩容,会在下一波请求到来时再次冷启动。Kubernetes 的水平自动伸缩文档说明了指标、容差和缩容稳定窗口。AI 模型加载较慢时,稳定策略更要按实测调整。
模型副本与任务实例分开伸缩
在线模型副本适合根据请求和延迟伸缩;离线作业则根据队列准入资源启动。用同一个副本数控制两类负载,容易在批任务扩张时挤占在线服务。
节点伸缩还受物理边界限制
本地集群无法像云资源一样瞬时增加服务器。采购、上架、供电、驱动和验收都需要时间。调度系统应显示现有可分配容量与未来扩容日期,不能把“自动伸缩”理解成无限资源。
批任务利用业务低谷
索引重建、报表、批量抽取和评测如果有宽松期限,可以安排在在线流量低谷。计划依据历史业务曲线和明确截止时间,每次运行仍受在线服务抢占与资源上限约束。
低谷不一定固定在夜间
跨国业务、月末处理和自动化任务会改变负载。平台按实时与预测容量开放批处理窗口,而不是写死每天零点。时区、节假日和营销活动进入日历。
用电窗口只能调整可移动任务
若企业掌握分时电价、园区需量或能源约束,可以把无实时要求的批任务移到合适时段。在线服务、安全任务和紧迫截止期不应为省电被强制延迟。节省金额需使用企业实际电价和计量结果。
设功率上限时看业务影响
机房可能有单柜或总功率限制。调度器根据节点功耗测量、任务规格和温度避免同时启动过多高功率作业。达到上限时先暂停可中断批任务,再按批准矩阵处理其他负载。
能耗指标落到有效任务
记录集群与节点能耗、模型请求、成功任务和质量结果,计算每千次有效问答、每万页文档或每次合格检测的能耗。设备总用电下降可能只是业务量下降,不能单独证明调度改进。
计划维护也要经过队列
驱动、固件、系统和运行时升级前停止向目标节点分配新任务,让现有工作完成或保存检查点。维护窗口、受影响模型、备用容量、验证和回退进入变更单。
节点故障时不要全量重试
调度器识别失败任务、已经完成的步骤和外部副作用,只重放安全部分。大量作业同时迁移会冲击剩余节点,可按优先级和速率恢复。在线服务先恢复基础容量,低优先批任务继续等待。
队列状态要让提交者看见
显示任务位置、优先级、资源申请、预计开始、期限风险、等待原因和取消入口。预计时间可以给区间,并标注影响因素。黑箱队列会促使用户重复提交或找管理员插队。
优先级调整留下审计
记录谁在何时把哪个任务从什么等级改到什么等级、理由、有效期和影响。紧急提升到期后自动恢复。管理员手工插队也进入同一日志。
公平不等于平均
关键生产任务应获得更多保障,业务价值低的长任务可以等待;但任何团队都不应因资源借用规则而永久没有机会运行。监控各租户等待分布、配额使用、借出与借入、被抢占次数和期限违约。
预算与调度联动
部门看见资源用量、有效任务量、空闲和失败成本。超出预算时先告警并由负责人决策,不要直接中止关键生产服务。算力项目的多年成本口径可参考私有化 AI 算力项目立项与 TCO 清单。
调度策略也要版本化
队列、配额、优先级、抢占、限流、降级、扩缩容和低谷窗口都保存版本、批准人和生效时间。发生异常时可以比较前后差异并回滚,不能在控制台改完后只留一张截图。
上线前用历史负载回放
把真实请求脱敏后按时间曲线回放,叠加批任务和故障,观察队列、服务目标、抢占、伸缩和降级。容量压测的方法可参考容量规划与阶梯压测清单,并补充模型质量与显存指标。
测试四种冲突
| 冲突场景 | 预期行为 | 主要证据 |
|---|---|---|
| 在线高峰遇到批任务 | 在线容量受保护,批任务等待或检查点暂停 | 时延、队列、恢复记录 |
| 高优先任务遇到长作业 | 按抢占成本和政策处理 | 决策、检查点、重启结果 |
| 节点故障遇到重试洪峰 | 有限重试,分级恢复 | 重试率、剩余节点负载 |
| 低谷窗口临时变成业务高峰 | 批任务让出资源,在线服务不受影响 | 预测偏差与调度事件 |
负面测试不能省
模拟错误最高优先级、无限重试、无检查点抢占、指标缺失、队列服务不可用、时钟漂移、模型冷启动失败和配额配置错误。系统应进入可解释的保守状态,并允许人工接管。
调度验收指标
| 指标组 | 示例 |
|---|---|
| 服务 | 首字时延、完整时延、成功率、期限达成率 |
| 队列 | 等待时间、积压、饥饿、取消、超时 |
| 资源 | 利用率、显存、空闲、功耗、资源碎片 |
| 策略 | 限流、降级、抢占、重试、伸缩次数与结果 |
| 公平与成本 | 租户份额、借用、单位成本、有效任务量 |
模型服务本身仍要单独验收
调度正确不能证明模型质量、版本、权限和回退正确。可结合企业私有化 AI 模型服务上线验收清单检查运行时与模型层。
调度不能绕过数据边界
任务只能进入获准处理其数据等级的节点、地域和环境。某个资源池空闲,不代表它有权加载全部模型与数据。队列准入同时检查租户、数据标签、节点安全状态、密钥和网络策略。
多租户隔离要经过压力测试
一个租户的高并发、超长输入或异常容器不能拖垮其他租户。测试配额、内存耗尽、磁盘写满、日志洪峰和模型崩溃,确认资源限制与故障域生效。成本分摊与安全隔离使用同一租户标识,避免账单和访问边界对不上。
取消任务要清理完整
用户取消、期限过期或管理员停止后,平台应终止尚未开始的步骤,释放资源和锁,处理临时文件,并保留必要审计。已经产生外部副作用的任务进入补偿或人工确认,不能把“状态已取消”当作实际工作已经停止。
截止时间风险提前告警
平台根据队列、历史运行时长和可用资源估算任务能否按期完成。预计违约时尽早通知负责人,让其提高优先级、缩小范围、增加资源或接受延期。等到截止时刻再报失败,调度信息已经失去决策价值。
策略指标与业务结果关联
每次限流、降级、抢占和延期都关联模型、租户、任务、策略版本和业务结果。团队才能判断某项规则是在保护系统,还是把故障转移给用户。只看集群利用率,很容易掩盖任务完成率下降。
角色分工
业务负责人定义等级和期限,AI 团队提供模型资源曲线,平台团队实现队列与伸缩,运维团队处理容量和故障,安全团队审核租户与数据边界,财务团队提供成本和用电口径。任何一方都不能独自决定全部优先级。
上线门禁
- 所有生产与批任务都有服务目标、期限、资源和可中断性;
- 优先级、抢占、配额和借用规则已经由业务负责人批准;
- 在线服务保留容量,批任务能在压力出现时让出资源;
- 限流、超时、重试、降级和拒绝策略通过故障测试;
- 扩缩容考虑模型加载时间、稳定窗口和物理容量;
- 低谷调度只作用于可移动任务,并保留截止时间;
- 队列、策略、成本和人工调整均可观测、可审计、可回滚。
凯乐丰如何协助梳理 AI 调度
凯乐丰 Colorfun 可在私有化 AI 解决方案中,协助企业梳理在线与批处理任务、模型资源曲线、队列、配额、优先级、限流、降级、监控和验收。方案以现有业务流程、数据边界和实际算力环境为准,不把某一种调度平台当作所有企业的固定答案。
发布前最后核对
关键在线请求是否有保留容量;批任务是否声明期限和可中断性;最高优先级能否被普通用户滥用;抢占后能否从检查点恢复;超时、重试和限流会不会放大过载;缩容是否考虑模型加载时间;低谷任务在业务突增时能否让路。每项都能通过回放、故障测试和运行指标证明,调度策略才适合进入生产。
