TVM介绍

为解决深度学习框架和硬件后端适配问题,华盛顿大学的陈天奇等人提出了TVM.

TVM是一个端到端的全栈编译器,包括统一的IR堆栈和自动代码生成方法其主要功能是优化在CPU、GPU和其他定制AI芯片上执行的AI模型,通过自动转换计算图,实现计算模式的融合和内存利用率最大化,并优化数据布局,完成从计算图到算子级别的优化,提供从前端框架到AI芯片、端到端的编译优化。通过TVM,只需要花费少量工作即可在移动端、嵌入式设备上运行AI模型。

TVM和其他框架的对比:

Mobile Nrural Network:MNN是阿里开发的一个轻量级的深度神经网络推理引擎,可以方便地部署在移动端与嵌入式系统中,并在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。

NCNN:这是腾讯开发的一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。可以部署在linux上,不过系统必须是64位。

TVM:它旨在缩小以生产力为中心的深度学习框架与以性能和效率为重点的硬件后端之间的差距。 TVM与深度学习框架一起使用,以提供对不同后端的端到端编译。提供基于编译方法的跨平台部署神经网络方案

为什么需要TVM

虽然硬件厂商提供了硬件库函数实现新指令和算子对应的内核(如计算密集型内核),而且,这些库函数在预定义内核中也可以使用新指令实现高性能,但当涉及新的AI模型或需要进一步提高模型性能时,这种方法的灵活性显示不足,而且,算子和硬件算子库紧密耦合,导致算子不可分解(即算子的原子性),从而妨碍了算子的进一步优化,使其难以在硬件平台上高效执行。因此,更好的做法是通过TVM的定制化处理,使新指令和算子易于集成和使用,并可以复用TVM现有的分析和转换Pass完成编译任务。

TVM相关的更多相关文章

  1. TVM图优化(以Op Fusion为例)

    首先给出一个TVM 相关的介绍,这个是Tianqi Chen演讲在OSDI18上用的PPThttps://files.cnblogs.com/files/jourluohua/Tianqi-Chen- ...

  2. TVM设备添加以及代码生成

    因为要添加的设备是一种类似于GPU的加速卡,TVM中提供了对GPU编译器的各种支持,有openCl,OpenGL和CUDA等,这里我们选取比较熟悉的CUDA进行模仿生成.从总体上来看,TVM是一个多层 ...

  3. 将TVM集成到PyTorch

    将TVM集成到PyTorch 随着TVM不断展示出对深度学习执行效率的改进,很明显PyTorch将从直接利用编译器堆栈中受益.PyTorch的主要宗旨是提供无缝且强大的集成,而这不会妨碍用户.PyTo ...

  4. 桥接PyTorch和TVM

    桥接PyTorch和TVM 人工智能最引人入胜的一些应用是自然语言处理.像BERT或GPT-2之类的模型及其变体,可以获住足够多的文本信息. 这些模型属于称为Transformers的神经网络类体系结 ...

  5. 将TVM集成到PyTorch上

    将TVM集成到PyTorch上 随着TVM不断展示出对深度学习执行效率的改进,很明显PyTorch将从直接利用编译器堆栈中受益.PyTorch的主要宗旨是提供无缝且强大的集成,而这不会妨碍用户.为此, ...

  6. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  7. pyinstaller打包TVM/RPC相关脚本及DSO文件

    0. 创建anaconda env numpy中MKL/BLAS库占用很大空间.使用如下命令创建新环境,并替换numpy. conda create -n extranumpy python=3.8. ...

  8. TVM:

    Hello TVM  发表于 2019-06-29 TVM 是什么?A compiler stack,graph level / operator level optimization,目的是(不同框 ...

  9. TVM调试指南

    1. TVM安装 这部分之前就写过,为了方便,这里再复制一遍. 首先下载代码 git clone --recursive https://github.com/dmlc/tvm 这个地方最好使用--r ...

  10. TVM如何训练TinyML

    TVM如何训练TinyML 机器学习研究人员和从业人员对"裸机"(低功耗,通常没有操作系统)设备产生了广泛的兴趣.尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化 ...

随机推荐

  1. 图解MySQL【日志】——Binlog

    Binlog(Binary Log,归档日志) 为什么需要 Binlog? Binlog 是 MySQL 中的二进制日志,用于记录数据库的所有写操作(INSERT.UPDATE.DELETE 等) 1 ...

  2. 类的public, private, protected有什么区别?

    如何区别C# private和protected? 一.通过使用来区分 1.private:编程语句在模块级别中使用,用于声明私有变量及分配存储空间. 2.protected:编程语句在模块级别中使用 ...

  3. FishSpeech应用篇——专属朗读人

    背景 FishSpeech部署教程参见:使用FishSpeech进行语音合成推理 - 天命小猪 - 博客园 部署好之后,就能够基于推理来定制自己专属朗读人.编程能力强的小伙伴可以结合AI定制一个自己的 ...

  4. 【Logisim】带有初始化功能的寄存器

    属于是拾人牙慧 子电路外观 子电路逻辑 描述: Q端 Counter + MUX : 实现初始化.初始时MUX选择init,待时钟第一个上升沿后,Counter([Data Bit]:1bit,[Ac ...

  5. springboot报错说 Failed to parse multipart servlet request; nested exception is java.io.IOException

    问题:一次开发中遇到一个springboot的异常,如下所示:Failed to parse multipart servlet request; nested exception is java.i ...

  6. 部署sing-box代理服务器绕过付费校园网上网

    解决的问题 学校一般会有2个网络,一个是教学区的免费校园网,一个是寝室楼的付费校园网.如何不交钱也能在寝室楼上网是一个问题. 以及,如果校园网在12点之后断网,如果解决断网问题 sing-box Gi ...

  7. [tldr] GO泛型编程

    最少的内容简述如何在GO中使用泛型编程 函数泛型 func f[T any](s Set[T]) { } 在函数声明的时候添加一个[]作为泛型的说明, 在使用的时候是可以自动推断 很多时候, any的 ...

  8. 变异凯撒-python脚本调整ascii码转字符串

    题目: 加密密文:afZ_r9VYfScOeO_UL^RWUc 格式:flag{ } 结合题目变异凯撒,第一个字符a到f加了5,第二个字符f到l加了6,推断每个字符都在前一个字符基础上+1. 编写py ...

  9. 链表的创建&遍历打印

    博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class Node: def __init__(self, item): ...

  10. Pydantic异步校验器深:构建高并发验证系统

    title: Pydantic异步校验器深:构建高并发验证系统 date: 2025/3/25 updated: 2025/3/25 author: cmdragon excerpt: Pydanti ...