ARTICLE DETAIL

资讯详情

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

PyPTO泳道图实战:如何用可视化工具找到算子性能瓶颈

PyPTO泳道图实战:如何用可视化工具找到算子性能瓶颈 PyPTO泳道图实战如何用可视化工具找到算子性能瓶颈【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pyptoPyPTOParallel Tensor/Tile Operation是面向 NPU 算子的编程范式而泳道图正是它性能调优中最趁手的一把“照妖镜”把算子计算图的真实调度与执行过程画成每个核一条泳道的色条图任务执行顺序、耗时分布和空闲空隙一目了然无需深入了解硬件细节即可快速定位算子性能瓶颈。本文带你完整走一遍泳道图实战流程采集 → 查看 → 找瓶颈 → 调参优化。 什么是泳道图泳道图是一种时序可视化图把“每个核”映射成一条横向泳道每条横向泳道对应一个 AI CoreCube 核 AIC / Vector 核 AIV泳道内的色块代表一个被调度的任务色块长度直接对应任务耗时泳道之间的黑色间隔俗称“气泡”是空闲期往往就是性能瓶颈的信号。相关术语可参考官方名词解释。 三步采集泳道图数据当前支持两种并列的采集方式可单独开启也可同时开启方式一图执行阶段采集新手推荐在pypto.frontend.jit装饰器入参中配置调试开关即可启动性能数据采集pypto.frontend.jit( debug_options{runtime_debug_mode: 1} )然后执行用例python3 examples/02_intermediate/operators/softmax/softmax.py采集结果输出到当前工作目录output/output_时间戳下核心文件为merged_swimlane.json。方式二AI CPU/AI Core 联合采集如果怀疑首任务启动慢、调度等待等问题可通过环境变量开启export DUMP_DEVICE_PERFtrue执行完用例、数据落盘后运行 analyze 命令查看 AI CPU/AI Core 数据汇总表python tools/scripts/machine_perf_trace.py analyze output/output_时间戳/machine_trace_perf_data_0.json输出目录关键文件速查文件用途merged_swimlane.jsonIDE 可视化综合泳道图machine_runtime_operator_trace*.jsonAI CPU / AI Core 泳道图联合时序machine_trace_perf_data*.jsonMachine 组件原始 Profiling 数据tilefwk_L1_prof_data_*.jsonMachine 组件 L1 层级 Profiling 数据 两种打开泳道图的方式方式一PyPTO Toolkit 插件打开推荐在 IDE 中右键单击 JSON 文件选择**“使用PyPTO Toolkit打开”**即可看到泳道图界面带色块的部分就是泳道观察任务耗时分布和空闲空隙气泡就能分析出可能的性能瓶颈。方式二终端查看 AI Core 关键指标想快速掌握AI Core 端到端耗时和AI Core 利用率直接查看终端输出的 Perf 信息即可开启联合采集后还能在同一时间轴上观察 AI CPU 调度与 AI Core 执行的协同关系 也可以直接用脚本 tools/profiling/draw_swim_lane.py 从 Profiling 数据生成泳道图或用批处理工具 tools/gen_swimlane.sh 一次处理多个输出目录。 从泳道图找性能瓶颈4 个典型信号打开泳道图后重点盯以下 4 类“异常形态”信号 1泳道空隙多 → Stitch 配置偏小stitch_function_max_num决定一次能同时调度多少个 root function。配置过小时每个任务都要同步调度开销大泳道图上空隙密布。官方案例中该值为 1 时端到端耗时 1590us增大到 128 后泳道明显紧凑、耗时降到 803us信号 2子图间出现 GM 搬运 → 归约轴被切分sum/max 等 reduce 运算尽量不要沿归约轴切分否则多个子图的输出还要进另一个子图做归约产生额外全局内存搬运和调度开销信号 3并行核数少 → TileShape 偏大某段泳道只用到不到一半的核说明任务切得太粗可尝试减小该处 Operation 的 TileShape。信号 4调度开销占比高 → 子图过小子图耗时很短但调度开销占比高说明切分过碎可尝试增大 TileShape或使用广度方向合图接口合并同构子图。️ 瓶颈定位后的调优抓手识别出瓶颈后结合以下手段迭代优化Man-In-The-Loop 闭环采集 → 观察 → 调参 → 复验Stitch 调优内存允许前提下逐步增大stitch_function_max_num在并行收益与调度开销间找平衡TileShape 调优Matmul 可从[128,128],[64,256],[256,256]等推荐组合起步Vector 运算用set_vec_tile_shapes配置合图调优深度方向与广度方向合图减少子图调度开销调度策略调优上下游依赖简单、L2 命中率重要时可尝试 L2 亲和调度device_sched_mode1。若泳道图数据采集或展示异常未生成文件、文件为空等直接查阅故障排查指南 docs/zh/tutorials/appendix/faq/swimlane-issue.md 延伸阅读性能调优完整章节docs/zh/tutorials/debug/performance.mdGDR 算子泳道图调优实战案例docs/zh/tutorials/debug/performance_case_GDR.mdAI CPU/AI Core 性能分析工具tools/scripts/machine_perf_trace.py泳道图让性能调优不再是盲人摸象——每一轮“采集 → 观察 → 调整 → 复验”都在把算子性能往理论上限推进一步。【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表