TVM Explorer Infrastructure 简介

TVM Explorer Infrastructure 简介#

利用 TVM Explorer Infrastructure 增强 TVM 调试能力。我们将提到从 TVM Explorer 中可以获得一些可视化效果,这是基于此 RFC 的另一个 Web GUI 项目。

这个 RFC 的目标是扩展在不同 IRs 之间追踪源代码信息的能力,以用于调试。以下三个特性将从这个变化中受益:

  • 将 ML 前端 IR 的图层名称映射到 Relay IR。

  • 在传递优化过程中记录源表达式到转换后的表达式。

  • 在原语做出更改后,队列调度的快照

这些变更为用户提供了 CLI 文本格式的 IR 清晰的回溯路径。此外,与正在进行的项目 TVM Explorer 配对,一个色彩丰富且方便的 GUI 可以更好地提升用户体验。我们将在后面的部分用例子来展示 TVM Explorer 的使用案例。

我们的目标是通过增强和创建携带源信息的功能,来简化调试过程。TVM 执行了大量的变换,以优化和部署 ML 前端 IR 到目标设备。然而,目前记录 IRs 之间源信息的模块并没有被完全使用。这使得用户难以追踪转换后 IR 的源头。通常需要对源代码进行调查,以理解变换的细节。

我们提供以下增强措施,通过记录 IR 和算子实现的调度之间的源信息,减轻用户的负担:

  • 前端跨度填充器(Frontend span filler):在前端变换过程中将图层名称填充到 Relay IR 中。

  • 传递源信息构建器(Pass source information builder):从 SpanSIBuilder 构建 SequentialSpan,以处理 Relay IR 和 TIR 的源信息。

  • 调度/阶段可视化增强(Schedule/Stage visualization enhancement):在常规构建流程中,记录和应用原语的算子调度快照。

在这些修改之后,用户可以通过一眼或者通过调试器简单地获取源信息。

最后,受到 Compiler Explorer 21 的启发,我们为 TVM 构建了 Web-GUI,TVM Explorer。基于上述基础设施,TVM Explorer 在比较 IRs 或分析调度时提供了更好的用户体验(TVM Explorer 的代码库维护在另一个 git 仓库中,不包括在这个 RFC 中)。