目录

使用 Holistic Trace Analysis 进行 Trace Diff

创建时间: 2024 年 1 月 2 日 |上次更新时间: 2024 年 1 月 5 日 |上次验证时间:未验证

作者: Anupam Bhatnagar

有时,用户需要识别 PyTorch 算子和 CUDA 的变化 内核。为了支持此要求,HTA 提供轨迹对比功能。此功能允许用户输入两个 跟踪文件集,其中第一个可以被视为控制组,第二个可以被视为测试组,类似于 A/B 测试。类 提供用于比较跟踪和功能之间差异的函数 以可视化这些差异。特别是,用户可以找到运算符和 从每个组中添加和删除的内核,以及频率 以及 Operator/kernel 所花费的累计时间。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

同样,duration 变化最大的前 10 名运算符可以计算为 遵循:

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 笔记本

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

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

查看教程

资源

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

查看资源