【TVM】User Tutorial--Introduction

目录

Introduction

An Overview of TVM and Model Optimization


Introduction

AuthorsJocelyn ShiueChris HogeLianmin Zheng

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

An Overview of TVM and Model Optimization

  • 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支持的任何其他平台。
  • 专用编译器,如NVIDIA的编译器NVCC。
  • 嵌入式和专用目标,通过 TVM 的自带代码生成 (BYOC) 框架实现。

     7. 编译成机器码。 在此过程结束时,特定于编译器的生成代码可以降级为机器代码。

TVM 可以将模型编译为可链接的对象模块,然后可以使用轻量级 TVM 运行时运行,该运行时提供 C API 以动态加载模型,以及 Python 和 Rust 等其他语言的入口点。 TVM 还可以构建捆绑部署,其中运行时与模型结合在一个包中。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值