问题来源定界

找到最先出现nan的算子dump数据文件后,根据情况判断问题根源:

  1. 如果nan出现在某个算子的输出数据中,取对应算子的输入数据,在CPU下用相同的算子逻辑执行,得到CPU算子输出,如果CPU算子输出和NPU算子输出不匹配,那么说明nan是该算子错误执行产生,可以定界为该算子问题;如果CPU算子输出和NPU算子输出匹配,那么说明nan是算子正常执行产生,需要继续向上找到该算子的上游算子,判断是否上游算子存在执行问题或其他问题;
  2. 如果nan出现在某个算子的输入数据中,需要继续向上找该算子的上游算子,找到nan的来源;如果上游算子的输出正常,而当前算子的输入异常,那么定界为上游算子执行到当前算子的间隔时间中出现了内存踩踏;否则继续找上游算子是否存在其他问题。
  3. 如果nan出现在embedding variable中,那么定界为Rec SDK查表存在问题。