TVM(一):简介与安装

2023-11-07

简介

TVM是一个用于深度学习系统的编译器堆栈。

它旨在缩小以生产力为中心的深度学习框架与以性能和效率为中心的硬件后端之间的差距。TVM与深度学习框架合作,为不同的后端提供端到端编译。

换句话说,TVM就是一种将深度学习工作负载部署到硬件的端到端IR(中间表示)堆栈。可以表述为一种把深度学习模型分发到各种硬件设备上的、端到端的解决方案。

GitHub:https://github.com/dmlc/tvm

homepage:https://docs.tvm.ai/install/from_source.html

安装

1.docker镜像

1) hub网站上拉取官方提供的docker镜像

在 https://hub.docker.com/u/tvmai 进行版本查看 然后拉取 适合自己的镜像

eg: 
docker pull tvmai/demo-cpu  [此镜像中无tvm.relay]

2)官方docker脚本

官方提供了好多 dockerfile文件,可以通过官方提供的bash.sh 和 buid.sh脚本进行镜像选择以及自定义镜像制定
可通过dockerfile来查看每一个镜像里面包含的包。

eg:
git clone --recursive https://github.com/dmlc/tvm
/tvm/docker/bash.sh tvmai/demo-cpu  [tvmai/demo-cpu中也无tvm.relay]

2. 源码编译

2.1下载源码

git clone --recursive https://github.com/dmlc/tvm

2.2构建共享库

#确保g++版本(4.8以上) 确保cmake版本(3.5以上)
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake
mkdir build
cp cmake/config.cmake build

2.3 安装llvm

  • 了解系统
cat /proc/version # 查看系统版本 
cat /etc/issue  #查看Ubuntu版本
  • 采用下载Pre-Built Binaries 文件的方式安装 (尝试,简单可用)
#下载解压缩
wget -c http://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
tar xJvf clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
#添加环境变量
pwd
vim ~/.bashrc
export PATH=$PATH:/path/to/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04/bin
source ~/.bashrc 
#测试
clang
llvm-config --version
  • 还有其他的方式下载llvm, 尝试了一下下面的方式,在最后一步,不知道哪里设置原因 出现了错误。 推荐第一种方法。具体 可见 https://apt.llvm.org/
vi etc/apt/sources.list
#添加 
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main #18.04 
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main 
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - 
apt update 
apt-get install clang-8 lldb-8 lld-8

2.4自定义编译选项

vi build/config.cmake
set(USE_LLVM /path/to/your/llvm/bin/llvm-config)  # 如果多个llvm可以设置查找具体的一个
or  
set(USE_LLVM ON)

2.5build TVM 和相关库

cd build
cmake ..
make -j4

2.6python包安装

  • 方法一(推荐)
export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:$TVM_HOME/topi/python:$TVM_HOME/nnvm/python:${PYTHONPATH}
  • 方法二
#install tvm package for the current user
#NOTE: if you installed python via homebrew, --user is not needed during installaiton
#it will be automatically installed to your user directory.
#providing --user flag may trigger error during installation in such case.
export MACOSX_DEPLOYMENT_TARGET=10.9  # This is required for mac to avoid symbol conflicts with libstdc++
cd python; python setup.py install --user; cd ..
cd topi/python; python setup.py install --user; cd ../..
cd nnvm/python; python setup.py install --user; cd ../..

2.7安装python依赖

#推荐使用清华源 -i https://pypi.tuna.tsinghua.edu.cn/simple
apt-get install python3-pip
pip3 install --user numpy decorator attrs
pip3 install --user tornado
pip3 install --user tornado psutil xgboost
pip3 install --user mypy orderedset antlr4-python3-runtime

资料

https://docs.tvm.ai/install/from_source.html
https://discuss.tvm.ai TVM讨论社区
https://github.com/dmlc/tvm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TVM(一):简介与安装 的相关文章

  • TVM优化原理学习

    没有看论文 xff0c 看了b站陈天奇的视频 xff0c 还有一些博客的分析 xff0c 学习了优化原理 后续需要深入理解再看论文 TVM对于神经网络的优化主要有两部分 xff0c 计算图优化和算子优化 xff0c 下面分开说明 计算图优化
  • ubuntu20.04配置TVM环境

    官方安装教程 xff1a https tvm hyper ai docs install from source 安装环境配置信息 xff1a system xff1a ubuntu20 span class token punctuati
  • Windows安装TVM详细教程及报错提示

    Windows中安装TVM xff0c 网上有各种教程 xff0c 但是由于某些原因 xff0c 总是无法安装成功 xff0c 这大概率是各种工具之间的版本不兼容原因 注 xff1a 虽然本博客是为了教大家在windows中安装tvm xf
  • linux(ubuntu20.04)安装tvm-0.9.0+llvm+cuda/cudnn(一步到胃版)

    我是在双系统中linux上安装的 xff0c 不是Ubuntu虚拟机 xff0c 虽然两者过程基本一样 xff0c 但是在双系统上会更方便 文章目录 零 xff1a 究极大招版一 xff1a 环境准备1 1 安装gcc cmake等必要的依
  • 【从零开始学深度学习编译器】五,TVM Relay以及Pass简介

    TVM Relay以及Pass简介 0x0 介绍0x2 Relay介绍0x2 1 使用Relay建立一个计算图0x2 2 Module xff1a 支持多个函数 xff08 Graphs xff09 0x2 3 Let Binding an
  • Intellij IDEA安装Maven(非常详细)

    安装Maven 安装路径 点击链接进去直接下载所需的版本Maven官网 http maven apache org download cgi 最新版本下载方式 1 点击链接进入Maven官网 2 找到左侧栏的Download找到Files下
  • 深度学习编译器系列视频摘要

    文章目录 0 前言 深度学习编译器 一 综述 深度学习编译器 二 Auto TVM 深度学习编译器 三 Auto Schedule 0 前言 在B站黄雍涛博士发了几个深度学习编译器的视频 感觉说得挺好 所以记录一下 深度学习编译器 一 综述
  • TVM 从入门到精通

    本文首发自 公众号 HyperAI超神经 内容一览 TVM 共有三种安装方法 从源码安装 使用 Docker 镜像安装和 NNPACK Contrib 安装 本文讲解如何通过 Docker 镜像 和 NNPACK Contrib 安装 关键
  • 编译 MXNet 模型

    本篇文章译自英文文档 Compile MXNet Models 作者是 Joshua Z Zhang Kazutaka Morita 更多 TVM 中文文档可访问 TVM 中文站 本文将介绍如何用 Relay 部署 MXNet 模型 首先安
  • TVM User Tutorial -- Blitz Course to TensorIR

    Author Siyuan Feng TensorIR 是一种特定领域语言 用于深度学习项目 有两个广泛的用途 在各种硬件后端上实现转换和优化程序 自动张力化程序优化的抽象 import tvm from tvm ir module imp
  • AutoSchedule和AutoTVM

    简介 AutoTVM 用户自己手写一个模版 在模版里面自己定义一下tune的参数 例如tile size等 给定一个模版 在这个模版里面去搜索参数 使得可以达到一组最好的参数使得张量计算的结果最好 但是 它是一种基于模板的方法 因此仍然需要
  • TVM的安装过程

    最近在看深度学习编译器相关的工作 其中FlexTensor给我留下了比较深刻的印象 加上这项工作是开源的 所以想看看这份工作的源码 首先是怎么把工程跑起来 FlexTensor倚仗TVM做代码生成 所以首先得安装TVM 首先给出官方网站的安
  • 【TVM 学习资料】使用 Python 接口(AutoTVM)编译和优化模型

    本篇文章译自英文文档 Compiling and Optimizing a Model with the Python Interface AutoTVM 作者是 Chris Hoge 更多 TVM 中文文档可访问 TVM 中文站 TVMC
  • TVM概述

    TVM TVM是陈天奇领导的一个DL加速框架项目 它处于DL框架 如tensorflow pytorch 和硬件后端 如CUDA OpenCL 之间 兼顾了前者的易用性和后者的执行效率 官网 https tvm apache org 代码
  • 【超简单方法】ubantu18.04.2安装最新显卡驱动

    1 检查工作 1 1去https www geforce cn drivers查找适合自己显卡的最新驱动版本 点击 开始搜索 然后 可以看出此时笔者的2060的最新显卡驱动版本为430 26 1 2 检查可安装驱动版本 接下来执行打开ter
  • mac环境搭建

    macpro 11 开发环境搭建 一 基础软件安装 1 1 安装nginx 参考 https www jianshu com p 4f433d219ab7 现在mac认为root安装软件过于危险 不推荐用root账号安装软件 brew in
  • 【TVM 学习资料】用 Schedule 模板和 AutoTVM 优化算子

    本篇文章译自英文文档 Optimizing Operators with Schedule Templates and AutoTVM 作者是 Lianmin Zheng Chris Hoge 更多 TVM 中文文档 访问 TVM 中文站
  • TVM编译安装

    本文是在已大致了解tvm功能和架构的基础上 根据官方文档 在x86 64 Ubuntu 18 04 GPU Pytorch1 8 0上安装TVM的流程 参考文档 TVM安装官方文档 llvm下载链接 1 下载源代码 从tvm官网下载源代码
  • TVM Relay softmax算子调度分析

    https github com apache tvm pull 8909 files 计算 调度分离 TOPI中的算子分为其算子的定义和算子的schedule两部分 算子的定义是唯一的 而对于不同的后端 x86 cuda等 schedul
  • 【tvm官网教程01】设计和架构-1

    tvm官网教程01 设计和架构 1 目的 1 编译流 1 1 关键数据结构 1 2 Transformations 1 2 1 变换的分类 1 2 2 relay transform 1 2 2 1 子函数 1 2 2 2 overall问

随机推荐

  • vue3.0教程——搭建Vue脚手架【简化版】

    目录 哈喽 大家好丫 你们的小郭子又来啦 一 环境要求 1 node安装 前端开发环境 2 vue cli脚手架安装 二 安装依赖 1 使用命令行安装以下依赖 2 通过 vue ui 命令以图形化界面来管理项目依赖 3 导入你刚刚项目的地址
  • 装系统使用默认administrator用户

    在设置键盘布局界面按下Ctrl Shift F4重启 进入系统后 见到一个 系统准备工具 3 14 开始 运行 输入 XCOPY windir System32 svchost exe windir System32 oobe audit
  • MyBatis框架( 项目构建笔记 )

    MyBatis框架 项目构建笔记 一 框架 二 获取参数 三 查询 四 模糊查询 批量删除 五 resultMap和映射关系 五 动态SQL 基本功能实现的项目结构 将SqlSessionFactory 使用工具类进行封装 映射文件的名称要
  • 牛客 AB28 快速幂 JAVA

    描述 请你计算 ab mod p 的值 一共有 q 次询问 输入描述 第一行输入一个正整数 q 代表询问次数 接下来每行输入三个正整数 a b p 代表一次询问 数据范围 1 1051 q 105 1 1071 a b p 107 输出描述
  • BatchNormalization、LayerNormalization、InstanceNorm、GroupNorm、SwitchableNorm总结

    本篇博客总结几种归一化办法 并给出相应计算公式和代码 1 综述 1 1 论文链接 1 Batch Normalization https arxiv org pdf 1502 03167 pdf 2 Layer Normalizaiton
  • 解决git分支切换时遇到的问题

    Please commit your changes or stash them before you switch branches问题的解决 在项目开发的过程中 有时候会遇到一个分支上的BUG还没解决 另一个分支上的BUG又急需解决 这
  • docker 安装mysql总是报错

    完全卸载mysql 把所有的mysql 相关的文件全部删除 find name mysql 查到文件全部删除
  • OpenGL 入门 19:内建变量、接口块、Uniform缓冲

    一 内建变量 查询所有的内建变量的话 请查看OpenGL的wiki 顶点着色器 Input 变量名称 变量类型 变量语义 作用 gl VertexID int 索引 当使用glDrawElements 存储的是正在绘制顶点的当前索引 当使用
  • linux下多线程的创建和结构体传参

    下面总结一下linux下多线程的创建和传参 这里的传的参数是结构体的地址 然后在子线程中输出所传结构体对象的值 实现过程非常简单 其中pthread create 创建子线程 pthread join 是等待阻塞子线程结束 pthread
  • 在Python学习中遇到的一个疑问(可能已解决)

    文章目录 问题 分析 问题 从网上扒拉出来一段代码 是关于函数重写的 输出结果比较正常 但某些函数不太懂 python usr bin python3 class Vector def init self a b self a a self
  • Vue组件之间的通信方式

    六种方式 1 props emit 适用于 父子组件通信 略 2 ref 与 parents children 适用于父子组件通信 不好维护 不推荐使用 3 EventBus 适用于 父子 隔代 兄弟组件通信 这种方法通过一个空的 Vue
  • 每日sql-复购率问题count+case+timediff类函数

    记录一下案例 下次直接拿起来用
  • Python异常捕获及自定义异常类

    Python异常捕获及自定义异常类 一 什么是异常 异常是一个与业务逻辑无关的BUG 一个潜在错误或者网络错误事件等 如 尚未实现的函数 缩进错误 Python语法错误等 该事件可能会在程序执行过程中发生 影响程序的正常执行 在Python
  • 4.单链表ADT模板简单应用算法设计:单链表中前 m 个元素和后 n 个元素的互换

    问题描述 目的 使用C 模板设计单链表的抽象数据类型 ADT 并在此基础上 使用单链表ADT的基本操作 设计并实现单链表的简单算法设计 内容 1 请使用模板设计单链表的抽象数据类型 由于该环境目前仅支持单文件的编译 故将所有内容都集中在一个
  • HJ77 火车进站

    Powered by NEFU AB IN Link 文章目录 HJ77 火车进站 题意 思路 代码 HJ77 火车进站 题意 给定一个正整数N代表火车数量 0
  • C# WPF+skyline可视化学习笔记(一)------在WPF中加载fly地图

    我是学Java的 校招进了公司 是做这个的 我就只有现学了 还好有耐心的师傅和同事们友好帮助 不然我可能就凉了 好了 话不多说 本章内容就是使用vs2017 创建一个WPF项目并且一步一步手把手加载fly地图文件吧 前提准备 你得有这个软件
  • Java聊天--聊天界面

    import java awt import javax swing public class myMain extends JFrame JTextField tsend 在外部声明文本框 用来写留言 Choice clist 声明下拉框
  • 分享一个自媒体副业,认真做可以月入6000+

    做的这个副业并不难 每天花费2 3小时做视频剪辑 上个月一个新账号收益6000多 如果你现在每天的空闲时间比较多 也可以去尝试着做一下视频剪辑 这期内容来把方法分享给粉丝们 如果对你有所帮助 记得点赞支持一下大周 很多人都不知道我们在自媒体
  • Jenkins配置及插件安装

    Jenkins里应该如何把master节点以及slave节点搞到一起 进行一个联系 首先应该访问到安装好Jenkins的机器 下图是Jenkins首页的内容 暂时没有任何的流水线及agent 完善一下基本的信息 root jenkins m
  • TVM(一):简介与安装

    简介 TVM是一个用于深度学习系统的编译器堆栈 它旨在缩小以生产力为中心的深度学习框架与以性能和效率为中心的硬件后端之间的差距 TVM与深度学习框架合作 为不同的后端提供端到端编译 换句话说 TVM就是一种将深度学习工作负载部署到硬件的端到