捷徑

使用整體追蹤分析的追蹤差異

建立於:2024 年 1 月 02 日 | 最後更新:2024 年 1 月 05 日 | 最後驗證:未驗證

作者: 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

有關此功能的詳細範例,請參閱儲存庫範例資料夾中的 trace_diff_demo 筆記本

文件

存取 PyTorch 的完整開發人員文件

檢視文件

教學課程

取得針對初學者和進階開發人員的深入教學課程

檢視教學

資源

尋找開發資源並獲得您的問題解答

檢視資源