TVM User Tutorial -- Introduction

Introduction

Authors: Jocelyn Shiue, Chris Hoge, Lianmin Zheng

Apache TVM 是一个用于 CPU、GPU 和机器学习加速器的开源机器学习编译器框架。 它旨在使机器学习工程师能够在任何硬件后端上高效地优化和运行计算。 本教程的目的是通过定义和演示关键概念来引导您了解 TVM 的所有主要功能。 新用户应该能够从头到尾完成教程,并能够操作 TVM 进行自动模型优化,同时对 TVM 架构及其工作原理有基本的了解。

An Overview of TVM and Model Optimization

TVM和模型优化概述

下图说明了机器模型在使用 TVM 优化编译器框架进行转换时所采取的步骤。
TVM优化编译器转换步骤

  1. 从 Tensorflow、PyTorch 或 Onnx 等框架导入模型。 导入层是 TVM 可以从其他框架(如 Tensorflow、PyTorch 或 ONNX)中提取模型的地方。 TVM 为每个前端提供的支持水平会随着我们不断改进开源项目而变化。 如果您在将模型导入 TVM 时遇到问题,您可能需要尝试将其转换为 ONNX。
  2. 翻译成 TVM 的高级模型语言 Relay。 已导入 TVM 的模型在 Relay 中表示。 Relay是神经网络的功能语言和中间表示(IR)。 它支持:
    – 传统的数据流风格的表示
    –函数式作用域,let-binding,使其成为一种功能齐全的可微语言
    –允许用户混合两种编程风格的能力
    Relay 应用图级优化通道来优化模型。
  3. lower为张量表达式 (Tensor Expression,TE) 表示。 lowering是指将较高级别的表示转换为较低级别的表示。 在应用高级优化之后,Relay 运行 FuseOps pass 以将模型划分为许多小的子图,并将子图降低为 TE 表示。 张量表达式 (TE) 是一种用于描述张量计算的领域特定语言。 TE 还提供了几个调度原语来指定低级循环优化,例如平铺、矢量化、并行化、展开和融合。 为了帮助将 Relay 表示转换为 TE 表示的过程,TVM 包含一个张量算子清单 (TOPI),其中包含常用张量算子的预定义模板(例如,conv2d、transpose)。
  4. 使用自动调整模块 AutoTVM 或 AutoScheduler 搜索最佳调度。 调度为 TE 中定义的运算符或子图指定低级循环优化。 自动调整模块搜索最佳调度并将其与Cost Model和设备上的测量值进行比较。 TVM 中有两个自动调谐模块。
    – AutoTVM:基于模板的自动调优模块。 它运行搜索算法以在用户定义的模板中找到可调整策略的最佳值。 TOPI中已经提供了普通算子的模板。
    – AutoScheduler(又名 Ansor):一个无模板的自动调整模块。 它不需要预定义的计划模板。 相反,它通过分析计算定义自动生成搜索空间。 然后它在生成的搜索空间中搜索最佳调度。
  5. 为模型编译选择最佳配置。 调优后,自动调优模块会生成 JSON 格式的调优记录。 此步骤为每个子图选择最佳调度。
  6. Lower为张量中间表示 (Tensor Intermediate Representation,TIR),TVM 的低级中间表示。 在根据调整步骤选择最佳配置后,每个 TE 子图被降低到 TIR 并通过低级优化通道进行优化。 接下来,优化的 TIR 被降低到硬件平台的目标编译器。 这是生成可部署到生产中的优化模型的最终代码生成阶段。 TVM 支持多种不同的编译器后端,包括:
    – LLVM,它可以针对任意微处理器架构,包括标准 x86 和 ARM 处理器、AMDGPU 和 NVPTX 代码生成,以及 LLVM 支持的任何其他平台。
    – 专门的编译器,例如 NVCC,NVIDIA 的编译器。
    – 嵌入式和专用目标,通过 TVM 的自带代码生成 (BYOC) 框架实现。
  7. 编译成机器码。 在此过程结束时,特定于编译器的生成代码可以降级为机器代码。
    TVM 可以将模型编译为可链接的对象模块,然后可以使用轻量级 TVM 运行时运行,该运行时提供 C API 以动态加载模型,以及 Python 和 Rust 等其他语言的入口点。 TVM 还可以构建捆绑部署,其中运行时与模型结合在一个包中。

本教程的其余部分将更详细地介绍 TVM 的这些方面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值