1. 课程导入与精度一致性校验问题界定

在数值计算与工程仿真中,“加速”几乎总是伴随着“近似”。无论是把单精度换成半精度、把稠密矩阵换成低秩近似、把逐步迭代换成跳步外推,还是引入算子分裂、混合精度累加、稀疏采样,我们都在用某种“少算一点”的方式换取速度。问题在于:少算的那一点,究竟让结果偏离了多少?这个偏离是否还在业务可接受的范围内?如果没有人能回答这两个问题,加速就只是一场赌博。

本课程讨论的正是这场赌博的“验算规则”——数值加速结果精度一致性校验。它不是简单地比较两个数字是否相等,而是建立一套可复现、可量化、可判定的方法,用来回答:加速后的结果相对于基准结果,误差有多大、误差以什么形式分布、在哪些条件下会越界、以及越界时应当如何处置。

精度风险从哪里来

要界定校验问题,先要看清风险来源。数值加速引入的偏差通常不是单一来源,而是多条路径叠加的结果。第一类是表示精度损失:例如把 FP32 的累加器改为 FP16,单次舍入误差约 2⁻¹¹ 量级,但在上万次累加后,误差会随累加次数累积,甚至因“大数吃小数”而出现灾难性抵消。第二类是算法近似误差:低秩分解截断奇异值、快速多极子展开截断阶数、时间步长放大,都会带来与截断参数直接相关的系统性偏差。第三类是计算顺序与并行归约:浮点加法不满足结合律,改变归约树结构会让同一批数据算出不同末位。第四类是随机性来源:随机采样、随机初始化、非确定性调度,使结果本身带有方差,单次对比失去意义。

这四类风险的性质不同:表示精度损失偏向随机、可统计;算法近似误差偏向系统、随参数单调变化;归约顺序差异通常很小但难以预测;随机性则要求用统计量而非单点值来判定。校验方案必须能区分它们,否则会把系统性偏差误判为噪声,或把正常噪声误判为故障。

一致性校验的目标是什么

需要明确的是,一致性校验不追求“结果相同”,而追求“差异可解释且受控”。具体可拆成四个可操作的目标:其一,可量化——给出明确的误差度量,如最大绝对误差、相对误差、均方根误差、以及面向向量的范数相对误差;其二,可定位——当误差超限时,能指出是哪个分量、哪个时间步、哪个网格区域出了问题,而不是只知道“整体不对”;其三,可判定——预先设定容差与判定规则,让“通过/不通过”不依赖个人经验;其四,可复现——固定输入、固定随机种子、固定对比基准,使任何人重跑都能得到同一结论。

这里有一个容易被忽视的前提:基准本身必须可信。如果拿一个同样粗糙的实现当基准,校验就变成了“两个错误互相印证”。因此课程中会把基准分为高精度参考解(如 FP64 或解析解)与业务基准解(当前生产版本)两类,前者用于评估加速算法的固有误差,后者用于评估版本替换的回归风险,二者用途不同,不可混用。

精度一致性校验任务地图 风险来源 → 校验目标 → 交付物,形成可复现的判定闭环 风险来源 表示精度损失 FP16 累加 / 舍入累积 算法近似误差 截断阶数 / 大步长 归约顺序差异 并行树 / 非结合律 随机性来源 采样 / 调度不确定性 校验目标 可量化 绝对/相对/范数误差 可定位 分量/时间步/区域 可判定 容差 + 判定规则 可复现 固定输入/种子/基准 交付物 误差度量报告 指标 + 分布 + 极值位置 容差判定表 阈值 / 条件 / 结论 复现脚本与用例 输入 / 种子 / 对比基准 超限处置记录 定位 / 归因 / 处置 超限结果反馈为新的风险样本,驱动容差与用例迭代

课程任务地图与交付物

围绕上述目标,本课程组织为一条从“认识误差”到“交付判定”的完整链路。前半程建立度量体系:明确误差的定义与参照系、选择适合向量与标量输出的度量组合、区分系统偏差与随机波动。中段进入方法层:如何设计对比实验、如何构造高精度参考解、如何用收敛阶与误差随参数的变化曲线判断误差来源。后段落到工程实践:容差如何设定、判定规则如何写成可执行脚本、超限后如何定位到具体分量与时间步、以及如何把校验嵌入持续集成流程。

课程最终形成四类可直接使用的交付物。第一是误差度量报告,包含最大绝对误差、范数相对误差、误差分位数与极值出现位置,用于回答“差多少、差在哪”。第二是容差判定表,把每个输出量的阈值、适用条件与判定结论固定下来,避免每次靠人拍板。第三是复现脚本与测试用例,锁定输入数据、随机种子、基准版本与对比口径,保证结论可重跑。第四是超限处置记录,记录越界现象、归因分析与处置动作,形成可追溯的经验库。

为了让这些交付物不停留在概念上,课程会贯穿一个具体的教学示例:对一个热传导求解器做混合精度加速,把 FP64 的迭代核改为 FP32 累加并引入跳步外推,然后用温度场的范数相对误差与最大节点误差作为度量,设定相对误差不超过 1×10⁻³ 的容差,观察误差随外推步长的变化,并定位误差最大的网格区域。需要说明的是,示例中的参数与数值均为教学假设,用于演示判定逻辑,不代表任何实际系统的实测结果。

学习本节时建议先建立一个判断习惯:看到任何“加速后结果差不多”的说法,先追问三件事——基准是什么、度量是什么、容差是多少。三者缺一,结论就不可信。