面向张量核的算子感知混合精度容差校准
摘要
本文提出了一种算子感知的校准方法,用于张量核正确性测试中的绝对容差校准,利用误差分布数据设定更严格的阈值。该方法在缺陷检测中将召回率绝对提升了9.3%,且误报极少,在gpuemu语料库上得到了验证。
arXiv:2607.16228v1 Announce Type: new
摘要:大多数张量核正确性测试都采用固定形状的“全接近”风格检查,使用手工挑选的绝对和相对容差。这些阈值在语料库中复制粘贴,很少重新审视。我们挖掘了每个测试用例的元素级误差分布,这些分布来自累积的云端GPU运行,涵盖26个条目的gpuemu语料库和2种数据类型(共8,076行结果)。然后我们提出一个经验性问题:在正确实现下观察到的核本身,会支持什么样的绝对容差?
答案比当前手工挑选的atol要严格得多。最严格的是attention_triton fp16,达到$2{,}184\times$。仅限于语料库中配有正确对照版本的七个LLM风格错误变体,校准后的每操作每数据类型容差将缺陷检测召回率从73.2%(1,805/2,467)提升到82.4%(2,034/2,467),绝对值提升9.3个百分点(+229个新检测)。对照组的误报数量从0增加到20(共1,882个正确控制案例,增加1.1个百分点)。
查看缓存全文
缓存时间: 2026/07/21 06:46
# 面向张量内核的算子感知混合精度容忍度校准 来源:https://arxiv.org/html/2607.16228 11institutetext:亚利桑那州立大学,美国 11email:[email protected] ###### 摘要 大多数张量内核正确性测试都采用固定形状的 allclose 风格检查,并搭配人工选取的绝对容忍度和相对容忍度。这些阈值在语料库中被复制粘贴,且鲜少重新审视。我们从 26 个条目的 gpuemu 语料库以及 2 种数据类型(共 8,076 行结果)的累积云端 GPU 运行中,挖掘出每个测试用例的逐元素误差分布。然后我们提出一个经验性问题:内核本身,在其正确实现下,会证明多大的绝对容忍度是合理的?答案是比当前人工选取的 atol 要严格得多。最大收紧发生在 attention_triton fp16 上,达到了 2,184 倍。仅考虑语料库中提供了成对正确版本的七个 LLM 风格有缺陷变体,经校准的每(算子,数据类型)容忍度将缺陷检测召回率从 73.2%(2,467 中的 1,805)提高到 82.4%(2,467 中的 2,034),绝对提升了 9.3 个百分点(新增 229 个检测)。控制误报数量从 0 增加到 1,882 个正确控制案例中的 20 个(+1.1 个百分点)。 ## 1 引言 混合精度内核(fp16、bfloat16、fp32)存在于每个现代深度学习系统中[1 (https://arxiv.org/html/2607.16228#bib.bib14),5 (https://arxiv.org/html/2607.16228#bib.bib15)]。它们的正确性通过绝对和相对容忍度与更高精度的参考实现进行比较来判断: `torch.allclose(out, ref, atol=ε, rtol=δ)` 原则上,容忍度 ε 和 δ 是特定于算子和数据类型的。实际上,它们在整个基准测试中是一致的。KernelBench[6 (https://arxiv.org/html/2607.16228#bib.bib1)] 使用 atol=1e-5, rtol=1e-2。GEAK[9 (https://arxiv.org/html/2607.16228#bib.bib2)] 为每个算子使用一份简短的列表。这些人工选取的值在大多数情况下都能很好地工作。但设置错误会带来不对称的代价。 **过于宽松**:真正的漏洞会漏掉。我们在下面量化了 gpuemu 有缺陷语料库[8 (https://arxiv.org/html/2607.16228#bib.bib24)]上 9.3 个百分点的召回率差距。 **过于严格**:处于容忍度带边缘的正确内核会变得不稳定,导致不稳定失败,并在 CI 中被禁用。 本文使这种权衡变得可测量,并提出一种一次性校准方法,同时改进这两个方面。贡献有三点: 1. 一种测量工具:配套制品[8 (https://arxiv.org/html/2607.16228#bib.bib24)]的验证器会记录每个测试用例的完整逐元素误差分布:计数、超出数量、绝对误差百分位数、相对误差包络、ULP 包络。完整模式列在第 3.1 节 (https://arxiv.org/html/2607.16228#S3.SS1) 中。这些数据足以驱动下面的校准。 2. 一种校准协议:对于每对(算子,数据类型),我们计算正确内核通过案例中 `max_abs` 的第 95 百分位数,并乘以 1.5 的安全因子。然后将这个校准后的 atol 应用于该算子族中的每个变体,包括 LLM 风格的有缺陷变体,并重新分类。 3. 基于 8,076 行结果的实证结果:校准后的 atol 在七个成对有缺陷变体中额外恢复了 229 个有缺陷内核的检测。召回率从 73.2% 提高到 82.4%(+9.3 个百分点)。代价是控制误报净增加了 20 个(从 0 增加到 1,882 个正确控制案例中的 20 个,+1.1 个百分点)。 ## 2 相关工作 **混合精度容忍度的实践**。PyTorch 混合精度文档[1 (https://arxiv.org/html/2607.16228#bib.bib14)] 描述了用于 fp16 的动态梯度缩放解决方法,并建议使用 fp32 主副本进行累加,但未提供用于正确性测试的每个算子的容忍度指导。Kalamkar 等人的 BF16 研究[5 (https://arxiv.org/html/2607.16228#bib.bib15)] 确立了 BF16 的数值范围优势,但未涉及内核级别的容忍度设置。V-ABFT[4 (https://arxiv.org/html/2607.16228#bib.bib16)] 和最近的逐分量误差分析[3 (https://arxiv.org/html/2607.16228#bib.bib17)] 为矩阵乘法累加开发了解析界限,但需要特定于算子的推导。 **启发式校准**。El Arar 等人[3 (https://arxiv.org/html/2607.16228#bib.bib17)] 提出生成具有代表性尺寸的正定矩阵,在 10 万次试验中计算相对验证误差,并将阈值设置为观察到的最大值加上 20% 的安全余量。我们的协议在三个方面不同:工作负载是实际的模糊测试语料库,而不是合成的正定矩阵;我们使用第 95 百分位数乘以 1.5 倍安全因子,对单案例异常值具有鲁棒性;我们在种子有缺陷的语料库上评估召回率改进,而不仅仅是报告校准后的阈值。 **DL 库测试**。FreeFuzz[10 (https://arxiv.org/html/2607.16228#bib.bib6)]、DocTer[11 (https://arxiv.org/html/2607.16228#bib.bib7)]、DeepREL[2 (https://arxiv.org/html/2607.16228#bib.bib8)] 和 NablaFuzz[12 (https://arxiv.org/html/2607.16228#bib.bib9)] 使用跨后端或蜕变预言机来发现逻辑漏洞,无需每个算子的 atol。它们避免了校准问题,但只能标记改变与其他实现比较结果的漏洞。校准后的 atol 是互补的;它收紧了相同实现参考预言机——当没有其他后端可用时(例如,一个新的 Triton 内核),这是唯一的选择。 ## 3 方法 ### 3.1 捕获的分布 gpuemu 验证器在每次验证时都会填充一个 `ErrorStats` 记录。该记录包含 11 个字段:`count`(元素比较次数);`num_exceeding`(超出每(算子,数据类型)容忍度的计数);绝对误差包络(`max_abs`、`mean_abs`)和百分位数(`p50_abs`、`p90_abs`、`p99_abs`);相对误差对(`max_rel`、`mean_rel`);以及 ULP 对(`max_ulp`、`mean_ulp`)。 fp16 和 bf16 的 ULP 距离在本机 16 位有序表示中计算。对于 fp32 和 fp64,分别在 32 位和 64 位表示中计算。NaN 和 Inf 输入会使 ULP 饱和为 `u64::MAX`。所有值都通过传递结果的同一 JSON 协议进行传输,因此校准数据是每次运行的免费副产品。 ### 3.2 校准协议 对于算子族中的每个正确内核(例如,softmax 族中的 `softmax_triton`)和每种数据类型: ``` passing_abs = [ row.max_abs for row in results if row.kernel == K_correct and row.dtype == DT and row.passed ] proposed_atol = percentile(passing_abs, 95) * 1.5 ``` 然后我们将 `proposed_atol` 应用于该族中的每个内核,包括正确和有缺陷的,并重新计数。 1.5× 的安全乘数是一个固定的超参数。在 1.25× 到 2.0× 范围内的正式灵敏度扫描被列为第 6 节 (https://arxiv.org/html/2607.16228#S6) 中的后续工作 v2。 ### 3.3 校准源映射 从有缺陷变体到其正确对应版本的映射目前通过校准脚本中的命名约定硬编码(例如,`softmax_llm_buggy` 变体映射到 `softmax_triton`)。未来版本应从每个内核的元数据文件中读取一个 `calibrate-against` 字段。 ### 3.4 假设 校准依赖于四个假设: 1. 语料库中每个算子族至少包含一个正确内核。校准百分位数只有在正确样本上才有意义。26 个条目的 gpuemu 语料库通过构造满足这一点。 2. 对于每对(算子,数据类型),fp64 参考是基准真相。我们据此校准的误差分布是内核相对于 fp64 的固有误差。 3. 1,882 个正确控制案例代表了该算子的典型工作负载。该语料库涵盖了边界和常规形状以及三种值分布(均匀、注入 NaN、对抗性),我们认为这对于 LLM-Triton 类别具有代表性。 4. 1.5× 的安全乘数是预先设定的。正式灵敏度扫描是后续工作 v2。 ## 4 评估 **数据**。从 26 个条目的 gpuemu 语料库在 2 种数据类型上的云端 GPU 运行中累积了 8,076 行结果(16 个控制变体加上 10 个 LLM 风格有缺陷变体;有关规范语料库表,请参见配套论文[8 (https://arxiv.org/html/2607.16228#bib.bib24)])。每个正确的(算子,数据类型)单元都会产生一个校准样本。下面的要点仅限于提供成对正确版本的七个有缺陷变体。完整的收紧表涵盖 14 个具有有限校准容忍度的(算子,数据类型)单元(表 2 (https://arxiv.org/html/2607.16228#S4.T2))。运行在 2026-05-27 至 2026-06-11 期间在 RTX 3060 上捕获;所有错误统计有效载荷均持久保存到 Backblaze B2 存储桶。 **要点**。将来自每个正确内核的 `p95 × 1.5` 作为校准后的 atol 应用于语料库,会像表 1 (https://arxiv.org/html/2607.16228#S4.T1) 所示那样改变判决。 表 1:校准后的 atol 与当前每个算子的 atol,七个成对有缺陷子集。 即在七个成对有缺陷子集上实现了 9.3 个百分点的召回率提升,代价是净新增 20 个控制误报。这 20 个新失败集中在(算子,数据类型)单元上,其中内核的典型最大绝对误差足够小,以至于校准后的第 95 百分位数收紧到低于少数人工选取的异常值(layernorm fp32 和 fp16、sigmoid_triton fp16、softmax fp16、rmsnorm_triton fp16 以及几个 matmul 单元)。表 2 (https://arxiv.org/html/2607.16228#S4.T2) 报告了代表性条目上每(算子,数据类型)的收紧因子。 表 2:每(算子,数据类型)的收紧因子,选自总共 14 个条目。 中位数在 100× 到 200× 之间,这表明人工选取的容忍度通常选择具有较大的安全余量,从而掩盖了真正的漏洞。 参考图注 图 1:收紧因子(当前 atol / 校准后 atol),对数尺度。1.0 右侧的条形表示当前容忍度比校准后宽松。 校准后 atol 下每个有缺陷内核的召回率改进(选定条目)见表 3 (https://arxiv.org/html/2607.16228#S4.T3)。 表 3:每个有缺陷内核的召回率,当前与校准后 atol,选定条目。 最大的召回率增益出现在形状相关的尾部掩码漏洞上(softmax\_*)。这些正是人工选取的 atol 足够宽以至于在大多数形状下掩盖了漏洞的情况。 ## 5 讨论 校准与输入生成[7 (https://arxiv.org/html/2607.16228#bib.bib26)] 相互作用。当边界模糊测试已经捕获了统一错误漏洞的每一个案例时(例如 gelu_triton_buggy),收紧 atol 不会改变任何东西。校准的价值集中在形状相关的漏洞和数据类型上,其中人工选取的 atol 被悲观地猜测了。 1.5× 的安全乘数可以用来自算子已知误差结构的解析界限替代。例如矩阵乘法累加的 `O(K·ε_dtype)` 和约简的 `O(N·ε_dtype)`。这种升级将用算子感知的误差模型取代经验校准。测量基础设施(验证器的 `ErrorStats` 记录)直接支持这一点。我们将模型拟合留给未来的工作。 ## 6 局限性 校准目前仅针对每(算子,数据类型)的 atol。一个幅度缩放的变体(`atol + rtol·|r|`)将跟踪输出幅度,并且很可能会在输出范围跨形状变化的算子(matmul、l2norm)上进一步收紧。 1.5× 的安全因子是预先固定的。在 1.25× 到 2.0× 范围内的正式灵敏度扫描以及留一运行验证,针对保留运行进行评估,被列为本文后续版本 v2 的后续工作。 所有数据均来自单个 GPU 型号(RTX 3060)。跨 GPU 代的分布偏移,特别是 SM80 与 SM90 之间的偏移,此处尚未研究。配套论文[8 (https://arxiv.org/html/2607.16228#bib.bib24)] 报告了在正确性预言机上五个 GPU 类别的判决完全相同,这表明校准结果可以跨 GPU 移植,但我们没有直接测量每个 GPU 的误差分布。 ## 7 结论 一种基于控制案例第 95 百分位数的一次性校准,将人工选取的每个算子 atol 从粗略的经验法则转变为度量的包络线。该校准使用了验证器已在每次运行时记录的误差分布。在 gpuemu 语料库的七个成对有缺陷子集上,它恢复了 9.3 个百分点的漏洞检测召回率(从 2,467 中的 1,805 到 2,467 中的 2,034),代价是净新增 20 个控制误报(从 1,882 中的 0 到 20,+1.1 个百分点)。校准本身在累积的运行记录上只需几秒钟即可完成。关键的收紧因子(中位数约为 200×,在 attention_triton fp16 上高达 2,184×)表明,LLM 内核生态系统中的手工容忍度通常远宽松于算子的固有误差包络。 #### 制品。 #### 许可证。 本预印本根据 CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 发布。 ## 参考文献 - [1] S. Ahmed et al. (2022) What every user should know about mixed precision training in PyTorch. Note: PyTorch blog. Updated November 2024. External Links: Link (https://pytorch.org/blog/what-every-user-should-know-about-mixed-precision-training-in-pytorch/) Cited by: §1 (https://arxiv.org/html/2607.16228#S1.p1.1), §2 (https://arxiv.org/html/2607.16228#S2.p1.1). - [2] Y. Deng, C. Yang, A. Wei, and L. Zhang (2022) Fuzzing deep-learning libraries via automated relational API inference. In Proc. 30th ACM Joint Eur. Softw. Eng. Conf. and Symp. Found. Softw. Eng. (ESEC/FSE), pp. 44–56. External Links: Document (https://dx.doi.org/10.1145/3540250.3549085) Cited by: §2 (https://arxiv.org/html/2607.16228#S2.p3.1). - [3] E. El Arar, S. Filip, T. Mary, and E. Riccietti (2025) Mixed precision accumulation for neural network inference guided by componentwise forward error analysis. arXiv preprint. External Links: 2503.15568, Link (https://arxiv.org/abs/2503.15568) Cited by: §2 (https://arxiv.org/html/2607.16228#S2.p1.1), §2 (https://arxiv.org/html/2607.16228#S2.p2.1). - [4] Y. Gao, Q. Hua, and Z. Chen (2026) V-ABFT: variance-based adaptive threshold for fault-tolerant matrix multiplication in mixed-precision deep learning. arXiv preprint. External Links: 2602.08043, Link (https://arxiv.org/abs/2602.08043) Cited by: §2 (https://arxiv.org/html/2607.16228#S2.p1.1). - [5] D. Kalamkar, D. Mudigere, N. Mellempudi, D. Das, K. Banerjee, S. Avancha, D. T. Vooturi, N. Jammalamadaka, J. Huang, H. Yuen, J. Yang, J. Park, A. Heinecke, E. Georganas, S. Srinivasan, A. Kundu, M. Smelyanskiy, B. Kaul, and P. Dubey (2019) A study of BFLOAT16 for deep learning training. arXiv preprint. External Links: 1905.12322, Link (https://arxiv.org/abs/1905.12322) Cited by: §1 (https://arxiv.org/html/2607.16228#S1.p1.1), §2 (https://arxiv.org/html/2607.16228#S2.p1.1). - [6] A. Ouyang, S. Guo, S. Arora, A. L. Zhang, W. Hu, C. Ré, and A. Mirhoseini (2025) KernelBench: can LLMs write efficient GPU kernels?. arXiv preprint. External Links: 2502.10517, Link (https://arxiv.org/abs/2502.10517) Cited by: §1 (https://arxiv.org/html/2607.16228#S1.p3.2). - [7] D. Sarkar (2026) Test-input generation for tensor programs: what actually finds kernel bugs. Note: Manuscript in preparation. Draft source at https://github.com/sarkar-dipankar/gpuemu-arxiv-paper/tree/main/p3. Cited by: §5 (https://arxiv.org/html/2607.16228#S5.p1.1). - [8] D. Sarkar (2026) The correctness
相似文章
训练-推理内核合约:约束后训练与部署中的差异
本文形式化了现代AI后训练流程中训练内核与推理内核之间的数值差异,提出了一种内核合约规范以及一系列Lipschitz风格的界限,以减轻离策略偏差、切片级回归和可重复性问题。
温度缩放并不足够:人类标签分布下的校准差距
本文研究了当温度缩放——一种依赖独热标签的常见事后校准方法——应用于反映真实人类分歧的软标签分布训练模型时所产生的校准差距。跨视觉和语言领域的实验表明,基于硬标签校准的温度缩放始终逊于直接软标签校准,且在语言任务中差距更大,凸显了在安全关键部署中的风险。
多教师策略蒸馏中工具调用边界漂移的诊断与校准
本文诊断并提出SoftClamp校准方法,可减少智能语言模型在多教师策略蒸馏中的工具调用边界漂移,在保持准确率的同时降低过度调用。
几何感知的神经算子事后不确定性量化
提出REEF-GP,一种事后不确定性量化框架,通过将高斯过程拟合到冻结神经算子的残差上并利用其内部嵌入,以低成本实现几何感知且校准的不确定性。
利用Wasserstein对抗学习纠正传感器引起的分布漂移
提出了一种基于Wasserstein-GAN的方法,用于传感器引起的分布漂移的无监督校准,并在跟踪探测器玩具模型和带有老化效应的模拟量能器数据上进行了验证。