CANN/torchtitan-npu指标与调试指南
调试支持特性【免费下载链接】torchtitan-npuAscend Extension for torchtitan项目地址: https://gitcode.com/cann/torchtitan-nputorchtitan-npu 目前提供多种调试特性支持帮助开发者定位分布式训练中的各类问题包括通信故障、内存问题和性能瓶颈等。以下是常见使用场景和对应功能的快速参考使用场景对应功能排查 HCCL 通信超时问题HCCL Flight Recorder分析 OOM 和内存泄漏Memory Snapshot定位性能瓶颈和优化性能ProfilingHCCL Flight Recorder在大规模分布式训练任务因通信算子超时而异常退出时往往因为缺少详尽的通信轨迹及对应代码位置信息难以快速定位问题的根本原因。HCCL Flight Recorder 通过自动配置 HCCL 相关环境变量在分布式训练过程中实时监控 HCCL 通信操作并记录通信算子的下发调用栈、时间戳和数据量大小等关键信息。当检测到通信超时异常时系统会自动将缓冲区中的追踪信息转储到文件。使用场景训练过程中出现 HCCL 通信超时错误需要排查 HCCL 通信算子的调用顺序和参数实现原理由于启用 HCCL Flight Recorder 功能所需的环境变量配置与 NCCL 存在差异因而 torchtitan_npu 在torchtitan_npu/tools/flight_recorder.py中对torchtitan.distributed.utils.init_distributed函数进行了拦截自动配置 HCCL Flight Recorder 相关的环境变量使能了通信超时的自动检测和轨迹转储功能。在分布式初始化阶段系统会根据配置自动设置以下环境变量TORCH_HCCL_TRACE_BUFFER_SIZE设置 HCCL 追踪缓冲区大小控制记录的通信轨迹数据量。HCCL_ASYNC_ERROR_HANDLING启用 HCCL 异步错误处理机制创建检测通信问题的 HCCL Watchdog 线程。TORCH_HCCL_ENABLE_MONITORING启用 HCCL 监控功能实时检测通信状态。TORCH_HCCL_DUMP_ON_TIMEOUT配置在检测到超时时自动转储追踪信息。TORCH_HCCL_DEBUG_INFO_TEMP_FILE指定追踪文件的存储路径和文件名前缀。配置选项在训练任务的 TOML 配置文件例如torchtitan_npu/models/deepseek_v32/train_configs/deepseek_v32_671b_debug.toml或实际启动训练时--job.config_file所指向的路径中找到对应的[comm]节并添加以下配置以启用 HCCL Flight Recorder配置项类型默认值说明trace_buf_sizeint0HCCL 追踪缓冲区大小。设置为 0 时不启用追踪设置为大于 0 的值时启用自动追踪和超时转储。save_traces_folderstrcomm_traces追踪文件的保存目录路径相对于训练输出目录。save_traces_file_prefixstrrank_追踪文件的文件名前缀。需要注意的是HCCL 通信超时的阈值目前只能通过环境变量HCCL_EXEC_TIMEOUT来配置。设置此环境变量可以确保 HCCL 本身的其他调试信息能够被正确收集。例如在启动训练脚本中设置export HCCL_EXEC_TIMEOUT120 # 设置超时阈值为 120 秒配置示例在配置文件的[comm]节中添加以下配置启用 HCCL Flight Recorder 并设置相关参数[comm] trace_buf_size 2000 # 设置大小为 2000 的追踪缓冲区 save_traces_folder hccl_traces # 追踪文件保存到 hccl_traces 目录 save_traces_file_prefix rank_ # 文件名前缀为 rank_当训练过程中出现 HCCL 通信超时或错误时系统会自动将追踪信息转储到hccl_traces/rank_*文件中开发者可以使用这些文件进行问题诊断和分析相关指导可以参考Pytorch社区关于Flight Recorder功能的相关说明文档。Memory Snapshot内存快照功能用于捕获和记录训练过程中的内存使用情况包括内存分配、显存占用、张量生命周期等信息。通过 torchtitan 配置项进行定时内存快照收集本功能生成的.pickle格式内存快照文件可通过memory_viz工具进行解析和可视化查看。使用场景训练过程中出现 OOMOut of Memory错误需要分析内存占用情况怀疑存在内存泄漏需要追踪内存分配和释放情况需要优化显存使用了解框架不同模块的内存占用配置选项torchtitan 原生提供内存快照功能相关配置项位于[profiling]节支持的配置选项如下配置项类型默认值说明enable_memory_snapshotboolfalse是否启用内存快照功能。save_memory_snapshot_folderstrmemory_snapshot内存快照文件保存目录。profile_freqint10每隔多少个训练步骤收集一次内存快照。torchtitan 原生内存快照功能会按照profile_freq指定的频率定期收集内存快照并在发生 OOM 错误时自动转储当前内存快照。收集到的内存快照将保存到save_memory_snapshot_folder指定的目录中。配置示例在配置文件的[profiling]节中添加以下配置启用内存快照功能[profiling] enable_memory_snapshot true # 使能内存快照采集 save_memory_snapshot_folder memory_snapshot # 指定输出快照文件目录为 memory_snapshot profile_freq 10 # 指定每训练10步收集采集内存快照Profiling性能分析是优化训练性能的关键工具。torchtitan_npu 对性能分析功能进行了 NPU 适配支持详细的性能数据收集和分析。系统使用torch_npu.profiler提供的原生性能分析器能够追踪 CPU 和 NPU 的活动记录内存使用情况、调用栈信息、张量形状等详细数据并提供 AI 算力利用率指标。使用场景需要分析训练过程中的性能瓶颈需要对比不同配置或优化方案的性能表现需要定位训练过程中的性能异常或退化配置选项在训练任务的 TOML 配置文件中找到对应的[profiling]节并添加以下配置以启用性能分析。torchtitan 原生配置选项配置项类型默认值说明enable_profilingboolfalse是否启用性能分析功能。save_traces_folderstrprofile_traces性能分析结果的保存目录路径。profile_freqint10性能分析的采样频率每隔多少步采集一次。profiler_warmupint1性能分析器的预热步数。profiler_activeint3性能分析器的采集步数。torchtitan_npu 扩展配置选项配置项类型默认值说明profile_step_startint0开始性能分析的步数。如果设置为大于 0 的值将使用基于步数的分析模式。profile_step_endint0结束性能分析的步数。如果设置为 0将使用profile_step_start profiler_active。profile_rankslist[int][-1]需要进行性能分析的 rank 列表例如 [0, 1, 2]。使用 [-1] 表示对所有 rank 进行分析。profile_record_shapesbooltrue是否在性能分析期间记录张量形状。profile_with_memoryboolfalse是否在性能分析期间记录内存使用情况。profile_with_stackboolfalse是否在性能分析期间记录调用栈信息。enable_online_parsebooltrue是否启用性能分析数据的在线解析。配置示例在配置文件中添加以下配置启用性能分析功能。使用 torchtitan 原生的基于频率的分析模式[profiling] enable_profiling true # 启用性能分析 save_traces_folder profile_traces # 性能分析结果保存目录 profile_freq 10 # 每 10 步采集一次profiling profiler_warmup 1 # 预热 1 步 profiler_active 3 # 采集 3 步使用 torchtitan_npu 扩展的基于步数的分析模式[profiling] enable_profiling true # 启用性能分析 save_traces_folder profile_traces # 性能分析结果保存目录 profile_step_start 10 # 从第 10 步开始分析 profile_step_end 15 # 到第 15 步结束分析 profile_ranks [0] # 仅对 rank 0 进行分析 profile_record_shapes true # 记录张量形状 profile_with_memory false # 不记录内存使用 profile_with_stack false # 不记录调用栈 enable_online_parse true # 启用在线解析【免费下载链接】torchtitan-npuAscend Extension for torchtitan项目地址: https://gitcode.com/cann/torchtitan-npu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考