07 2022 档案
摘要:任何新的运行时环境都必须实现三个主要方面: DeviceAPI类为特定设备提供了一个句柄,以及用于与之交互的API。它定义了一个通用接口,用于查询设备参数(例如可用内存、线程数量等)和执行简单操作(例如从主机复制内存,或在设备的缓冲区之间复制内存)。 Target类包含函数将在其上运行的设备的描述。
阅读全文
摘要:本文档适用于想要了解 TVM 架构和/或积极开发项目的开发人员。页面组织如下: 示例编译流程概述了 TVM 将模型的高层描述转换为可部署模块所采取的步骤。要开始使用,请先阅读本节。 逻辑架构组件部分描述了逻辑组件。后面的部分是针对每个逻辑组件的特定指南,按组件的名称组织。 设备/目标交互描述了 TV
阅读全文
摘要:Python update() function in set adds elements from a set (passed as an argument) to the set. Syntax : set1.update(set2) Here set1 is the set in which
阅读全文
摘要:在阅读TVM源码时,发现了*.pyi文件,里面的函数没有具体的实现,都诸如如下的形式,感到很疑惑。 @overload def getattr(__o: object, __name: str, __default: _T) -> Any | _T: ... def globals() -> dic
阅读全文
摘要:在阅读tvm 前端代码时发现了诸如from ... import nd as _nd/from .. import analysis之类的代码,因长时间未接触python,感到格外好奇 参考:PEP 328 – Imports: Multi-Line and Absolute/Relative 官方
阅读全文
摘要:支持的TVM硬件后端概述 下图显示了 TVM 目前支持的硬件后端: 在本教程中,将选择 cuda 和 llvm 作为目标后端。首先,让导入 Relay 和 TVM。 import numpy as np from tvm import relay from tvm.relay import test
阅读全文
摘要:TensorIR是一种用于深度学习的特定领域语言,主要有两个目的。 在各种硬件后端进行程序变换和优化的实现 用于自动张量化程序优化的抽象 import tvm from tvm.script.parser import ir_module from tvm.ir.module import IRMo
阅读全文
摘要:与基于模板的AutoTVM不同(会依赖手动模板定义搜索空间),自动调度器不需要任何模板。用户只需要编写计算声明,而不需要任何调度命令或模板。自动调度器可以自动生产一个大的搜索空间,并在空间中找到一个好的调度。 本节以矩阵乘法为例 导入依赖包 import os import numpy as np
阅读全文
摘要:本节学习如何使用TVM 张量表达式(TE)语言来编写调度模板,这些模板可以被autoTVM搜索到,以找到最佳调度。这个过程称为auto-Tuning,它有助于优化张量计算的自动化过程。 本节建立在如何使用TE编写矩阵乘法的基础上 auto-tuning的步骤如下: 第一搜索空间 第二运行一个搜索算法
阅读全文
摘要:在本教程中,把注意力转向 TVM 如何使用张量表达式(Tensor Expression,简称 TE)定义张量计算并应用循环优化。TE 以纯函数式语言描述张量计算(即每个表达式都没有副作用)。从 TVM 的整体来看,Relay 将计算描述为一组算子,这些算子都可以表示为 TE 表达式,每个 TE 表
阅读全文
摘要:在本节,将介绍与TVMC相同的知识,但展示的是如何使用Python API来完成它。完成本节后,我们将使用适用于 TVM 的 Python API 来完成以下任务: 为TVM Runtime编译预训练的ResNet-50 v2模型 通过编译的模型运行真实图像,并解释输出和模型性能。 使用TVM在CP
阅读全文
摘要:Step 0: Imports from tvm.driver import tvmc Step 1: Load a model 下载模型: wget https://github.com/onnx/models/raw/b9a54e89508f101a1611cd64f4ef56b9cb62c7c
阅读全文
摘要:TVMC介绍 TVMC,是TVM的命令行驱动程序,TVMC是一种通过命令行界面公开TVM功能的工具,例如uto-tuning/compiling/profiling和通过命令行接口运行模型 在完成本节内容后,将使用 TVMC 来完成以下任务: 为 TVM 运行时编译预训练 ResNet-50 v2
阅读全文
摘要:TVM整体流程(参考:TVM介绍) 机器学习模型在用TVM优化编译器框架进行变换时的步骤: 从Tensorflow/pytorch或ONNX等框架导入模型 import层是TVM从其他框架中导入模型的地方 注:TVM为每个前端提供的支持水平不尽相同,可尝试将模型转换为ONNX 转换到Relay Re
阅读全文
摘要:docker安装 可自行到https://tvm.apache.org/docs/install/docker.html 官网下载安装 环境: 系统: ubuntu22.04系统, docker版本: 20.10.17 cuda: 11.6 因此在安装时选用了nvidia/cuda:11.6.1-d
阅读全文
摘要:上一讲,对OpenPPL进行了介绍,以及通过官方文档,学习了它的python与C++的操作流程,以及如添加新的引擎与Op算子. 本节,将通过阅读代码通过UML梳理操作流程以及类之间的相互关系 src地址为:https://github.com/openppl-public/ppl.nn 一 流程时序
阅读全文