VERIFY 组件错误码【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto范围FBXXXX本文档说明 VERIFY 组件的错误码定义、场景说明与排查建议。错误码定义相关错误码的枚举与码值统一定义在framework/include/tilefwk/error_code.h含 VERIFY 相关枚举及 Calculator 层的CalculatorErrorScene等。排查建议典型错误码场景该场景涉及的错误码属于精度工具组件功能的一部分出现这些错误码精度工具仍然在正常发挥作用用户可结合一下排查建议自行开展精度问题定位错误码0xB4001UVERIFY_RESULT_MISMATCH日志示例该场景为精度校验失败场景同时会伴随如下输出[ERROR] PYPTO(1535746):2026-03-20 09:43:12.887 [flow_verifier.cpp:105][VERIFY]:ErrCode: FB4001! tensor_graph Verify for 1 data view list index 0 result FAILED [INFO ] PYPTO(1535746):2026-03-20 09:43:12.887 [flow_verifier.h:151][VERIFY]: Error rtol0.001000 atol0.001000 index:0 golden:10 output:1 absDiff:9 relDiff:1.63636 Error rtol0.001000 atol0.001000 index:1 golden:10 output:1 absDiff:9 relDiff:1.63636 Error rtol0.001000 atol0.001000 index:2 golden:10 output:1 absDiff:9 relDiff:1.63636 Error rtol0.001000 atol0.001000 index:3 golden:10 output:1 absDiff:9 relDiff:1.63636 Error rtol0.001000 atol0.001000 index:4 golden:10 output:1 absDiff:9 relDiff:1.63636 Error rtol0.001000 atol0.001000 index:5 golden:10 output:1 absDiff:9 relDiff:1.63636 All size:256 failNum:256 maxAbsDiff:9 maxRelDiff:1.63636 averageAbsDiff:9 averageRelDiff:1.63636 errorCount:256 errorRatio:1 zeroCount:0 zeroRatio:0 maxAbs- index:0 golden:10 output:1 absDiff:9 relDiff:1.63636 maxRel- index:0 golden:10 output:1 absDiff:9 relDiff:1.63636首先根据类似示例中[VERIFY]:ErrCode: FB4001! tensor_graph Verify for 1 data view list index 0 result FAILED确定精度出错的阶段。如示例中出错阶段为tensor_graph即进入pass前精度出错。定位手段指导pass_verify_print与pass_verify_save对于在tensor graph阶段的精度问题进行人工数据分析。 精度工具提供pypto.pass_veirfy_print与pypto.pass_verify_save支持用户将自己编写的pypto kernal函数中的tensor的计算结果打印或者保存下来。注意该tensor既可以是最终的输出也可以是中间产生的tensor但是打印出来的结果并不是在npu中的计算结果而是基于精度工具模拟执行和用户前端表达的模拟结果。 再开启精度定位前可先确认精度工具Dump的最终输出与npu计算结果保持一致。 详参见pass_verify_print接口示例与 pass_verify_save接口示例 。精度工具skill对于在tensor graph阶段的精度问题借助ai agent进行精度定位。 当发现算子精度不对但不知道具体问题在哪可以调用pypto-precision-compare技能只需要向助手发送明确的指令“算子test_my_op.py 精度验证失败了请帮我使用算子精度问题查找技能定位是哪里有问题”或者直接指定“使用pypto-precision-compare技能定位test_my_op.py 的精度问题”, 就可以自动插入检查点根据测试生成数据文件用对比脚本分析结果得出出错的op。精度工具自动比对脚本对于发生在pass执行阶段的精度问题使用自动化脚本进行定位。 脚本路径tools/verifier/pass_compare.py当某个pass精度对比失败的时候可以利用pass_compare.py这个脚本将该对比失败的pass和前面的pass进行精度对比。对比会在精度工具dump数据的目录生成一个类似verify_passSplitKExpandFunction1773821696834386.csv这样的对比结果文件里面记录了精度对比失败的pass的每个op节点和前面pass对比的结果未能匹配上的也会记录在表中标注skip。这样就能定位到匹配上的第一个出错的节点。 脚本使用方法python3 pass_compare.py --p ExpandFunction RemoveUndrivenView --verify_path.....--p参数后面的是对比的两个pass空格隔开前面的是精度对比失败的pass后面的是作为golden的pass--verify_path参数是精度工具dump数据文件的那个目录的绝对路径。错误码0xB4003UVERIFY_RESULT_DTYPE_DIFF日志示例该场景为传入的in_out_tensors即 inputoutput 拼接数组与goldens在同一 index 上 dtype 不一致日志通常类似如下RuntimeError: Errcode: FB4003! dtype mismatch at index 1 , func ValidateVerifyOutputAndGolden, file runtime.cpp, line XX触发条件SetVerifyData中(inputs.size() outputs.size()) goldens.size()同一 index 上in_out_tensors[i]和goldens[i]都不是None两者 dtype 不一致定位指导先根据日志里的dtype mismatch at index N锁定出错 index。在 Python 侧按inputs outputs的顺序找到该 index 对应 tensor再与goldens[index]逐项核对dtype。重点检查以下混用场景torch.float16/torch.float32、bfloat16/float16、int32/int64。若 golden 来源于from_torch或中间转换确认转换前后的 dtype 没有被隐式修改。修复原则同一 index 的in_out_tensors[i]与goldens[i]必须是同一 dtype若确需不同精度请先在 Python 侧显式to(...)统一后再传入 verify。错误码0xB4002UVERIFY_RESULT_SHAPE_DIFF日志示例该场景为传入的in_out_tensors即 inputoutput 拼接数组与goldens在同一 index 上 shape 不一致日志通常类似如下RuntimeError: Errcode: FB4002! , func ValidateVerifyOutputAndGolden, file runtime.cpp, line XX触发条件SetVerifyData中(inputs.size() outputs.size()) goldens.size()同一 index 上in_out_tensors[i]和goldens[i]都不是Nonerank 不一致或逐轴比较时出现不匹配定位指导先按inputs outputs的顺序确认对齐关系再看对应 index 的 shape rank 是否一致。再逐轴比对每一轴都必须严格相等。若报错发生在构造 golden 的流程优先检查ori_shape是否和实际 tensor 语义一致。错误码0xB200FURUNTIME_EXCEPTION日志示例该场景为operation模拟执行失败往往是operation上有不正确的属性日志示例如下[ERROR] PYPTO(1693310):2026-03-20 15:08:54.112 [operation.cpp:58][VERIFY]:ErrCode: FB200F! ExecuteOperation error: op GATHER_IN_UB (magic10564) input[0] tensorMagic94, shape[82816, 512], offset[0, 0], dynValidShape[82816, 512], dynOffset[] [ERROR] PYPTO(1693310):2026-03-20 15:08:54.112 [operation.cpp:58][VERIFY]:ErrCode: FB200F! ExecuteOperation error: op GATHER_IN_UB (magic10564) input[1] tensorMagic3717, shape[1, 16], offset[0, 1792], dynValidShape[RUNTIME_GetViewValidShapeDim(RUNTIME_GetInputShapeDim(ARG_topk_indices,0),((bIdx*((RUNTIME_GetInputShapeDim(ARG_query_nope,0)/RUNTIME_GetInputShapeDim(ARG_kv_act_seqs,0))/128))s1Idx),1), RUNTIME_GetViewValidShapeDim(2048,((s2_idx*2048)1792),16)], dynOffset[((bIdx*((RUNTIME_GetInputShapeDim(ARG_query_nope,0)/RUNTIME_GetInputShapeDim(ARG_kv_act_seqs,0))/128))s1Idx), ((s2_idx*2048)1792)] [ERROR] PYPTO(1693310):2026-03-20 15:08:54.112 [operation.cpp:58][VERIFY]:ErrCode: FB200F! ExecuteOperation error: op GATHER_IN_UB (magic10564) input[2] tensorMagic12209, shape[1, 512], offset[0, 0], dynValidShape[RUNTIME_GetViewValidShapeDim(RUNTIME_GetInputShapeDim(ARG_block_table,0),bIdx,1), 512], dynOffset[bIdx, 0] [ERROR] PYPTO(1693310):2026-03-20 15:08:54.112 [operation.cpp:58][VERIFY]:ErrCode: FB200F! ExecuteOperation error: op GATHER_IN_UB (magic10564) output[0] tensorMagic3716, shape[16, 512], offset[0, 0], dynValidShape[sym_3716_dim_0, sym_3716_dim_1], dynOffset[] [ERROR] PYPTO(1693310):2026-03-20 15:08:54.116 [flow_verifier.cpp:299][VERIFY]:ErrCode: FB200F! VerifyPass failed for function TENSOR_LOOP_L4_s2_SA_LoopUnroll1_Unroll1_PATH0_hiddenfunc0_20, pass InferParamIndex (passIndex: 28, captureIndex: 4): 10447510811372117949, 3415564916459561148, 10564, GATHER_IN_UBOpError func: TENSOR_LOOP_L4_s2_SA_LoopUnroll1_Unroll1_PATH0_hiddenfunc0_leaf22 filename: /data/l00504208/g00955608/pypto/models/deepseek_v32_exp/sparse_flash_attention_quant_impl.py lineno: 136 /* /data/l00504208/g00955608/pypto/models/deepseek_v32_exp/sparse_flash_attention_quant_impl.py:136 */ 16 x 512 x DT_INT8 / sym_3716_dim_0 x sym_3716_dim_1 x DT_INT8 %37163264#(22)MEM_UB::MEM_UB !10564 TILE_GATHER_IN_UB(g:22, s:-1) %94106#(1)MEM_DEVICE_DDR::MEM_DEVICE_DDR, %3717100(0, 1792)(((bIdx*((RUNTIME_GetInputShapeDim(ARG_query_nope,0)/RUNTIME_GetInputShapeDim(ARG_kv_act_seqs,0))/128))s1Idx), ((s2_idx*2048)1792))#(22)MEM_DEVICE_DDR::MEM_D [ERROR] PYPTO(1693310):2026-03-20 15:08:54.116 [flow_verifier.cpp:299][VERIFY]:EVICE_DDR, %12209102(bIdx, 0)#(22)MEM_DEVICE_DDR::MEM_DEVICE_DDR #IS_CUBE{0} #block_size{128} 16x512xINT8/0x512xINT8 GATHER_IN_UB 82816x512xINT8/82816x512xINT8, 1x16xINT32/1x16xINT32, 1x512xINT32/1x512xINT32 out must have shape [topk_count, hidden_dim]定位指导核心报错为16x512xINT8/0x512xINT8 GATHER_IN_UB 82816x512xINT8/82816x512xINT8, 1x16xINT32/1x16xINT32, 1x512xINT32/1x512xINT32out must have shape [topk_count, hidden_dim]第一行为出错operation的简要信息 示例中16x512xINT8/0x512xINT8为输出的shape/validshape,等号右边为这个operation的opcode及其所有输入的shape/validshape。 示例中torch cpp抛出错误信息out must have shape [topk_count, hidden_dim]同时结合上一行信息可以初步判断该报错来源为该operation的输出的validshape为空shape。 如果需要进一步的信息定位可参考上方几行更详细的报错包括该operation输入输出tensor的信息以及该operation的IR。非典型错误码场景错误码 0xB0001U: VERIFY_NOT_ENABLE请检查本地torch 2.1.0。其他错误码对于其他类型的错误码往往是由于pypto内部缺陷导致如遇到请在社区联系开发人员解决。【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考