SWE / RE / ML · System Design

视频生成系统:GPU作业、模型版本与失败重试

排队受理不等于生成完成,GPU资源需要按任务内存与拓扑分配。

题目重点:排队受理不等于生成完成,GPU资源需要按任务内存与拓扑分配。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练是类似视频生成产品的系统设计,不描述任何实际产品内部架构。prompt→异步生成job→视频结果,模型具体结构与GPU数量未披露。
  • 定义用户延迟目标、时长/分辨率上限、取消和公平配额;任务可能占单卡或多卡,单GPU/job只是一种合同,不通用于所有模型。

解题路线

  1. Job(id,user,request_hash,model_revision,parameters,status,attempt,artifact_ref)受理持久化,返回job ID;ready/running/completed/failed/canceled状态明确,retry同用户request key不重复收费或建作业。
  2. 资源scheduler按显存、GPU型号、卡数和互联要求匹配node inventory;多卡gang scheduling一起获取资源,避免逐卡占用死锁。warm model workers减少加载延迟,模型版本/精度必须与job绑定。
  3. worker用lease/attempt generation回报,心跳失联标unknown并查真实运行;retry产物按attempt暂存,只有条件提交的winner artifact成为结果,旧worker完成不覆盖新版本。
  4. 任务长且GPU昂贵,取消需协作检查和资源释放确认。可保存可恢复阶段/checkpoint,但随机seed与模型/调度决定复现条件,不保证任何中间latent在版本变化后可继续。
  5. 区分排队、模型加载、推理、后处理、上传与播放准备时间。按用户/任务大小公平队列,超大任务不堵全部短任务;结果经对象存储/CDN分发,GPU不直接服务每个下载请求。

手动走一遍

一个任务已写视频但完成消息丢失,重试/恢复查artifact manifest和attempt提交,不重新对用户重复收费。4卡job不能在四台无足够互联的单卡机器上随意拼接,拓扑是资源约束。若每job平均60 GPU-seconds、受理100/s,满载算力至少6000 GPU等效,实际还要考虑批处理、规格及利用率。

规模与取舍

资源需求由GPU-seconds、显存和排队SLO共同决定;元数据写与视频bytes分别预算。多卡placement及不同任务时长使简单FIFO可能严重碎片化,不能只用总GPU数推稳定延迟。

易错点与追问

容易失分的边界

  • 完成事件早于artifact持久可读,用户拿到空下载。
  • 租约到期就宣称旧GPU进程已停止。
  • 用HTTP同步等待长生成并在超时后重建任务。

继续深挖

  • 如何在deadline、公平、GPU利用率和长任务饥饿间取舍?
  • 生成中间预览会带来哪些存储、审核和状态版本要求?
✓已复制微信号!