AI业务运行过程中出现浮点异常情况时,可通过溢出算子数据采集和解析进行问题定界定位。
生成的溢出算子数据文件默认存储在{dump_path}/{time}/{deviceid}/{model_name}/{model_id}/{data_index}目录下,例如:“/home/HwHiAiUser/output/20200808163566/0/npu_cluster_0/11/0”。如果没有采集到溢出数据,即不存在溢出情况,则不会生成上述目录。
存放路径及文件命名规则:
上述目录下会生成两类溢出数据文件:
用户可通过该信息知道具体出现溢出错误的算子,并通过解析溢出算子dump文件知道该算子的输入和输出。
python3 msaccucmp.py convert -d /home/HwHiAiUser/dump -out /home/HwHiAiUser/dumptonumpy -v 2
-d参数支持传入单个文件,对单个dump文件进行转换,也支持传入目录,对整个path下所有的dump文件进行转换。
$ python3
>>> import numpy as np
>>> a = np.load("/home/HwHiAiUser/dumptonumpy/Pooling.pool1.1.5.1732082705016774.output.0.npy")
>>> b = a.flatten()
>>> np.savetxt("/home/HwHiAiUser/dumptonumpy/Pooling.pool1.1.5.1732082705016774.output.0.txt", b)
转换为.txt格式文件后,维度信息、dtype均不存在。详细的使用方法请参考numpy官网介绍。
由于生成的溢出数据是二进制格式,可读性较差,需要通过工具将bin文件解析为用户可读性好的json文件。
建议用户将data_index最小的目录下时间戳最小的dump文件作为待解析文件。
python3 msaccucmp.py convert -d /home/HwHiAiUser/opdebug/Opdebug.Node_OpDebug.1.5.1732082705016774 -out /home/HwHiAiUser/result
关键参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
{
"DHA Atomic Add": {
"model_id": 0,
"stream_id": 0,
"task_id": 0,
"task_type": 0,
"pc_start": "0x0",
"para_base": "0x0",
"status": 0
},
"L2 Atomic Add": {
"model_id": 0,
"stream_id": 0,
"task_id": 0,
"task_type": 0,
"pc_start": "0x0",
"para_base": "0x0",
"status": 0
},
"AI Core": {
"model_id": 514,
"stream_id": 563,
"task_id": 57,
"task_type": 0,
"pc_start": "0x1008005b0000",
"para_base": "0x100800297000",
"kernel_code": "0x1008005ae000",
"block_idx": 1,
"status": 32
}
}
|
完整字段说明:
下列字段包含当前可解析的所有字段,各产品所包含字段请以实际产品解析结果为准。
例如:status为272,转换成16进制为0x00000110,则可以判定出可能原因为0x00000010+0x00000100。
注:上述浮点异常信息为对应16进制bit位的异常表示,可能会出现多种浮点异常组合的情况。