• 教程 >
  • 使用整体追踪分析进行追踪差异对比
快捷方式

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

创建日期: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 的全面开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源