昇腾社区首页
中文
注册

asys工具使用指导(EP模式)

在使用asys工具前,可以通过source ${install_path}/latest/bin/setenv.bash命令使CANN基础环境变量生效,然后直接输入asys命令符,不用输入asys工具全路径(即Toolkit包安装路径{$install_path}/tools/ascend_system_advisor下)。下文以asys工具全路径为例说明工具的使用方法。

故障信息收集

  • 命令:
    python3 {$install_path}/tools/ascend_system_advisor/asys/asys.py collect [--task_dir="path1"] [--tar="true | false"] [--output="path2"]
  • 参数说明:
    • task_dir:可选参数,用于指定收集算子编译文件和dump图的目录,若不指定task_dir参数,则不收集算子编译文件、GE dump图和TF Adapter dump图。
    • tar:可选参数,是否将asys工具的结果输出目录压缩为*.tar.gz文件,默认不压缩,该参数值为t或true时,压缩为*.tar.gz文件且不保留原目录;参数值为f或false时,不压缩为*.tar.gz文件。
    • output:可选参数,其值作为asys工具的结果输出目录的路径前缀,即最终输出目录为{output}/asys_output_timestamp。命令行中不带output参数时,输出结果存放在命令行执行目录下;若output指定值为空、无效字符串、或指定路径目录无写权限、或创建目录失败,则asys工具退出执行并报错。

      执行完命令后,在{output}/asys_output_timestamp路径下的故障信息文件目录如下所示:

      ├── asys_output_timestap         
         ├── software_info.txt            // 安装包版本、环境变量、依赖软件、系统信息
         ├── hardware_info.txt            // 收集了host和device侧硬件信息,host信息包括内核版本信息、CPU型号、内存和硬盘使用情况等, device信息包括设备个数、aicpu个数等
         ├── status_info.txt              // 收集device健康信息、网络健康信息、异常码和异常信息
         └── dfx              
             ├── bbox                     // Device侧的黑匣子信息       
             ├── graph                    // dump图信息,包含GE与TF Adapter的dump图
             ├── ops                      // 算子编译.o,.json文件信息
             ├── stackcore                // 报错触发coredump时的core文件信息
             └── log          
                 ├── device       
                 │     ├──dev-os-{id}
                 │           ├── firmware      // 固件生成的日志
                 │           ├── slogd         // 日志相关进程的维测日志
                 │           ├── application   // 业务进程产生的非EVENT级别应用日志
                 │           └── system        // 常驻进程生成的日志
                 └── host     
                      ├── message         // message/syslog日志
                      ├── install         // 包历史安装情况的日志
                      ├── cann            // Host侧应用类日志。
                      ├── screen.txt      // 打屏日志。(如果内容为空,则可能训练任务中设置了重定向。)
                      └── user_cmd        // 用户执行任务的命令

      其中,用户可根据需求自行定义software_info.txt文件中收集的第三方依赖软件的版本信息。在“Toolkit包安装路径{install_path}/tools/ascend_system_advisor/conf/dependent_package.csv”文件中,增加或删除配置项,每行对应一个配置项,逗号分割依赖项名字和查询指令,逗号后无空格。示例片段如下:

      make,make --version
      cmake,cmake --version
      unzip,unzip -v
      zlib1g,dpkg -l zlib1g| grep zlib1g| grep ii
      zlib1g-dev,dpkg -l zlib1g-dev| grep zlib1g-dev| grep ii
      libsqlite3-dev,dpkg -l libsqlite3-dev| grep libsqlite3-dev| grep ii
      openssl,dpkg -l openssl| grep openssl| grep ii
      libssl-dev,dpkg -l libssl-dev| grep libssl-dev| grep ii
      libffi-dev,dpkg -l libffi-dev| grep libffi-dev| grep ii

业务复跑+故障信息收集

业务复跑默认开启算子编译文件、GE dump图和TF Adapter dump图收集功能。本工具内部会通过环境变量NPU_COLLECT_PATH指定的路径来收集dump图及算子编译.o文件;如果该环境变量未配置或不存在,则以task任务执行路径收集。

  • (可选)修改业务复跑相关的配置项

    默认配置如下,可通过修改{install_path}/tools/ascend_system_advisor/conf/asys.ini文件中参数,从而打开或关闭开启算子编译文件和dump图收集等功能:

    [launch]
    dump_ge_graph = 2               // 控制dump图的内容多少,取值为2,不含有权重等数据的基础版dump,对应环境变量DUMP_GE_GRAPH
    dump_graph_level = 3            // 控制dump图的数量,取值为3,dump最后阶段的生成图,对应环境变量DUMP_GRAPH_LEVEL
    log_level = INFO                // 应用类日志的全局日志级别及各模块日志级别,对应环境变量ASCEND_GLOBAL_LOG_LEVEL
    log_event_enable = TRUE         // 应用类日志是否开启Event日志,对应环境变量ASCEND_GLOBAL_EVENT_ENABLE
    log_print_to_stdout = FALSE     // 是否开启日志打屏,对应环境变量ASCEND_SLOG_PRINT_TO_STDOUT

    asys工具启动时,环境变量默认使用该文件里的配置值,但如果复跑任务脚本中设置了这些环境变量为其它值,则会发生环境变量覆盖,以复跑任务脚本中设置的值为准。因此,可能造成收集到的维测信息不满足定位需求。

  • 命令:
    python3 {install_path}/tools/ascend_system_advisor/asys/asys.py launch --task="sh ../app_run.sh" [--tar="true | false"] [--output="path"]
  • 参数说明:
    • task:必须参数,为复跑业务的执行命令,需要填写完整的命令,例如"sh ../app_run.sh", sh为执行任务的工具,../app_run.sh为要执行的任务文件。

      不支持原有执行脚本内部直接后台执行的方式。例如:原有用例通过命令行执行 sh cmd.sh来拉起用例,而cmd.sh的实现里执行python3 test.py &,用后台的方式执行,此种任务由于无法感知结束点,暂不支持使用。

    • tar:可选参数,是否将asys工具的结果输出目录压缩为*.tar.gz文件,默认不压缩,该参数值为t或true时,压缩为*.tar.gz文件且不保留原目录;参数值为f或false时,不压缩为*.tar.gz文件。
    • output:可选参数,其值作为asys工具的结果输出目录的路径前缀,即最终输出目录为{output}/asys_output_timestamp。命令行中不带output参数时,输出结果存放在命令行执行目录下;若output指定值为空、无效字符串、或指定路径目录无写权限、或创建目录失败,则asys工具退出执行并报错。

      执行完命令后,在{output}/asys_output_timestamp路径下的故障信息文件目录如下所示:

      ├── asys_output_timestap         
         ├── software_info.txt            // 安装包版本、环境变量、依赖软件、系统信息
         ├── hardware_info.txt            // 收集了host和device侧硬件信息,host信息包括内核版本信息、CPU型号、内存和硬盘使用情况等, device信息包括设备个数、aicpu个数等
         ├── status_info.txt              // 收集device健康信息、网络健康信息、异常码和异常信息
         └── dfx              
             ├── bbox                     // Device侧的黑匣子信息       
             ├── graph                    // dump图信息,包含GE与TF Adapter的dump图
             ├── ops                      // 算子编译.o,.json文件信息
             ├── stackcore                // 报错触发coredump时的core文件信息
             └── log          
                 ├── device       
                 │     ├──dev-os-{id}
                 │           ├── firmware      // 固件生成的日志
                 │           ├── slogd         // 日志相关进程的维测日志
                 │           ├── application   // 业务进程产生的非EVENT级别应用日志
                 │           └── system        // 常驻进程生成的日志
                 └── host     
                      ├── message         // message/syslog日志
                      ├── install         // 包历史安装情况的日志
                      ├── cann            // Host侧应用类日志。
                      ├── screen.txt      // 打屏日志。(如果内容为空,则可能训练任务中设置了重定向。)
                      └── user_cmd        // 用户执行任务的命令

      其中,用户可根据需求自行定义software_info.txt文件中收集的第三方依赖软件的版本信息。在“Toolkit包安装路径{install_path}/tools/ascend_system_advisor/conf/dependent_package.csv”文件中,增加或删除配置项,每行对应一个配置项,逗号分割依赖项名字和查询指令,逗号后无空格。示例片段如下:

      make,make --version
      cmake,cmake --version
      unzip,unzip -v
      zlib1g,dpkg -l zlib1g| grep zlib1g| grep ii
      zlib1g-dev,dpkg -l zlib1g-dev| grep zlib1g-dev| grep ii
      libsqlite3-dev,dpkg -l libsqlite3-dev| grep libsqlite3-dev| grep ii
      openssl,dpkg -l openssl| grep openssl| grep ii
      libssl-dev,dpkg -l libssl-dev| grep libssl-dev| grep ii
      libffi-dev,dpkg -l libffi-dev| grep libffi-dev| grep ii

软硬件状态信息收集

  • 命令:
    python3 {$install_path}/tools/ascend_system_advisor/asys/asys.py status [--tar="true | false"]  [--output="path"]
  • 参数说明:
    • tar:可选参数,是否将asys工具的结果输出目录压缩为*.tar.gz文件,默认不压缩,该参数值为t或true时,压缩为*.tar.gz文件且不保留原目录;参数值为f或false时,不压缩为*.tar.gz文件。
    • output:可选参数,其值作为asys工具的结果输出目录的路径前缀,即最终输出目录为{output}/asys_output_timestamp。命令行中不带output参数时,输出结果存放在命令行执行目录下;若output指定值为空、无效字符串、或指定路径目录无写权限、或创建目录失败,则asys工具退出执行并报错。

      执行完命令后,在{output}/asys_output_timestamp路径下的故障信息文件目录如下所示:

      ├── asys_output_timestap         
         ├── software_info.txt            // 安装包版本、环境变量、依赖软件、系统信息
         ├── hardware_info.txt            // 收集了Host和Device侧硬件信息,Host信息包括内核版本信息、CPU型号、内存和硬盘使用情况等, Device信息包括设备个数、aicpu个数等
         └── status_info.txt              // 收集Device健康状态信息、网络信息,健康为异常时会显示异常码
      

FAQ

  • 问题现象

    先使用ctrl+z中止业务复跑task,接着再次拉起业务复跑task,屏显日志显示业务复跑task错误。如图1所示。

    图1 业务复跑报task occurred error
  • 可能原因

    执行ctrl+z操作等导致任务异常终止,但还存在任务进程残留(且还进行重定向写文件操作等操作),与后面新启动的asys复跑任务相互冲突,导致复跑异常。

  • 处理方法

    在asys复跑前查询是否存在运行中的推理/训练进程id,需要手工kill相关进程,然后再重新asys复跑。