facebookresearch/HolisticTraceAnalysis
A library to analyze PyTorch traces.
全面追踪分析 (HTA)
是什么 – HTA 是一个 Python 库,帮助研究人员和工程师理解分布式 PyTorch 训练任务为何变慢。它读取 PyTorch Profiler(Kineto)生成的追踪文件,并将其转化为一系列可直接使用的数据框和可视化图表,精准定位 GPU 在计算、通信、内存操作或空闲状态上花费的时间。
核心功能
| 功能 | 你将获得 |
|---|---|
| 时间分解 | 按 GPU 分解时间,分为计算、通信、内存操作和空闲时段。 |
| 内核分解与分布 | 列出每个 rank 上运行时间最长的 CUDA 内核,并展示其在不同 rank 间的持续时间差异。 |
| 空闲时间分析 | 显示 GPU 处于空闲状态的原因(等待主机、等待其他内核、未知)。 |
| 通信-计算重叠 | 通信与有用计算重叠的时间占比。 |
| 频繁内核模式 | 为特定 PyTorch 操作符(如 aten::linear)找出最常重复出现的 CUDA 内核。 |
| 内核启动统计 | 非常短、非常长、或异常延迟的内核启动时间的直方图。 |
| 增强计数器 | 在原始性能分析中添加队列长度和内存带宽追踪,用于类似 Roofline 的分析。 |
| 追踪对比 | 两个运行结果的并排差异分析,查看变化。 |
| CUPTI 计数器 API(实验性) | 提取低级别 GPU 性能计数器,支持更深入的 Roofline 分析。 |
适用人群 – 任何在多个 GPU/主机上训练大型模型,希望以系统化、可脚本化方式定位瓶颈,而无需手动挖掘原始性能分析输出的人。
安装
# 从 PyPI(推荐)
pip install HolisticTraceAnalysis
# 或从源码安装
git clone https://github.com/facebookresearch/HolisticTraceAnalysis.git
cd HolisticTraceAnalysis
git submodule update --init
pip install -r requirements.txt
pip install -e .
支持 Linux 和 macOS,需 Python ≥ 3.10。
典型工作流程
- 收集追踪数据 使用 PyTorch Profiler(
torch.profiler.profile(..., record_shapes=True, with_stack=True, ...))。 - 将所有追踪文件放入一个文件夹 – HTA 期望每个运行对应一个独立目录。
- 打开一个笔记本(或 Python 脚本)并创建
TraceAnalysis对象:from hta.trace_analysis import TraceAnalysis analyzer = TraceAnalysis(trace_dir="/path/to/traces") - 调用所需方法,例如:
每个方法返回一个 pandas DataFrame,可用于绘图或检查。temporal = analyzer.get_temporal_breakdown() kernels = analyzer.get_gpu_kernel_breakdown() idle = analyzer.get_idle_time_breakdown() overlap = analyzer.get_comm_comp_overlap() - 深入分析时,可使用
examples/中的演示笔记本(trace_analysis_demo.ipynb,trace_diff_demo.ipynb)。
配置 – 日志控制通过 hta/configs/logging.config 进行;可更改日志级别或指定自定义配置文件。
文档与支持 – 完整 API 文档托管于 https://hta.readthedocs.io。项目采用 MIT 许可证开源,欢迎通过拉取请求贡献代码。
总结 – HTA 将原始 PyTorch Profiler 追踪数据转化为可操作的性能报告,使优化分布式训练流水线变得更加容易。
相关
- 项目
- 项目
- 项目
- 项目