• Tutorials >
  • 使用整体追踪分析进行追踪差异
Shortcuts

使用整体追踪分析进行追踪差异

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: 获取以下操作符和内核:

    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 notebook <https://github.com/facebookresearch/HolisticTraceAnalysis/blob/main/examples/trace_diff_demo.ipynb>`_。

文档

访问 PyTorch 的详细开发者文档

查看文档

教程

获取针对初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源