ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

2025年AI算力评估:从GPU卡数到有效算力当量的测算方法

2025年AI算力评估:从GPU卡数到有效算力当量的测算方法 简介《2025年中国人工智能计算力发展评估报告》为IDC出品的行业研究PDF面向政策制定者、企业管理者、研究人员及投资者帮助把握生成式人工智能驱动下的算力需求变化与产业趋势。资源包共1个PDF文件约2.02MB内容结构完整涵盖全球及中国人工智能发展概述、算力及应用、发展评估与IDC建议四大板块。报告围绕算力效能提升、芯片与服务器高性能演进、存储与网络优化、可持续数据中心建设及边缘计算扩展五大趋势展开并深入分析液冷技术、智能算力服务中心、算法创新与模型迭代对算力效率的关键作用。目录中行业排名与地域排名、大模型开源趋势、企业扩容与提效并行策略等内容可为读者提供数据支撑与决策参考。目前已有253人学习下载适合需要系统了解中国智能算力规模预测与产业落地路径的读者研读。1. 算力账本怎么算从一份评估报告看2025年AI基础设施的真实水位2025年中国人工智能计算力发展评估报告这类标题很多人第一反应是宏观材料跟我写代码的没关系。但如果你正在做模型训练排期、推理服务扩容或者被老板问我们到底缺多少卡这份报告背后的评估框架其实是一本算力账本。它要回答的核心问题是一个区域、一个行业、一家公司当前的人工智能计算力供给与需求之间差多少瓶颈在芯片、在机房、还是在调度效率。适合三类人看做基础设施规划的、做模型训练成本估算的、以及需要向非技术决策者解释为什么还要加预算的工程师。这篇笔记不逐条复述报告而是把评估逻辑拆成可复现的测算流程让你能用自己的数据套一遍。2. 评估框架拆解算力供给、需求与效率三个口径怎么定2.1 为什么不能只看GPU卡数算力评估最容易翻车的地方是把有多少张加速卡直接等同于有多少计算力。实际有效算力要打三层折扣第一层是硬件利用率卡在集群里不可能7×24跑满通信等待、数据加载、检查点写入都会吃掉时间第二层是精度折算同一张卡跑FP32和跑FP16、INT8的吞吐差好几倍评估时必须声明口径第三层是任务匹配度拿训练卡去跑小批量推理利用率可能连20%都不到。常见做法是定义一个有效算力当量以某一种精度比如FP16为基准把不同精度的峰值算力按实测吞吐比例折算再乘以集群平均利用率。这个当量才是能拿去做供需对比的数字。我一般会建议团队先跑一周的集群监控拿到真实的MFU模型浮点运算利用率而不是用厂商标称峰值。2.2 需求侧的三个来源需求不是拍脑袋估的要拆成三块分别算。第一块是存量业务的推理需求按当前QPS、平均序列长度、模型参数量反推每日浮点运算次数第二块是增量训练需求按计划中的训练任务数、每个任务的token量、训练轮次估算第三块是预留缓冲通常留15%到30%应对突发流量和实验性任务。下面这段Python是一个简化的需求估算脚本输入业务侧的几个可观测指标输出每日算力需求单位PFLOPS·天。# 简化算力需求估算推理 训练 缓冲 # 所有算力单位统一为 PFLOPS每秒千万亿次浮点运算 def inference_demand(qps, seq_len, params_b, hours_per_day24): qps: 每秒查询数 seq_len: 平均序列长度token params_b: 模型参数量十亿 推理一次前向约 2 * params 次浮点运算乘加各算一次 flops_per_query 2 * params_b * 1e9 * seq_len daily_flops qps * flops_per_query * 3600 * hours_per_day return daily_flops / 1e15 # 转成 PFLOPS·天 def training_demand(tasks_per_month, tokens_per_task, params_b, epochs1): 训练一次约 6 * params * tokens 次浮点运算前向反向 flops_per_task 6 * params_b * 1e9 * tokens_per_task * epochs monthly tasks_per_month * flops_per_task return monthly / 30 / 1e15 # 平均到每天 def total_demand(qps, seq_len, params_b, tasks, tokens, buffer0.2): inf inference_demand(qps, seq_len, params_b) tr training_demand(tasks, tokens, params_b) return (inf tr) * (1 buffer), inf, tr total, inf, tr total_demand(qps500, seq_len1024, params_b13, tasks8, tokens2e9, buffer0.25) print(f推理需求 {inf:.2f} PFLOPS·天训练需求 {tr:.2f} PFLOPS·天) print(f含25%缓冲后总需求 {total:.2f} PFLOPS·天)逻辑说明推理侧用2×参数量×序列长度近似单次前向计算量这是行业里常用的粗估方式误差在可接受范围内训练侧用6×参数量×token数系数6来自前向2次加反向4次的经典估算。参数怎么改qps和seq_len从网关日志取P95值而不是均值params_b按实际部署模型填buffer根据业务波动性在0.15到0.3之间调。注意这个脚本算的是天级别的量如果要换算成需要多少张卡还要除以单卡日有效算力和集群利用率。2.3 效率口径把PUE和MFU分开看评估报告里常出现两个效率指标容易被混为一谈。PUE是机房层面的电能利用效率衡量制冷和配电损耗跟计算本身无关MFU是计算层面的利用率衡量芯片实际干了多少活。一个机房PUE很漂亮但MFU很低说明电没浪费在制冷上却浪费在空转上。做评估时这两个要分开列否则优化方向会搞错——PUE高去改制冷MFU低去改调度和并行策略。3. 用公开数据跑一遍区域算力供需测算3.1 数据从哪来、怎么对齐口径做区域级测算数据来源通常有三类公开的统计材料、厂商披露的产品规格、以及自己监控系统的一手数据。三类数据口径往往不一致比如统计材料给的是标准机架数厂商给的是单卡峰值算力自己监控给的是实际任务吞吐。对齐方法是建一张换算表把不同来源统一到有效算力当量这一个口径上。数据来源原始口径换算动作目标口径统计材料标准机架数按机架功率和典型部署密度折算卡数加速卡数量厂商规格单卡峰值算力乘实测MFU按精度折算有效算力当量监控系统任务吞吐按任务类型加权平均有效算力当量机房台账总功耗除以PUE得IT功耗供电约束上限这张表的作用是防止你把苹果和橘子相加。我见过一个团队把标称峰值直接加总得出算力充足的结论结果实际训练排队排了两周就是因为没做精度和利用率折算。3.2 测算脚本从卡数到可用算力下面这段脚本把卡数、精度、利用率三个输入转成可用算力当量再和上一节的需求做对比输出缺口。# 供给侧测算从卡数到有效算力当量 # 假设以 FP16 为基准精度 # 不同精度相对 FP16 的吞吐系数经验值需按实测校准 PRECISION_FACTOR { FP32: 0.5, FP16: 1.0, INT8: 1.8, INT4: 2.5, } def effective_supply(card_count, peak_tflops_fp16, precision, mfu): card_count: 加速卡数量 peak_tflops_fp16: 单卡FP16峰值算力TFLOPS precision: 实际主要使用的精度 mfu: 实测模型浮点运算利用率0~1 factor PRECISION_FACTOR[precision] per_card peak_tflops_fp16 * factor * mfu # TFLOPS total card_count * per_card # 转成 PFLOPS·天TFLOPS * 86400秒 / 1e3 return total * 86400 / 1e3 def gap(supply, demand): return supply - demand supply effective_supply(card_count2000, peak_tflops_fp16312, precisionFP16, mfu0.35) demand 4200 # 来自上一节测算的示例值 print(f有效供给 {supply:.0f} PFLOPS·天需求 {demand} PFLOPS·天) print(f缺口 {gap(supply, demand):.0f} PFLOPS·天)逻辑说明单卡有效算力等于峰值乘以精度系数再乘以MFU这个乘积才是能真正用于任务的部分。参数怎么改peak_tflops_fp16按实际采购型号填mfu建议用集群监控里连续一周的均值precision按主力任务的实际精度填。如果算出来缺口是负的说明供给不足接下来要么加卡要么提MFU要么把部分任务迁到别的精度上跑。失败时看什么如果结果和直觉差距很大先检查mfu是不是填成了理论值再检查精度系数是不是用错了档位。3.3 把结果翻译成决策语言测算结果不能只给一个数字要翻译成决策者能用的选项。缺口是X PFLOPS·天对应三种动作加卡需要多少张、提效需要把MFU从多少提到多少、或者调整任务结构能省多少。我一般会做一张三列对比表把每种动作的成本、周期、风险列清楚让决策者选而不是让工程师替他们选。4. 避坑与排查算力评估里最容易翻车的五个地方4.1 现象评估结论是算力充足实际训练却排队原因把标称峰值直接加总没有乘MFU和精度系数。厂商标称的是理论峰值实际任务跑不到那个数。解决所有供给数据必须过一遍有效算力当量公式MFU用实测值没有实测就先跑一周监控再评估。4.2 现象需求估算每月偏差超过50%原因用均值QPS而不是P95且没有区分推理和训练。均值会严重低估峰值压力混在一起算则无法定位瓶颈。解决推理需求用P95 QPS训练需求单独列两者分别和供给对比不要合并成一个总数。4.3 现象加了卡但训练速度没提升原因瓶颈不在算力在通信或数据加载。加卡后通信开销线性增长如果并行策略没调MFU反而下降。解决加卡前先看监控里的通信占比和数据加载等待时间如果这两项超过30%先优化这两块再加卡。4.4 现象PUE优化了但电费没降原因PUE只反映机房效率如果MFU很低大部分电耗在空转上优化制冷省下的电被空转吃掉了。解决PUE和MFU一起看先提MFU再降PUE顺序反了效果不明显。4.5 现象评估报告的数据和实际监控对不上原因口径没对齐统计材料按机架算监控按任务算中间缺换算环节。解决建一张口径换算表所有数据进评估前先过表换算系数定期用实测校准。5. 进阶技巧把一次性评估变成持续监控的算力水位线评估报告是快照但算力供需是动态的。我后来养成的习惯是把第3节的测算脚本包成一个定时任务每天凌晨跑一次把有效供给、需求、缺口三个数写进时序库再用一个简单的阈值告警缺口连续三天为负就触发扩容评审MFU连续一周低于基线就触发调度优化评审。下面是一个最小化的持续监控脚本骨架用cron每天跑一次输出到本地文件方便接任何时序库。# 每日算力水位线快照建议用cron在凌晨低峰期执行 import json, datetime def daily_snapshot(): supply effective_supply(card_count2000, peak_tflops_fp16312, precisionFP16, mfu0.35) demand 4200 record { date: datetime.date.today().isoformat(), supply_pflops_day: round(supply, 1), demand_pflops_day: demand, gap: round(supply - demand, 1), mfu: 0.35, } with open(compute_waterline.jsonl, a) as f: f.write(json.dumps(record) \n) return record if __name__ __main__: print(daily_snapshot())逻辑说明每天追加一行JSON到文件字段包括日期、供给、需求、缺口、MFU。参数怎么改card_count和mfu从监控系统拉取而不是写死demand从业务侧接口获取。这个骨架的价值在于把评估从一年一次的大作业变成每天看一眼的水位线缺口趋势比单点数字更有决策价值。验证方法连续跑两周后把缺口和实际排队时长做相关性分析如果相关性高说明测算口径可信如果相关性低回去检查需求侧是不是漏了某类任务。我自己的血泪经验是第一版测算往往漏掉实验性任务导致需求低估后来把实验任务按存量训练的20%单独加了一项才对齐。一个具体技巧给缺口设两条线黄线是缺口小于供给的10%触发优化评审红线是缺口为负触发扩容评审。两条线分开避免一有波动就喊加卡。这个习惯帮我省过好几次不必要的采购申请。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进