• 教程 >
  • 使用整体跟踪分析追踪差异
快捷键

使用整体跟踪分析进行跟踪差异 ¶

创建时间:2025 年 4 月 1 日 | 最后更新时间:2025 年 4 月 1 日 | 最后验证:未验证

作者:Anupam Bhatnagar

有时,用户需要识别代码更改导致的 PyTorch 运算符和 CUDA 内核的变化。为了满足这一需求,HTA 提供了跟踪比较功能。该功能允许用户输入两组跟踪文件,其中第一组可以被视为对照组,第二组为测试组,类似于 A/B 测试。 TraceDiff 类提供了比较跟踪差异的功能以及可视化这些差异的功能。特别是,用户可以找到每个组中添加和删除的运算符和内核,以及每个运算符/内核的频率和运算符/内核的总耗时。

TraceDiff 类具有以下方法:

  • compare_traces:比较两组跟踪中 CPU 操作符和 GPU 内核的频率和总持续时间。

  • ops_diff:获取已添加到测试跟踪但不在控制跟踪中的操作符和内核。

    1. 添加到测试跟踪并缺失在控制跟踪中的操作符和内核。

    2. 从测试轨迹中删除且存在于控制轨迹中

    3. 在测试轨迹中频率增加且存在于控制轨迹中

    4. 在测试轨迹中频率降低且存在于控制轨迹中

    5. 在两组轨迹中未发生变化

  • 可视化计数差异

  • 可视化持续时间差异

最后两种方法可以用来可视化 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 笔记本。


评分这个教程

© 版权所有 2024,PyTorch。

使用 Sphinx 构建,主题由 Read the Docs 提供。
//暂时添加调查链接

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取初学者和高级开发者的深入教程

查看教程

资源

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

查看资源