AI Core Error问题分析工具使用指南(msaicerr工具)
使用场景概述
执行业务时,若日志文件或屏幕打印信息中包含如下AI Core Error报错,此时,需要先使用故障信息收集工具asys收集故障信息,再配合使用AI Core Error分析工具msaicerr快速定位AI Core error问题的关键原因,提升开发者对AI Core Error的排查效率。
# 报错示例 there is an xx aicore error # 或报错示例 there is an xx aivec error
使用约束
- 该工具仅支持本地分析使用,即部署该工具的环境应该和日志所在环境为同一环境(运行环境)。
- 该工具依赖python3.7.5或以上版本,在安装该工具的环境中需提前安装python。
- 该工具不支持在RC模式下使用。
- 该工具暂不支持分析以下算子的AI Core Error问题:
- MatmulAllReduce类算子
- MatmulAllReduceAddRmsNorm
- MatmulAllReduceInplaceAddRmsNorm
- AllGatherMatmul
- MatmulReduceScatter
- GroupedMatmulAllReduce
- MemSet
- NonMaxSuppressionBucketize
前提条件
已在CANN运行环境上安装toolkit包。详细安装请参见《CANN 软件安装指南》。
已配置CANN基础环境变量,需要以安装时的运行用户登录环境,执行source ${install_path}/set_env.sh命令设置环境变量,其中${install_path}为软件包的安装目录,例如:/usr/local/Ascend/ascend-toolkit。
在使用msaicerr工具前,在“${install_path}/latest/toolkit/tools/msaicerr”目录下获取msaicerr.py。
使用指导
- 以运行用户登录CANN运行环境。
- 使用故障信息收集工具asys收集故障信息。
集群场景下不支持直接使用asys工具一键收集所有节点的故障信息,需要先确认报错节点后,在对应的报错节点上使用asys工具收集故障信息。
若不涉及业务复跑,则可以执行asys collect命令,直接收集故障信息;若涉及业务复跑,则可以执行asys launch命令,同时执行业务复跑和收集故障信息。命令示例如下:
- 收集故障信息
asys collect [--output="path"]
output表示收集信息所存放的目录,详细参数说明及约束请参见故障信息收集。
- 执行业务复跑+收集故障信息
asys launch --task="sh ../app_run.sh" [--output="path"]
task表示要复跑的任务,output表示收集信息所存放的目录,详细参数说明及约束请参见业务复跑+故障信息收集。
注意:离线推理场景下,若需要重新构建模型(例如通过ATC工具转换模型),需先使用asys launch命令复跑构建模型的任务,再使用重新编译的模型、使用asys launch命令复跑推理业务。另外,还需将构建模型时收集的维测信息与推理时收集的维测信息放到一个目录下,例如:$HOME/asys_output。
- 收集故障信息
- 使用AI Core Error分析工具msaicerr快速定位AI Core Error问题的关键原因。
进入“${install_path}/latest/toolkit/tools/msaicerr”目录,根据2中获取到故障信息,执行以下命令提取AI Core Error问题相关的关键信息。
python3 msaicerr.py -p $HOME/asys_output
- 在2中获取到故障信息中,请提前检查dfx/data-dump目录下是否存在dump文件、检查dfx/ops目录下是否存在算子编译信息(算子编译*.o和*.json文件)、检dfx/log/host/cannn目录下是否存在日志文件,若不存在,则无法使用msaicerr工具提取AI Core Error信息。
- 如果执行msaicerr.py脚本报错“ModuleNotFoundError: No module named 'google'”,是由于缺少protobuf库(用于存储数据的一种数据格式),需使用pip3 install protobuf --user命令安装protobuf库后,再执行脚本。
- 如果执行msaicerr.py脚本报错“ModuleNotFoundError: No module named 'chardet'”,是由于缺少chardet库(用于检测字符编码),需使用pip3 install chardet --user命令安装chardet库后,再执行脚本。
- 如果执行msaicerr.py脚本报错“ModuleNotFoundError: No module named 'bfloat16ext'”,是缺少bfloat16ext库(用于解析bf16类型的数据),需使用pip3 install bfloat16ext --user命令安装bfloat16ext库后,再执行脚本。
另外,可以使用命令python3 msaicerr.py -h,查看具体参数的含义。
以上命令中的“$HOME/asys_output”目录需根据2中存放的目录替换,执行命令成功后,在执行命令的同级目录下生成“info_{时间戳}/aicerror_{number}_{时间戳}/info.txt”文件以及异常算子测试文件test_single_op.py(该文件仅在有异常算子时才存在)。
用户可以直接通过info.txt文件进行问题分析和定位,重点关注Root cause conclusion处包含的关键信息。还可以执行python3 test_single_op.py进一步查看异常算子执行过程中的报错信息,便于分析异常算子的报错原因。
info.txt文件示例及各类问题的分析方法请参见使用msaicerr工具分析AI Core Error问题。若故障信息中存在多个AI Core Error问题,则msaicerr工具按日志时间解析第一次出现的AI Core Error问题。