大模型预训练如何评估能耗和成本?
简化版
预训练成本要从计算量、设备时间、利用率和基础设施开销分层估算。计算量可用训练 FLOPs 或 GPU-hours,电量近似为“IT 平均功率 × 时间 × PUE”,碳排再乘所在地分时碳强度;还需计入失败重算、数据处理、存储、网络和人力。最终应报告达到目标质量所需的总成本,而不只是单卡峰值功耗。
详细版
Transformer 密集训练常用 FLOPs≈6ND 做数量级估算,其中 N 是参数量、D 是训练 Token;硬件时间约为 FLOPs / (GPU数 × 峰值FLOPS × MFU)。设备电量用遥测积分比 TDP 更准,机房总电量则乘 PUE。若 1000 张 GPU 平均 600W 运行 100 小时,IT 用电 60MWh,PUE=1.2 后约 72MWh。
财务成本应区分云按时价格与自建 TCO,包括 GPU 折旧、机房、电力、存储、网络、备份、运维和机会成本。监控每 step 有效 Token、MFU、掉卡、重算 Token、功率和区域碳强度,用“每十亿有效 Token 的 kWh/元”和“达到某评测分数的成本”比较方案,避免用更低能耗换来更差模型。
模型/Token -> 训练 FLOPs -> 实际 GPU-hours -> IT kWh -> PUE 后机房 kWh -> 碳与财务成本
完整版教学
一、先统一四种成本口径
FLOPs 表示算法计算需求,GPU-hours 表示占用设备时间,kWh 表示能量,货币成本还包含设备与服务价格。四者相关但不能互换:同样 FLOPs 在不同 MFU 下需要不同时间,同样 GPU-hours 在不同功率和价格下成本不同。
报告应声明边界,是只算主训练,还是包括数据清洗、失败实验、checkpoint、评测和超参搜索。忽略前期试验会大幅低估真实项目投入。碳排还需说明用的是平均还是边际、年度还是分时电网因子。
二、6ND 估算从哪里来
对密集 decoder Transformer,前向计算约为每参数每 Token 2 FLOPs,反向通常约前向两倍,因此训练数量级常写:
Training FLOPs ≈ 6 × N_parameters × D_tokens
一个 70B 模型训练 1T Token,约为 6×70e9×1e12=4.2e23 FLOPs。它是规划近似,MoE 激活参数、embedding、序列长度、重计算与优化器算子都会造成偏差,最终应由 profiler 校准。
记忆钩子:6ND 给“要做多少数学”,MFU 决定“机器多久做完”,功率积分才回答“用了多少电”。
三、从 FLOPs 到 GPU 时间
设单卡理论峰值 F,GPU 数量 G,模型 FLOPs 利用率 MFU,则:
time_seconds ≈ total_FLOPs / (F × G × MFU)
若一张卡目标精度峰值 300 TFLOPS,实际 MFU 40%,有效约 120 TFLOPS。MFU 包含计算与训练所需通信/调度影响,但不能拿瞬时 kernel 利用率替代。数据等待、checkpoint 停顿和故障重算应另行计入墙钟与成本。
四、怎样计算电量和 PUE
GPU TDP 是上限,不是实际平均功率。应从 GPU、CPU、内存和网络设备遥测按时间积分得到 IT kWh,再用 PUE 计入制冷与供电损耗:
facility_kWh = IT_kWh × PUE
carbon_kg = Σ_t facility_kWh(t) × grid_intensity(t)
1000 张 GPU 平均 600W 跑 100 小时,仅 GPU 是 60MWh;若其他 IT 设备增加 10%,PUE 1.2,则机房约 60×1.1×1.2=79.2MWh。使用当地 0.4 kgCO2e/kWh 的示意因子,对应约 31.7 吨,但正式报告需采用真实分时数据。
五、财务成本不能只乘云单价
云上可从实例时长、存储、跨区网络和 API 费用直接核算,折扣与抢占失败需纳入。自建集群则要把采购按使用寿命折旧,并分摊机房、电力、维修、备用设备和人员。闲置 GPU 的机会成本也会影响项目决策。
| 成本项 | 常见漏项 |
|---|---|
| 计算 | 超参实验、失败重算 |
| 存储 | 多代 checkpoint、备份 |
| 网络 | 跨区数据与模型传输 |
| 数据 | 清洗、标注、许可 |
| 人员 | 值班、故障排查、评测 |
| 资产 | 折旧、闲置与维修 |
不同方案比较时应使用相同会计边界,不能拿云零售价与自建电费单项直接比较。
六、失败与低利用率怎样吞噬预算
若计划训练 1000 小时,期间因故障损失 80 小时并重算 40 小时,额外 12% 墙钟不一定出现在理论 FLOPs 中。低 MFU 可能来自小 micro-batch、通信拥塞、数据供给或频繁 checkpoint。每提高一个百分点 MFU,都可能节省大量设备时间。
监控应拆分 useful training、checkpoint、evaluation、idle、recovery 和 wasted compute。只看 GPU 利用率百分比会把忙于无效重算也当作“利用充分”;更好的指标是每 kWh 处理的有效非重复 Token。
七、如何做质量归一化比较
更省电但质量更差的模型不一定更高效。可报告达到固定 validation loss 或任务分数所需的 GPU-hours/kWh,或绘制质量—成本 Pareto 曲线。数据质量提升、合适 Batch 和早停可能减少达到目标所需 Token,比单纯限制功率更有效。
例如方案 A 用 80MWh 得分 75,B 用 60MWh 得分 74.8,B 可能更优;C 用 40MWh 得分 65 则不能仅凭低能耗胜出。还要考虑模型未来推理量:训练略贵但推理更省的模型,在全生命周期可能成本更低。
八、常见误区与追问
- 误区:GPU TDP 乘时间就是训练总能耗。 实际功率需积分,且还要加入 CPU、网络和 PUE。
- 误区:理论 FLOPs 相同,成本就相同。 MFU、故障、价格、功率和通信都会改变成本。
- 误区:碳排可以用全球固定系数。 电网强度随地区和时间变化,应说明数据来源和口径。
- 追问:MFU 与 GPU 利用率有什么区别? MFU 衡量有效模型 FLOPs 相对理论峰值,后者只表示设备忙碌程度。
- 追问:最值得优化的指标是什么? 达到固定质量所需的有效 GPU-hours/kWh,而非单 step 最快。
- 追问:如何减少能耗? 提高数据与硬件效率、减少失败重算、早停,并在可行时选择低碳时段与区域。
九、加强记忆
能耗成本可记成“算、时、电、碳、钱、质”:用 6ND 估算计算,经 MFU 换成设备时间,功率积分与 PUE 换成电量,再乘分时碳强度;财务上补齐存储、故障和人力,最后按固定质量比较。只有口径和系统边界一致,成本数字才真正可用于架构决策。