【TVM 教程】在 Relay 中使用 Pipeline Executor

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

Apache TVM 是一个支持 CPU 和 GPU 的深度学习编译框架。本文介绍如何结合「Pipeline Executor」与 Relay 创建和拆分简单神经网络。通过配置子图和目标,使用 CUTLASS 构建,实现两个子图的异步或同步运行,并验证输出结果。

🎯

关键要点

  • Apache TVM 是一个支持 CPU 和 GPU 的深度学习编译框架。
  • 本文介绍如何结合「Pipeline Executor」与 Relay 创建和拆分简单神经网络。
  • 创建一个由卷积、批归一化、全连接和 ReLU 激活组成的网络。
  • 使用 graph_split 函数将网络拆分成两个子图。
  • 使用 CUTLASS 目标构建子图,并配置编译目标。
  • 通过 Pipeline Executor 运行两个子图,支持异步或同步获取输出。
  • 使用 graph_executor 验证输出结果,确保两个子图的输出一致。

延伸问答

什么是 Apache TVM?

Apache TVM 是一个支持 CPU 和 GPU 的深度学习编译框架。

如何在 Relay 中使用 Pipeline Executor?

可以通过配置子图和目标,使用 CUTLASS 构建,并通过 Pipeline Executor 运行两个子图。

如何将神经网络拆分成子图?

使用 graph_split 函数可以将网络拆分成两个子图,用户也可以创建自定义逻辑进行拆分。

Pipeline Executor 支持哪些运行模式?

Pipeline Executor 支持异步或同步获取输出的运行模式。

如何验证两个子图的输出结果?

可以使用 graph_executor 依次运行两个子图,并验证输出结果是否一致。

在构建子图时,如何配置目标?

在构建子图时,可以设置不同的编译目标,例如将一个子图的目标设置为 'llvm',另一个设置为 'cuda'。

➡️

继续阅读