Ascend 设备上基于 FSDP 的数据收集 (zh) ========================================================================================== 最近更新:2025 年 8 月 14 日。 本教程将介绍如何在 Ascend 设备上基于 FSDP 使用 GRPO 或 DAPO 算法进行数据收集。 配置 ------------- 通过两个层级的配置来控制数据收集: 1. **全局 Profiler 控制**:使用 ``ppo_trainer.yaml`` 中的参数来控制收集模式和步数。 2. **角色 Profile 控制**:使用每个角色的 ``profile`` 字段中的参数来控制每个角色的收集模式。 全局收集控制 ~~~~~~~~~~~~~~~~~~~~~~~~~ 使用 ppo_trainer.yaml 中的参数来控制收集模式和步数。 - global_profiler: 控制 Profiling 的 ranks 和模式。 - tool: 要使用的 Profiling 工具,选项包括 nsys, npu, torch, torch_memory。 - steps: 此参数可以设置为一个包含收集步数的列表,例如 [2, 4],表示将收集第 2 步和第 4 步。如果设置为 null,则不进行收集。 - save_path: 保存收集数据的路径。默认为 "outputs/profile"。 角色收集控制 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在每个角色的 ``profiler`` 字段中,可以控制该角色的收集模式。 - enable: 是否为此角色启用 Profiling。 - all_ranks: 是否从所有 ranks 收集数据。 - ranks: 要从中收集数据的 ranks 列表。如果为空,则不收集数据。 - tool_config: 此角色使用的 Profiling 工具的配置。 使用每个角色的 ``profiler.tool_config.npu`` 中的参数来控制 npu profiler 的行为: - level: 收集级别 — 选项包括 level_none, level0, level1, 和 level2。 - level_none: 禁用所有基于级别的 Datal 收集(关闭 profiler_level)。 - level0: 收集 NPU 上的高级应用程序数据、底层 NPU 数据和算子执行详细信息。 - level1: 在 level0 的基础上,添加 NPU 上的 CANN 层面 AscendCL 数据和 AI Core 性能指标。 - level2: 在 level1 的基础上,添加 CANN 层面 Runtime 数据和 AI CPU 指标。 - contents: 用于控制收集内容的选项列表,例如 npu, cpu, memory, shapes, module, stack。 - npu: 是否收集设备端性能数据。 - cpu: 是否收集主机端性能数据。 - memory: 是否启用内存分析。 - shapes: 是否记录张量形状。 - module: 是否记录框架层 Python 调用栈信息。 - stack: 是否记录算子调用栈信息。 - analysis: 启用自动数据解析。 - discrete: 是否启用离散模式。 示例 -------- 禁用收集 ~~~~~~~~~~~~~~~~~~~~ .. code:: yaml global_profiler: steps: null # disable profile 端到端收集 ~~~~~~~~~~~~~~~~~~~~~ .. code:: yaml global_profiler: steps: [1, 2, 5] actor_rollout_ref: actor: profiler: enable: True all_ranks: True tool_config: npu: discrete: False # rollout & ref follow actor settings 离散模式收集 ~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: yaml global_profiler: steps: [1, 2, 5] actor_rollout_ref: actor: profiler: enable: True all_ranks: True tool_config: npu: discrete: True # rollout & ref follow actor settings 可视化 ------------- 收集到的数据存储在用户定义的 save_path 中,可以使用 `MindStudio Insight `_ 工具进行可视化。 如果 analysis 参数设置为 False,则需要在数据收集后进行离线解析: .. code:: python import torch_npu # 将 profiler_path 设置为 "localhost.localdomain___ascend_pt" 文件夹的父目录 torch_npu.profiler.profiler.analyse(profiler_path=profiler_path)