【TVM教程】使用自定义调度规则(Sketch Rule)在 CPU 上自动调度稀疏矩阵乘法

💡 原文中文,约9800字,阅读约需24分钟。
📝

内容提要

Apache TVM是一个深度学习编译框架,支持CPU和GPU等加速芯片。本文介绍了如何使用auto-scheduler优化CPU的稀疏矩阵乘法,提供自定义调度规则以提升性能,并展示相关代码和调优过程。

🎯

关键要点

  • Apache TVM是一个深度学习编译框架,支持CPU、GPU和各种加速芯片。
  • 本文介绍如何使用auto-scheduler优化CPU的稀疏矩阵乘法。
  • auto-scheduler旨在自动探索最佳性能调度,允许用户提供自定义调度规则。
  • 本教程使用稀疏矩阵乘法作为示例,演示如何实现自定义调度规则。
  • 教程无法在Windows或最新版本的macOS上运行,需要在特定代码块中执行。
  • 定义稀疏矩阵乘法的计算,auto-scheduler可以从输入/输出张量中得到计算图。
  • 使用随机输入测试生成的调度性能,特殊的buffer用于稀疏运算的输入。
  • 创建搜索任务并注册稀疏数据,设置目标为llvm。
  • 定义CustomSketchRule,包括条件函数和应用函数,以便为稀疏操作应用调度规则。
  • 设置auto-scheduler的参数,包括测试次数和记录文件。
  • 创建auto_scheduler.SketchPolicy对象,并将自定义调度规则添加为初始化搜索回调。
  • 开始搜索并应用最佳调度,检查调度的正确性和性能。
  • 调优结果示例展示了优化后的TIR代码和性能评估。
  • 提供了Python源代码和Jupyter Notebook下载链接。

延伸问答

Apache TVM是什么?

Apache TVM是一个深度学习编译框架,支持CPU、GPU和各种加速芯片。

如何使用auto-scheduler优化稀疏矩阵乘法?

使用auto-scheduler可以自动探索最佳性能调度,并允许用户提供自定义调度规则来优化稀疏矩阵乘法。

CustomSketchRule的作用是什么?

CustomSketchRule用于定义自定义调度规则,以便在auto-scheduler中应用于特定的稀疏操作。

在调优过程中如何测试生成的调度性能?

在调优过程中,auto-scheduler使用随机输入来测试生成的调度性能,并注册特殊的buffer用于稀疏运算的输入。

如何创建和配置auto_scheduler.SketchPolicy对象?

创建auto_scheduler.SketchPolicy对象时,需要设置搜索任务、成本模型和初始化搜索回调,包括自定义调度规则。

调优结果如何评估?

调优结果通过构建二进制文件并检查其正确性和性能来评估,同时可以使用时间评估器来测量执行时间。

➡️

继续阅读