評價此頁

使用整體跟蹤分析跟蹤差異#

建立日期:2024年01月02日 | 最後更新:2024年01月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

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