苏州炬擎数原科技
Novi Enterprise ↗ 中文 / EN联系我们
← 返回技术 Blog
技术 Blog 2026-10-13 · 次阅读

同一模型在 CPU 与 NPU 上输出不一致,按什么顺序排查

苏
苏州炬擎数原科技
TorchDigit
同一模型在 CPU 与 NPU 上输出不一致,按什么顺序排查

同一个模型在 CPU 与 NPU 上跑,输出对不上,是端侧多后端部署里最常遇到的一类问题。拿到两份不一样的输出,第一步先分它是「差一点」还是「差很多」——数值末位的小数差别,和整句结论的不同,成因完全在两处,排查路径也不同。

差一点,多是量化误差与累加顺序带来的数值差,模型行为一致,只是精度不同。差很多,多半是某一步在 NPU 上换了执行方式,算子没适配被替换,或者回落到别的实现上。分清是哪一种,后面的顺序才排得对。

为什么先怀疑算子而不是模型

两份输出不一致,第一反应常是「模型有问题」。同一份权重同时在两侧跑,模型本身是同一份,差异只可能出在执行这一侧。执行链路上,最先把同一个模型跑出两种结果的地方,就是算子。

NPU 的算子支持表覆盖常见的算子集合。权重里用到的算子落在支持表内,两侧执行路径一致;落在表外的算子,要么回落到 CPU 执行,要么被替换成功能相近的实现,两条路径的数值行为不再完全对齐。排查先从算子的命中与回落查起,命中的部分先排除掉。

算子对齐之后再看量化,量化对齐之后再查逐层精度,逐层对上之后最后看调度与并发。顺序不反着走:越靠前的因素影响面越大,先排大面积、后排局部,定位最快。

四步排查顺序

四步按顺序走,每一步比对的东西和判据各不相同。

步骤 比对什么 判据 常见成因
一、比对算子 算子命中与回落情况 两侧命中率与回落后端清单一致 未适配算子回落或被替换
二、比对量化 位宽、量化方式、校准集 两侧位宽与校准一致 舍入误差累积
三、比对精度 逐层输出的数值差 逐层最大偏差在阈值内 累加顺序不同与数值溢出
四、比对调度 并发与执行顺序 单并发下差异收敛 并发抢占与算子融合差异

四步之间有条捷径:某一步比对下来两侧完全一致,该步因素即被排除,直接进下一步,不必回头重排。

同一模型在 CPU 与 NPU 上输出不一致,按什么顺序排查

每一步具体怎么比对

第一步查算子。取一份算子级别的清单,逐条对照两侧的执行后端,命中与回落各标一处。这一步的产出是一张差异清单,标出哪些算子的执行方式不同。

第二步查量化。核对两侧的位宽、量化方式与校准集,三者对齐之后再跑。校准集不同,量化后的权重取值就有出入,输出自然对不上。这一步把量化的变量收掉。

第三步查精度。逐层比对两侧的中间输出,看偏差从哪一层开始变大。偏差逐层累积的,重点看求和、归一化这类敏感层;某层突然放大的,重点看该层的实现。

第四步查调度。把并发降到单请求再跑一遍。单请求下差异收敛、多请求下差异扩大,问题就在调度与并发上,两侧的算子融合和执行顺序不同,并发下的结果才会分叉。

同一模型在 CPU 与 NPU 上输出不一致,按什么顺序排查

差异怎么量化与记录

差异要能量、能记,结论才站得住。逐层记录同一位置的数值差,取最大相对偏差作为该层的差异指标;输出层记两侧结论的一致程度,token 级逐位对齐,标出首个分歧位置。

记录项 怎么写 用途
步骤 本步的比对结果 定位问题落在哪一步
层号 中间输出的层或算子位置 定位偏差起点
最大相对偏差 该层两侧数值差的最大值 判断偏差是否逐层累积
首个分歧位置 输出序列中首次不同的位置 判断差异从何处开始
复跑结果 同一用例重跑后的差异 判断差异是否稳定复现

首次分歧位置最有价值。分歧出现在第一层,多看算子;出现在靠后的层,多看累积误差。差异稳定复现的,按上面的顺序逐层收窄;差异时有时无的,重点看调度与并发。

记录按版本归口。换一次推理后端、改一次量化方案,用同一批用例重跑并留存新记录,新旧两版并排看,差异是收窄还是扩大一目了然。

常见问题

问:两侧输出差一点点,要处理吗?
先看这点差会不会改变结论。结论一致的数值差记进评测记录,作为多后端一致性的基线;结论出现分歧的,按四步顺序定位到具体层。

问:算子没适配,是不是只能换模型?
先看该算子的替代实现能不能对齐数值。替代实现在支持表内且数值对齐的,经过精度回归后直接使用;对齐不了的,对该算子单独处理,其余链路照常推进。

问:单后端跑得好好的,换 NPU 就要重查一遍吗?
每次换后端都走一次四步比对。算子支持表、量化路径、调度方式在不同后端上各不相同,比对一次的成本,远小于带着一个说不清的差异上线。

CPU 与 NPU 输出不一致,排查靠的是固定顺序:先算子、再量化、再精度、最后调度,每一步都把变量收窄一层。炬擎数原(TORCHDIGIT)在端侧推理链路上提供炬焰推理引擎与端侧模型系列,多后端一致的比对口径可按本文的四步顺序执行。

以上内容仅供参考。

上一篇 量化前后精度怎么比:三类任务的评测流程与判定线
下一篇 长上下文在端侧的内存账怎么算:权重与 KV Cache 的估算方法

相关阅读