• 教程 >
  • 使用整體追蹤分析進行追蹤差異對比
快捷方式

使用整體追蹤分析進行追蹤差異對比

建立日期:2024 年 1 月 2 日 | 最後更新:2024 年 1 月 5 日 | 最後驗證:未驗證

作者: Anupam Bhatnagar

有時,使用者需要識別程式碼更改導致的 PyTorch 運算子和 CUDA 核心的變化。為了支援這一需求,HTA 提供了追蹤對比功能。此功能允許使用者輸入兩組追蹤檔案,其中第一組可視為對照組,第二組視為測試組,類似於 A/B 測試。TraceDiff 類提供了用於對比追蹤差異的功能,以及視覺化這些差異的功能。特別是,使用者可以找到在每組中新增和移除的運算子和核心,以及每個運算子/核心的頻率和累計耗時。

TraceDiff 類具有以下方法

  • compare_traces:對比兩組追蹤的 CPU 運算子和 GPU 核心的頻率和總持續時間。

  • ops_diff:獲取符合以下條件的運算子和核心

    1. 在測試追蹤中新增到且對照追蹤中不存在

    2. 從測試追蹤中刪除且對照追蹤中存在

    3. 在測試追蹤中頻率增加且在對照追蹤中存在

    4. 在測試追蹤中頻率減少且在對照追蹤中存在

    5. 在兩組追蹤之間未變化

  • visualize_counts_diff

  • visualize_duration_diff

最後兩個方法可用於視覺化 CPU 運算子和 GPU 核心在頻率和持續時間上的各種變化,透過使用 compare_traces 方法的輸出。

例如,頻率增加最多的前十個運算子可以透過以下方式計算:

df = compare_traces_output.sort_values(by="diff_counts", ascending=False).head(10)
TraceDiff.visualize_counts_diff(df)
../_images/counts_diff.png

類似地,持續時間變化最大的前十個運算子可以透過以下方式計算:

df = compare_traces_output.sort_values(by="diff_duration", ascending=False)
# The duration differerence can be overshadowed by the "ProfilerStep",
# so we can filter it out to show the trend of other operators.
df = df.loc[~df.index.str.startswith("ProfilerStep")].head(10)
TraceDiff.visualize_duration_diff(df)
../_images/duration_diff.png

有關此功能的詳細示例,請參見倉庫 examples 資料夾中的 trace_diff_demo notebook

文件

查閱 PyTorch 的全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源