如何利用历史任务队列预测下一周GPU需求?
解读
在国内中大型互联网/AI公司,GPU 属于高价值稀缺资源,采购周期长、预算审批严格,因此提前一周给出误差<10% 的用量预测可直接决定成本与研发效率。面试官想考察的是:
- 能否把“任务队列”抽象成可计算、可训练、可解释的时序信号;
- 能否兼顾业务突发(新模型上线)、周期性(周末训练少)、长尾(大促前全量重训)三重特征;
- 能否把预测结果落地到K8s + 调度器可消费的“GPU 卡·小时”形式,并给出置信区间供运维做弹性伸缩。
知识点
-
GPU 需求拆解公式
需求 = Σ(任务类型i × 该类型平均GPU 卡·小时 × 并发度 × 重试系数)
其中并发度与重试系数需用队列等待时间反向估计。 -
特征工程
- 静态特征:任务类型、模型参数量、是否混合精度、单机/多机、QoS 等级;
- 动态特征:近7 天同一时段队列长度、排队时间、GPU 利用率、失败重跑次数;
- 外部特征:节假日、版本发布窗口、运营活动、公司财务月末封账(国内常见)。
-
模型选型
- 基线:Seasonal Naïve + 指数平滑,用于生成可信区间下界;
- 核心:多变量Prophet-XGBoost 叠加,Prophet 捕获周级周期,XGBoost 捕获任务类型突变;
- 高级:时序Transformer + 量化回归,输出P10/P50/P90 三档,方便运维按预算选策略。
-
安全对齐
- 对突发大模型(如千亿参数)单独建立异常检测分支,触发人工复核;
- 引入可解释包SHAP,向财务与CTO 解释“为何下周要额外申请200 张A100”。
-
线上闭环
- 预测结果写入公司统一指标系统(如美团Cat、阿里ARMS);
- 与K8s HPA + 云厂商弹性节点池联动,实现提前72 小时锁价(国内云厂商包年包月折扣窗口)。
答案
给面试官一个可落地的15 分钟方案:
-
数据准备
从调度系统(Volcano/开源Kube-batch)拉取近6 个月task_id、submit_time、start_time、end_time、gpu_type、gpu_num、status字段,按1 小时粒度聚合为gpu_hours_1h时序。 -
特征构造
滑动窗口统计t-168~t-1同一时段均值、标准差;加入是否周一凌晨(国内大厂统一全量训练窗口)布尔特征;对任务类型做目标编码,减少高基数。 -
模型训练
选用LightGBM 量化回归,损失函数quantile=0.9,保证过估优于低估(GPU 空置成本<排队成本)。离线评估用MAPE@week,线上用滚动预测,每天更新模型。 -
结果输出
输出下周168 个小时的P50 与P90 GPU 卡·小时,并给出峰值时段Top3(精确到小时)。同时触发预算系统OA 审批流,提前锁云资源。 -
兜底策略
若预测P90 > 现有库存×1.2,自动创建Spot 节点预热脚本并@值班群,防止周一早高峰训练任务饿死。
拓展思考
-
异构卡混布场景:A100 40G 与A800 80G 在国内受出口管制影响,库存波动大。下一步可把预测粒度细化到卡型号+机房,并引入强化学习调度器,用预测结果作为状态,动态决定是否把低优任务迁移到RTX 4090 推理卡做混合训练。
-
碳排与成本双目标:国内**“东数西算”政策给出绿电折扣价**,可把碳排因子作为额外奖励项,让Agent 联合优化“GPU 需求预测 + 任务放置”,在预测阶段就锁定西部机房绿色窗口,实现成本下降8% 同时碳排下降12%。