跳到主要内容

建模精度与验证

怎么标定效率因子、对标真实硬件、量化误差来源,以及先相对后绝对的升级路径

核心要点:

  • 精度不是越高越好,是够用就好——标定成本和精度的权衡是工程判断
  • 误差来源可分层:模型误差(公式选错)和标定误差(参数估不准)
  • 挂一个显式效率因子 η 是从"仅相对"到"绝对±5~10%"的最小跨步
  • 对标验证必须先定口径:对标什么(TTFT/TPOT/吞吐)、在什么配置下
  • "先相对后绝对"是业界共识的升级路径,不是两个互斥选项

名词定义

名词定义
模型误差建模假设与真实物理行为之间的偏差,如 roofline 假设完美流水
标定误差模型结构正确但参数估错,如效率因子 η 取值偏离真实利用率
MFU (Model FLOP Utilization)实测吞吐对应的 FLOPs 除以峰值算力,衡量硬件利用效率
相对误差两个配置之间的预测误差,系统性偏置在比较中抵消
绝对误差单个配置的预测值与实测值的偏差

误差从哪里来?

核心问题: 仿真结果和真实测量对不上,根子在哪?

误差来源分两层,处理方式不同:

模型误差:公式选错,比如用 roofline 的 max(计算,访存) 对一个访存不规则的 scatter/gather 算子建模——roofline 假设访存连续且可流水,实际不是。这类误差加再多标定数据也修不好,只能换公式。识别信号:误差随输入形状的变化有系统性规律,不是噪声。

标定误差:公式结构对,但参数估偏了。最典型的是效率因子 η:datasheet 峰值乘以 η 预测算子时长,η 取 1.0 和取 0.6 的预测差距达 67%。标定误差的识别信号:误差在不同输入形状上稳定偏同一个方向(系统性高估或低估)。

两类误差的修法:模型误差 → 回去改公式;标定误差 → 用少量实测样本回归 η。

效率因子 η 怎么标定?

核心问题: η 不是一个数,是怎么从实测数据里拿到的?

标定步骤:选几个代表性算子(大 GEMM、小 GEMM、elementwise、flash attention),在目标硬件上跑 microbenchmark 测实测时长,再用 η = (FLOPs / 算力) / 实测时长(计算受限算子)或 η = (字节 / 带宽) / 实测时长(访存受限算子)反推。

几个工程要点:

  • 按算子类型分 η,不用全局单一 η:大 GEMM 和小 GEMM 的利用率差距可到 2×,用同一个 η 会让其中一类严重偏。Calculon 按算子大小给阶梯曲线[1],不同规模区段用不同 η。
  • 标定集要覆盖部署实际范围:如果生产中 batch size 在 4–32 之间跑,标定时要包含这个范围;只标 batch=1 的 η 外推到 batch=32 不可靠。
  • η 是当前软件栈的标定:同一芯片换驱动或编译器版本,η 可能变。记录标定时的软件版本。

标定的最小成本路径:选 5–10 个代表性算子形状、跑 10–50 次取中位数、线性回归出按大小分档的 η 曲线。GenZ v3 报告用这种方式把 TTFT 误差从约 6% 降到约 2%[2]

对标验证怎么做?

核心问题: 拿仿真结果和真实系统对比,方法上有哪些容易踩的坑?

对标验证必须先锁定三件事,再跑数:

① 口径对齐:仿真预测的是什么指标、真实系统测的是什么指标,必须完全一致。预测的是"算子计算时长",对标的是端到端 TTFT,中间差了排队等待、调度开销、框架开销,怎么比都对不上。Vidur 对标时显式区分了算子时长预测误差和调度仿真误差[3]

② 配置一致:并行度(TP/PP/DP)、批量大小、序列长度、精度格式、是否开 Flash Attention——任一项不同,结果就没有可比性。对标数据集里标清每条实验的完整配置。

③ 稳态 vs 启动:真实系统的前几次推理包含 JIT 编译、内存分配、预热开销,不代表稳态性能。对标用 warmup 后的稳态数据;仿真不模拟启动开销,比较对象必须是稳态实测。

典型验证流程:选 3–5 个代表性(模型规模、并行配置、序列长度)场景,每场景实测 20 次取中位数,和仿真预测比相对误差。误差分析按来源分:计算算子误差、访存算子误差、通信误差、调度误差各占多少。

先相对后绝对是什么意思?

核心问题: 算力标不准,仿真器到底能不能给出可信的绝对数值?

"先相对后绝对"是一条升级路径,不是"只能给相对"。两个阶段:

相对阶段:用 datasheet 峰值 + 经验 η,建模的系统性偏置在同一基准下的比较中抵消。用于回答"配置 A 比配置 B 快多少"、"TP=4 vs TP=8 哪个更好"——比较中偏置约掉,排序结论可信,但绝对数值不可信。这已经满足部署选型的主要需求:不需要知道某配置跑多快,需要知道哪个更快。

绝对阶段:用目标芯片少量实测样本标定 η,把系统性偏置修正掉,绝对误差收敛到 ±5~10%。这时可以给出可信的绝对 TTFT/TPOT 预测,用于容量规划。

业界升级先例:

  • ASTRA-sim 的计算后端支持在解析 roofline (相对) 和读真实 trace 的 measured 模式 (绝对) 之间切换[4]
  • GenZ 从 v1 的固定经验 η 升级到 v3 的按平台标定 η,TTFT 误差从约 6% 降到约 2%[2]

标定不足时的正确做法:绝对值结果加免责声明"基于经验 η,绝对值仅供参考";相对排序结论不加免责。不要因为绝对精度不足就拒绝给出相对比较——相对比较对选型价值巨大。

什么情况下可以信任仿真结果?

核心问题: 仿真结果什么时候可以直接拿来做决策,什么时候只能作为参考?

按用途和精度需求分三档:

用途精度要求信任条件
并行策略排序 (TP/PP/DP 哪个好)相对误差 <20%经验 η + 相同路径下比较即可
容量规划 (多少卡服务多少 QPS)绝对误差 <15%必须标定 η + 验证过相近配置
SLA 承诺 (P99 延迟 <X ms)绝对误差 <5%profile-based 或充分标定,不能靠解析

@tbl-ipm-trust-levels 仿真结果可信度与用途对照

解析 roofline 仿真器 (GenZ/Calculon 类) 在标定 η 后可满足前两档;第三档 SLA 承诺级精度通常需要 Vidur 类 profile-based 框架或真实压测。不要把解析仿真器用于 SLA 承诺——它不是为这个设计的。

Takeaway

知识点核心结论
误差两类模型误差改公式,标定误差标定 η,不可混淆
η 标定按算子类型分档,覆盖部署实际范围,记录软件版本
对标三要素口径 / 配置 / 稳态三项必须对齐,缺一无法比较
先相对后绝对经验 η 给相对排序,标定 η 升绝对精度,是升级路径不是二选一
信任级别排序 < 容量规划 < SLA 承诺,精度要求递增,工具选型不同

参考资料

  1. Isaev et al., Calculon: a Methodology and Tool for High-Level Co-Design of Systems and LLMs, SC 2023. https://dl.acm.org/doi/10.1145/3581784.3607102
  2. Bambhaniya et al., GenZ: LLM Inference Platform Analysis, 2024. https://arxiv.org/abs/2406.01698
  3. Agrawal et al., Vidur: A Large-Scale Simulation Framework for LLM Inference, MLSys 2024. https://arxiv.org/abs/2405.05465
  4. Won et al., ASTRA-sim2.0: Modeling Hierarchical Networks and Disaggregated Systems, ISPASS 2023. https://arxiv.org/abs/2303.14006

延伸阅读