跳转到内容

集群利用率

MFU 度量"一次训练的算力效率",集群利用率度量"集群的时间被用了多少"——两者相乘才是集群的产出。一个 MFU 50% 但利用率 50% 的集群,有效算力只有 25%——一半的采购成本在空转。本章把利用率讲透:构成、度量、与提升路径。

集群的真实产出是一串乘法:

有效算力=标称算力×分配率⏟调度×MFU⏟训练效率×(1−故障损失)⏟可靠性\text{有效算力} = \text{标称算力} \times \underbrace{\text{分配率}}_{\text{调度}} \times \underbrace{\text{MFU}}_{\text{训练效率}} \times \underbrace{(1 - \text{故障损失})}_{\text{可靠性}}

每一项都有独立的提升空间与责任人:

因子含义责任层典型值
分配率(利用率)集群时间被作业占用的比例调度(gang+backfill)50–85%
MFU占用时间里的算力效率训练工程40–60%
可靠性因子扣除故障恢复与丢失进度容错0.9–0.98

算一笔账(1000 卡 H100,年成本 ~4500 万美元级):

配置有效算力等效免费算力
利用率 50% × MFU 40% × 可靠 0.9519%—
利用率 85% × MFU 55% × 可靠 0.9745%+2.4 倍

从 19% 到 45% 的有效算力 = 免费 2.4 倍的集群——调度与工程优化的绝对收益超过任何单点技术优化。

分母是"集群总 GPU 时"(标称容量 × 时间),分子是"被作业有效占用的 GPU 时":

利用率=被占用的 GPU 时总 GPU 时\text{利用率} = \frac{\text{被占用的 GPU 时}}{\text{总 GPU 时}}

三个口径的陷阱:

  • 占用 ≠ 有效:作业占着卡但没跑(调试、挂起、数据没准备好)——"占用率"高但空转,要看作业内的 util(见 MFU 的 util vs MFU)
  • 抢占与切换的开销:作业切换(启动、检查点恢复、资源重分配)的真实开销
  • 维护窗口:驱动升级、硬件维护的必要停机——分母要不要扣掉维护时间,两个口径都要看
来源特征解法
调度碎片作业大小与集群不匹配,碎片空转backfill(见gang+backfill)、作业粒度多样化
排队与死锁gang 作业等待,逐 Pod 死锁gang 调度(必选)、配额设计
低效占用作业占着不跑(调试、闲置、长尾)配额(见多租户)、超时回收、闲置检测

碎片化是结构性问题:作业粒度(节点数的倍数)与集群规模的匹配决定碎片的多少——作业粒度多样化(允许 8/16/64 卡)+ backfill 是碎片的标准解法。

指标用途
集群利用率(占用/总量)总效率
碎片率(空闲但可用的资源比例)调度质量
队列长度与等待时间供需平衡
各团队配额使用率公平性(见多租户)
作业内 util 的分布空转检测
故障率与 MTTR可靠性因子

"碎片率"是调度质量的核心指标:碎片多 = 作业粒度或调度策略有问题。

  1. gang + backfill(从 50% 到 80%+ 的关键,见gang+backfill)
  2. 配额三层设计(硬配额 + 弹性 + 共享池,见多租户)
  3. 作业粒度多样化(允许不同大小的作业填碎片)
  4. 闲置回收(占着不跑的作业自动释放)
  5. 维护窗口优化(集中维护、滚动升级)
  • 有效算力 = 标称 × 分配率 × MFU × 可靠性因子——利用率与 MFU 是两个独立因子,相乘决定产出。
  • 利用率 50% × MFU 40% 的集群有效算力只有 19%;优化到 85% × 55% = 45%,等于免费 2.4 倍。
  • 占用 ≠ 有效:作业占着卡不跑(调试/挂起)是"高占用低产出"的隐形浪费。
  • 低利用率三来源:调度碎片、排队死锁、低效占用;解法分别是 backfill、gang、配额与回收。
  • 碎片率是调度质量的核心指标;gang + backfill + 配额 + 作业粒度多样化是提升路径。