ARTICLE DETAIL

资讯详情

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

CANN oam-tools 性能调优使用前准备:环境配置、权限与约束全面指南

CANN oam-tools 性能调优使用前准备:环境配置、权限与约束全面指南 CANN oam-tools 性能调优使用前准备环境配置、权限与约束全面指南【免费下载链接】oam-tools本项目为开发者提供故障定位工具包含故障信息收集软硬件信息展示AI core error报错分析等能力提升故障问题定位效率文档可在昇腾社区搜索“故障处理简介”选择社区版。项目地址: https://gitcode.com/cann/oam-tools性能调优Profiling工具用于采集和分析运行在 AI 处理器上的 AI 任务在各运行阶段的关键性能指标帮助开发者快速定位软硬件性能瓶颈。本文以 oam-tools 仓库中 docs/zh/profiling/preparation/before_you_start.md 为骨架系统梳理使用 msprof 性能调优工具前的完整准备流程CANN 环境安装与环境变量配置、Python 运行环境设置以及权限、执行、数据落盘、兼容性四类使用约束并结合仓库源码msprof 封装实现、配置文档树深入解释每条准备项背后的工程含义。一、功能简介性能调优工具能做什么性能调优工具用于采集和分析运行在 AI 处理器上的 AI 任务在各运行阶段的关键性能指标。用户根据输出的性能数据可以快速定位软、硬件性能瓶颈提升 AI 任务性能分析的效率。从 oam-tools 仓库的文档目录树可以看出性能数据采集能力是一个完整的文档体系入口为 docs/zh/profiling/README.md使用前准备即本文主题 before_you_start.md采集前的环境与约束检查清单msprof 采集命令包括通用命令 general_collect_commands.md、AI 任务运行性能数据采集、AI 处理器系统数据采集、Host 侧系统数据采集、msproftx 数据采集以及动态采集与延迟采集其他采集方式通过 acl C/C 接口、Ascend Graph 接口、acl.json 配置文件、环境变量等方式使能采集附录perf/iotop/ltrace 安装、用户权限配置、mstx API 使用示例、Profiling options 参数解释。采集到的数据最终可用于算子执行性能分析op summary、op statistic、AI Core PMU 指标统计、训练迭代轨迹分析、Host/Device 系统资源分析等场景。在开始使用这些能力之前必须按本文的步骤完成环境准备并理解相关约束。二、环境准备1. 安装 CANN 软件包根据实际用户场景选择 CANN 相关软件包安装并配置 CANN 环境变量。CANN 软件包的详细安装过程请参见官方《CANN 软件安装》文档本仓库内的 docs/zh/quick_install.md 与 docs/zh/package_install.md 也提供了与安装相关的说明参考。安装完成后需要确认 msprof 工具的路径Ascend EP 场景下msprof 工具路径为${INSTALL_DIR}/tools/profiler/bin其中${INSTALL_DIR}请替换为 CANN 软件安装后文件存储路径。以 root 用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。Ascend RC 场景下msprof 工具路径位于/var目录下RC 场景与 EP 场景的部署形态不同工具挂载位置也有差异。提示性能调优工具依赖 CANN 和对应驱动软件包。本工具的使用前提是 CANN 与驱动均已正确安装并处于可用状态这也正是“使用前准备”需要先完成软件安装的原因。2. 设置公共环境变量安装 CANN 软件后使用 CANN 运行用户进行编译、运行时需要以 CANN 运行用户登录环境并执行以下命令设置环境变量source ${INSTALL_DIR}/set_env.sh其中${INSTALL_DIR}请替换为 CANN 软件安装后文件存储路径。以 root 用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。从 oam-tools 仓库的封装实现看后续所有调用 msprof 的采集命令例如 asys 的 profiling 子命令都依赖这一环境asys在运行 profiling 时直接通过 Shell 执行 msprof 命令见 src/asys/profiling/asys_profiling.py 中_run_cmd方法其通过subprocess.run([BASH, -c, cmd], ...)调用因此set_env.sh中的环境变量必须已生效msprof 才能在 PATH 中被正确找到并加载其依赖的动态库。3. 设置 Python 相关环境变量存在多个 Python3 版本时需要显式指定工具所需的 Python 版本。以指定 python3.7.5 为例请根据实际版本修改export PATH/usr/local/python3.7.5/bin:$PATH # 设置python3.7.5库文件路径 export LD_LIBRARY_PATH/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH[!NOTE] 说明上述环境变量只在当前窗口生效用户可以将上述命令写入~/.bashrc文件使其永久生效操作如下以安装用户在任意目录下执行vi ~/.bashrc在该文件最后添加上述内容。执行:wq!命令保存文件并退出。执行source ~/.bashrc使环境变量生效。工具要求Python 3.7.5 及以上版本详见后文“兼容性和场景约束”因此在多 Python 版本共存的环境里这一步是保证工具正常解析性能数据的必要前提。三、使用约束使用该工具前请了解以下四类使用约束这些约束直接关系到数据准确性、系统安全性与采集成功率。1. 权限约束用户须自行保证使用最小权限原则如禁止 other 用户可写常见如禁止 666、777。使用性能分析工具前请确保执行用户的umask 值大于等于 0027否则会导致获取的性能数据所在目录和文件权限过大带来安全隐患。出于安全性及权限最小化角度考虑本工具不应使用 root 等高权限账户建议使用普通用户权限执行。本工具为开发调测工具不建议在生产环境使用。本工具依赖 CANN 和对应驱动软件包使用前请先安装 CANN 和对应驱动软件包并使用source命令执行 CANN 的set_env.sh环境变量文件为保证安全source 后请勿擅自修改 set_env.sh 中涉及的环境变量。请确保性能数据保存在不含软链接的当前用户目录下否则可能引起安全问题。这些约束与通用采集命令文档 docs/zh/profiling/msprof_cmd/general_collect_commands.md 中的安全要求相互呼应——例如 app 参数说明中同样要求“不建议配置其他用户目录或其他用户可写目录下的 AI 任务避免提权风险”。仓库的 oam-tools 安装脚本也体现了这一原则安装与卸载逻辑可参见 scripts/package/oam_tools/scripts/install.sh 与 uninstall.sh。2. 执行约束不支持在同一个 Device 同时拉起多个采集任务也不可同时开启两种及以上性能数据采集方式。举例说明使用 msprof 命令行方式启动 Profiling 时app 中不能通过 acl 接口启动 Profiling 数据采集。例外Ascend 950PR/Ascend 950DT 场景下支持同一个 Device 同时拉起多个 task-time 采集任务当 aic-mode 取值为 task-based 时支持同一个 Device 同时拉起多个 aic-metrics 采集任务。不建议性能数据的采集功能与 Dump 功能同时使用。Dump 操作会影响系统性能如果同时开启采集功能与 Dump 功能会造成采集的性能数据指标不准确。启动采集前请关闭数据 Dump。从架构角度看这一约束源于采集链路的单一性。根据 docs/zh/design/profiling/architecture.md 的系统架构介绍msprof 通过驱动提供的 profiling channel 采集 Device 侧软件AICPU和硬件数据stars 任务调度、AICore metrics 等同一 Device 的采集通道与 Dump 通道会共享底层资源并发使用会相互干扰因此文档明确要求二者择一。3. 数据落盘约束性能数据采集时间建议在5 min 以内并且预留至少 20 倍于性能原始数据大小的内存和磁盘空间。原始数据大小指采集落盘后的 data 目录下数据总大小。执行单个采集任务采集性能数据并落盘时在打开所有采集项的情况下需要保证磁盘读写速度具体规格如下仅使用单 Device 进行推理时磁盘读写速度不低于 50 MB/s仅使用单个 Device 进行训练时磁盘读写速度不低于 60 MB/s多个 Device 场景下磁盘读写速度不低于单个 Device 磁盘读写速度规格 × Device 数。采集性能数据过程中如果配置的落盘路径磁盘空间已满会出现性能数据无法落盘的情况须保证足够的磁盘空间。落盘的性能原始数据可以通过配置--storage-limit参数来预防磁盘空间被占满。解析性能数据过程中如果配置的落盘路径磁盘或用户目录空间已满会出现解析失败或文件无法落盘的情况须自行清理磁盘或用户目录空间。关于--storage-limit参数的具体用法docs/zh/profiling/msprof_cmd/general_collect_commands.md 给出了详细定义--storage-limitlimit-value可选指定落盘目录允许存放的最大文件容量。当性能数据文件在磁盘中即将占满本参数设置的最大存储空间或剩余磁盘总空间即将被占满时总空间剩余 ≤ 20MB则将磁盘内最早的文件进行老化删除处理。范围 [200, 4294967295]单位为 MB例如--storage-limit200MB默认未配置本参数。未配置本参数时采集前如果磁盘可用空间小于 20MB则不落盘数据。同样通过环境变量方式使能采集时对应的配置项为storage_limit语义与命令行参数一致详见 docs/zh/env-vars/PROFILING_OPTIONS.md。4. 兼容性和场景约束工具要求Python 3.7.5 及以上版本。调用aclInit()接口完成初始化和调用aclFinalize()接口完成去初始化才能获取到完整的性能数据。应用工程开发务必遵循《应用开发C/C》手册。如果应用程序已调用aclInit()接口完成初始化和调用aclFinalize()接口导致工具采集流程未正常结束采集数据会不完整。最后 1 秒内已采集的数据可能因未及时落盘而丢失但丢失的数据不大于 2M不影响已落盘的性能数据分析。使用pyACL API开发的应用工程在通过 msprof 命令行方式采集性能数据时不支持在工程 Python 脚本中打开相对路径文件。Python 脚本中包含打开相对路径文件的操作会导致采集性能数据报错。昇腾虚拟化实例场景下不支持从容器、虚拟机内发起对 SoC 的系统性能数据采集NPU 内存占用数据除外。四、仓库源码印证msprof 命令的构造与调用为帮助读者理解“准备完成后”工具是如何被驱动的这里结合仓库源码给出 msprof 命令的真实构造方式。oam-tools 的 asys 工具提供了asys profiling子命令其底层封装了 msprof。核心实现位于 src/asys/profiling/asys_profiling.pyrun()方法拼接基础命令msprof --output... --sys-period... --sys-devices...再根据用户选择的采集类型aicore/dvpp/os/link/memory/power追加对应的采集开关例如采集 aicore 数据时追加--ai-coreon --aic-modesample-based --aic-metricsPipeUtilization_check_param()中会校验采集周期范围 [1, 2592000] 秒即 30×24×3600、采集类型合法性以及当前芯片型号是否支持对应采集项。对应的用户命令格式见 docs/zh/asys/profiling_collection.mdasys profiling -raicore -p10 -d0 --output./ --aic_metricsPipeUtilization执行成功后输出的日志会直接显示底层展开后的 msprof 命令Start run: msprof --output./ --sys-period10 --sys-devices0 --ai-coreon --aic-modesample-based --aic-metricsPipeUtilization, please wait about 10 seconds.这段日志清晰展示了本文所准备的环境变量source set_env.sh、msprof 工具路径${INSTALL_DIR}/tools/profiler/bin以及磁盘空间约束最终都会作用于这条 msprof 命令的实际执行。这也是“使用前准备”一章在整个性能调优流程中的价值所在。五、小结与下一步完成上述三步环境准备并确认四类约束后即可开始实际的性能数据采集环境就绪CANN 软件包 驱动安装完成source set_env.sh生效Python 3.7.5 可用msprof 路径正确权限合规普通用户执行、umask ≥ 0027、最小权限原则、输出目录不含软链接约束确认同一 Device 不并发多采集任务、关闭 Dump、预留足够磁盘空间与读写带宽、按场景规避 pyACL 相对路径与虚拟化实例采集限制。下一步可进入 docs/zh/profiling/msprof_cmd/msprof_cmd.md 学习 msprof 采集命令或通过 docs/zh/profiling/other_method/other_method.md 了解 acl 接口、acl.json 配置文件、环境变量等其他采集使能方式。若需通过环境变量方式使能采集可参考 PROFILING_MODE 与 PROFILING_OPTIONS 两个配置项的详细说明。【免费下载链接】oam-tools本项目为开发者提供故障定位工具包含故障信息收集软硬件信息展示AI core error报错分析等能力提升故障问题定位效率文档可在昇腾社区搜索“故障处理简介”选择社区版。项目地址: https://gitcode.com/cann/oam-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表