使用整体追踪分析进行追踪差异¶
Created On: Jan 02, 2024 | Last Updated: Jan 05, 2024 | Last Verified: Not Verified
作者: Anupam Bhatnagar
用户有时需要识别因代码更改而导致的PyTorch操作符和CUDA内核的变化。为支持此需求,HTA提供了一种追踪比较功能。该功能允许用户输入两组追踪文件,其中第一组可视为*控制组*,而第二组为*测试组*,类似于A/B测试。``TraceDiff``类提供了比较追踪差异的函数以及可视化这些差异的功能。具体而言,用户可以找到在每组中增加和移除的操作符和内核,并查看每个操作符/内核的频率及其累计时间。
`TraceDiff <https://hta.readthedocs.io/en/latest/source/api/trace_diff_api.html>`_类具有以下方法:
compare_traces: 比较两组追踪中的CPU操作符和GPU内核的频率及总持续时间。
ops_diff: 获取以下操作符和内核:
最后两种方法可以用于可视化CPU操作符和GPU内核的频率和持续时间的各种变化,使用``compare_traces``方法的输出。
例如,可以计算频率增加最多的前十个操作符如下:
df = compare_traces_output.sort_values(by="diff_counts", ascending=False).head(10)
TraceDiff.visualize_counts_diff(df)

类似地,可以计算持续时间变化最大的前十个操作符如下:
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)

有关此功能的详细示例,请参见存储库示例文件夹中的`trace_diff_demo notebook <https://github.com/facebookresearch/HolisticTraceAnalysis/blob/main/examples/trace_diff_demo.ipynb>`_。