十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

msaicerr 环境检查指南:使用内置算子样例验证 CANN 软硬件环境

msaicerr 环境检查指南:使用内置算子样例验证 CANN 软硬件环境 msaicerr 环境检查指南使用内置算子样例验证 CANN 软硬件环境【免费下载链接】oam-tools本项目为开发者提供故障定位工具包含故障信息收集软硬件信息展示AI core error报错分析等能力提升故障问题定位效率文档可在昇腾社区搜索“故障处理简介”选择社区版。项目地址: https://gitcode.com/cann/oam-toolsmsaicerr 是 CANN oam-tools 开源仓库中用于 AI Core Error 故障定位的工具其-e/--env模式通过内置的标杆算子Golden Op在昇腾设备上实际编译并执行一次算子从而快速验证驱动、芯片与 CANN Toolkit 的安装是否正常。本文基于 docs/zh/msaicerr/environment_check.md 展开结合 src/msaicerr 源码与 test 测试用例完整介绍该命令的格式、参数、执行原理、输出含义与失败排查方法帮助开发者在执行 AI Core Error 分析前先确认环境可用。功能说明运行内置算子样例检查软硬件环境。该模式不会对用户已有的故障数据做任何分析而是从零开始构建一个最简单的算子AddCustom在指定 Device 上完成编译、加载与执行用一条完整的算子运行链路验证以下环节是否正常驱动是否加载、Device 是否可访问通过 DSMI 接口查询设备数量与芯片信息CANN Toolkitatc / ccec 编译链是否安装正确能否完成算子编译芯片型号SoC Version是否被当前版本工具链支持昇腾 Runtime 能否在目标 Device 上成功创建流、加载 kernel 并执行算子。从源码结构看该功能也是 AI Core Error 分析流程的最后一步在 aicore_error_parser.py 的parse()中第 10 步 Verify the environment using the sample operator 会复用同一套run_test_env()逻辑将检查结果写入env_available字段作为判断报错是否为环境问题的依据。因此-e模式既可单独用于环境预检也可理解成把分析流程中最耗时的环境验证步骤提前独立执行。命令格式python3 msaicerr.py -e -dev 0使用前需进入 msaicerr.py 脚本所在目录。CANN 软件安装后该脚本位于{install_path}/tools/msaicerr本仓库源码对应 src/msaicerr/msaicerr.py。同时需确保已执行source {INSTALL_DIR}/set_env.sh完成环境变量初始化{INSTALL_DIR}为 CANN 安装路径root 安装默认/usr/local/Ascend/cann具体准备步骤见 msaicerr工具环境准备。参数说明-e 或 --env必选参数表示检查环境。在源码中对应 msaicerr.py 注册的actionstore_true开关仅传入-e即可触发test_env()执行。-dev 或 --device_id可选参数指定运行内置算子样例的 Device ID。不设置该参数时默认 Device ID 为 0。对应源码 msaicerr.py 中的default0, typeint且该参数被声明为RequireOtherArgs即必须与-p/--report_path或-e/--env搭配使用单独使用会报错-dev must be used with -p/--report_path or -e/--env参见 test_msaicerr_ut.py 的test_only_dev用例。参数约束补充若同时传入-p与-e源码按-d→-p→-e的优先级只执行第一个匹配分支见 msaicerr.py因此环境检查请单独使用-e。环境检查前会先做一次设备合法性校验verify_device_id通过 DSMI 查询设备总数若device_id小于 0 或大于等于设备总数会输出Invalid device_id并返回参数错误错误码MS_AICERR_INVALID_PARAM_ERROR。测试用例test_check_env_invalid_devtest_msaicerr_ut.py覆盖了该分支。工具启动时还会检查ASCEND_OPP_PATH环境变量是否已设置未设置会直接报 Environment variable not set after the CANN software is installed. 并退出。使用示例和输出说明python3 msaicerr.py -e输出示例如下[INFO] Total device count: 1 [INFO] Valid device_id 0 [INFO] Get soc_version: xxxxxxx [INFO] Start to test env with golden op. [INFO] The build-in sample operator runs successfully, The environment is normal.各条日志的含义与来源日志含义源码位置Total device count: N通过 DSMI 查询到的昇腾设备总数msaicerr.py 中verify_device_id()Valid device_id N指定 Device ID 合法可以继续msaicerr.py 中check_device_valid()Get soc_version: xxx从芯片信息中解析出的 SoC 型号如 Ascend910B4、Ascend950 等用于选择对应的算子编译参数msaicerr.py底层经 dsmi_interface.py 的get_chip_info()拼接chip_type chip_name得到Start to test env with golden op.开始编译并运行内置标杆算子msaicerr.pyThe build-in sample operator runs successfully, The environment is normal.环境正常返回错误码 0MS_AICERR_NONE_ERRORmsaicerr.py输出文件debug_info.txt在执行 msaicerr.py 工具后在执行 msaicerr.py 工具的同级目录下会生成debug_info.txt文件用于记录工具执行过程中的日志信息。该文件对排查环境检查失败原因至关重要当 stdout 只给出概要结论时debug_info.txt中保留着完整的 INFO/DEBUG/WARN/ERROR 级别日志链路。需注意该文件要求当前目录可写若当前目录或debug_info.txt不可写工具会直接报错退出见 msaicerr.py。环境检查的底层实现原理主流程调用链-e模式的完整调用链如下均在 src/msaicerr 内main()解析参数后进入test_env(args.device_id)msaicerr.pycheck_device_valid()校验设备号get_soc_version()获取 SoC 型号调用AicoreErrorParser.run_test_env(soc_version, device_id)aicore_error_parser.py在{install_path}/tools/msaicerr目录下创建以时间戳命名的临时目录temp_{date_string}与日志目录golden_op_{date_string}设置子进程环境变量ASCEND_SLOG_PRINT_TO_STDOUT0避免 SLOG 刷屏、ASCEND_PROCESS_LOG_PATH指向日志目录、PYTHONPATH追加 msaicerr 源码目录以sys.executable拉起子进程执行golden_op.py soc_version device_id temp_dirgolden_op.pygolden_op.py完成实际编译与运行见下节返回码非 0 时父进程输出失败日志并返回硬件错误码MS_AICERR_HARDWARE_ERR103子进程成功后父进程在AddCustom/build_out/op_kernel下查找编译产物 JSON读取kernelName并在 golden op 日志目录中检索是否出现 AI Core Error 关键字search_aicerr_log一旦检出即判定环境异常返回失败。内置标杆算子Golden Op做了什么在 golden_op.py 中标杆算子是一个浮点向量加法算子AddCustom见 constant.py 中ModeCustom.ADD_CUSTOM AddCustomget_compile_file(soc_version, temp_dir)依据 SoC 型号生成对应的编译文件Ascend 各芯片的编译配置见 ms_interface/ascend950、ms_interface/ascend960dt 等平台目录构造输入两个形状为(256, 32)的 fp16 全 1 张量输出大小为 16384 字节、fp16、形状(256, 32)GoldenOp.get_block_dim()通过 DSMI 查询 Vector Core 数量作为 block dim查询结果为 0 时表示非 aicorevector 芯片回退到 AI Core 数量dsmi_interface.py 的get_vector_core_count()/get_aicore_count()对应回退逻辑的测试见 test_golden_op_ut.py通过单算子测试框架AscendOpKernelRunnersingle_op_test_frame/common/ascend_tbe_op.py在指定 Device 上加载 kernel、创建流并执行运行结果中出现 Execute single op case failed 则判定失败返回 0 表示运行成功否则退出码为 -1。结果判定与错误码成功输出The build-in sample operator runs successfully, The environment is normal.返回错误码 0MS_AICERR_NONE_ERROR定义于 constant.py失败输出The built-in sample operator running failed. See the detailed error logs above...返回错误码 103MS_AICERR_HARDWARE_ERR表示检查到硬件/环境错误子进程异常退出、找不到编译产物 JSON、检出 AI Core Error 日志等情况均归为失败并在日志中提示可能的根因驱动未加载、SoC 不匹配、Toolkit 未正确安装、设备内存不足等。该判定逻辑在 test_msaicerr_ut.py 的test_check_env_success/test_check_env_fail以及 test_msaicerr_extra_ut.py 的test_env_success/test_env_fail/test_env_exception/test_env_attribute_error/test_env_type_error中均有覆盖AttributeError与TypeError均被兜底为硬件错误码上报而非直接崩溃。环境检查失败时的排查思路当输出出现The built-in sample operator running failed或Exception occurred during environment test时可按以下顺序排查查看 debug_info.txt 完整日志定位具体是哪一步失败设备查询、soc_version 获取、编译、执行、日志扫描。确认驱动与设备状态Total device count: 0或Invalid device_id说明驱动未加载或设备不可见可先用npu-smi info类工具确认昇腾设备是否在线本文不展开具体命令。确认 SoC 型号支持日志中的Get soc_version若返回空或异常型号说明芯片信息查询失败可能是驱动版本与芯片不匹配子进程报错提示chip not supported (soc_versionxxx)时说明当前 CANN Toolkit 不支持该型号。确认编译链完整报错Can not find compiled json说明算子编译失败重点检查 atc / ccec 工具链与ASCEND_OPP_PATH环境变量必要时重新执行source {INSTALL_DIR}/set_env.sh。确认设备内存与占用日志中若出现 AI Core Error 关键字可能是硬件故障、驱动版本不匹配或设备显存不足可结合golden_op_{date_string}目录下的设备日志进一步定位。需要说明的是本仓库为开源源码实际安装包中msaicerr.py的部署路径为{install_path}/tools/msaicerr上述临时目录与产物均生成在该目录下属正常运行行为。小结python3 msaicerr.py -e [-dev N]是 msaicerr 工具提供的一条低成本环境自检路径一条命令即可串联设备发现、芯片识别、算子编译、Runtime 执行的全链路。结合本仓库源码可以看到它与 AI Core Error 分析流程共享同一套标杆算子验证逻辑因此在出现算子级故障前先用-e确认环境正常能有效缩小问题排查范围。更多工具能力可参考 msaicerr工具功能及约束 与 分析AI Core Error问题。【免费下载链接】oam-tools本项目为开发者提供故障定位工具包含故障信息收集软硬件信息展示AI core error报错分析等能力提升故障问题定位效率文档可在昇腾社区搜索“故障处理简介”选择社区版。项目地址: https://gitcode.com/cann/oam-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表