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 追蹤資料轉化為可操作的性能報告,使優化分散式訓練流程變得更加容易。
相關
- 專案
- 專案
- 專案
- 專案