TVM简介

TVM

FGPA,CPU, GPU

1.什么是TVM?

是一个支持GPU,CPU,FPGA指令生成的开源编译器框架

2.特点

基于图和算符结构来优化指令生成,最大化硬件执行效率。其中使用了很多方法
来改善硬件执行速度,包括算符融合、数据规划、基于机器学习的优化器等。它
向上对接Tensorflow、Pytorch等深度学习框架,向下兼容GPU、CPU、ARM、
TPU等硬件设备。

3.整体架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
TVM是一个端到端的指令生成器。
整个架构是基于图描述结构,不论是对指令的优化还是指令生成,一个图结构
清晰的描述了数据流方向,操作之间的依赖关系等。

4.主要特点

1、基于GPU、TPU等硬件架构,将张量运算作为一个基本的算符,通过把一个深
度学习网络描述成图结构来抽象出数据计算流程。在这样的图结构基础上,更方便
记忆优化。同时能够有更好的向上向下兼容性,同时支持多种深度学习框架和硬件
架构。
2、巨大的优化搜索空间。在优化图结构方面,其不再局限于通过某一种方式,而是
通过机器学习方法来搜索可能的空间来最大化部署效率。这种方式虽然会导致编译器
较大的计算量,但是更加通用。
TVM提供了一个非常简单的端到端用户接口,通过调用TVM的API可以很方便的进行
硬件部署。比如:

import tvm as t# 将keras模型输入到TVM,指定部署的硬件GPU,然后进行优化和代码生成。
graph, params = t.fronted.from_keras(keras_model)
target = t.target.cuda()
graph, lib, params = t.compiler.build(graph, target, params)

TVM也提供了Java、C++和python界面供用户统一调用。

5.图结构基本优化

TVM图优化策略:
算符融合:将可以在硬件上用一个算符完成的多个连续运算合并;
常量折叠:将可以预先计算的数据放在编译器中完成,减少硬件计算;
存储规划:预先为中间数据分配存储空间来存储中间值,避免中间数据无法存储在片上而增加片外
存储开销;
数据规划:重新排列数据有利于硬件计算。

6.张量计算

TVM采用Halide思想,通过使用schedule来对张量计算进行等价变换,从中计算出执行效率最高的
schedule结构。整个schedule流程如下:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还增加了三种针对GPU和TPU的schedule方式:spicile memory scope,
tensorrization, latency hiding。

并行化计算:

需要考虑两点问题:并行度、数据共享。
TVM提出了memory scope的概念,其将数据计算进行可并行和不可并行分类,对于可以并行计算的,
就可以使用多线程来并行计算,而不可并行,则需要等待被依赖数据计算完成。

存储读写优化

7.自动优化器

一个机器学习模型来寻找最优化的schedule结构。其包含两部分:一部分是基于schedule方式产生
所有可能的计算结构;另外一个是机器学习代驾模型来预测可能性。

8.编译流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/687410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指代消解类方法梳理

概念: MLM:带遮罩的语言模型 NSP:单句预测,任务包括两个输入序列 SBO:分词边界目标 1.spanBERT,2019 spanBERT是对bert从分词到文本跨度的优化,主要有两方面的优化:&#xff08…

Llama 3 是怎么回事?Arena 数据分析

4 月 18 日,Meta 发布了他们最新的开放权重大型语言模型 Llama 3。从那时起,Llama 3-70B 就在 English Chatbot Arena 排行榜上迅速上升,拥有超过 50,000 次对战。Meta 的这一非凡成就对开源社区来说是个好消息。在这篇博文中,我们旨在深入探讨为什么用户将 Llama 3-70b 与 GPT…

代码随想录——二叉树的层序遍历Ⅱ(Leetcode107)

题目链接 层序遍历(队列) /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, Tre…

开源直播电商系统(仿抖音电商模式)

当下,传统的图文电商模式正在走向没落,以“抖音”为首的直播电商模式备受用户追捧,它具有直观与互动的特点,拥有传统电商所不具备的优势。而且,当前正是直播电商的红利期,很多主播和品牌商都通过直播电商业…

mac苹果电脑卡顿反应慢如何解决?2024最新免费方法教程

苹果电脑以其稳定的性能、出色的设计和高效的操作系统,赢得了广大用户的喜爱。然而,随着时间的推移,一些用户会发现自己的苹果电脑开始出现卡顿、反应慢等问题。这不仅影响使用体验,还会影响工作效率。那么,面对这些问…

luceda ipkiss教程 67:修改器件端口名

如果要替换线路中的器件,但是要替换的器件端口名称又不一样,那该怎么办呢?去对应改线路中端口的名称太过繁琐,这就需要需要器件的端口名,如: 改y分束器的端口名 改了端口名称,线路中的器件就可…

Redis不同数据类型value存储

一、Strings redis中String的底层没有用c的char来实现,而是使用SDS数据结构( char buf[])。 缺点:浪费空间 优势: 1.c字符串不记录自身的长度,所以获取一个字符串长度的复杂度是O(N),但是SDS记录分配的长度alloc,已使用长度len,获取长度的…

​​​【收录 Hello 算法】第 5 章 栈与队列

第 5 章 栈与队列 Abstract 栈如同叠猫猫,而队列就像猫猫排队。 两者分别代表先入后出和先入先出的逻辑关系。 本章内容 5.1 栈5.2 队列5.3 双向队列5.4 小结

Vue项目npm install certificate has expired报错解决方法

1.Vue项目 npm install 安装依赖突然报错: npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.org/zrender/download/zrender-4.3.0.tgz failed, reason: certificate has expired npm ERR! A com…

2024年汉字小达人活动还有4个多月开赛:来做18道历年选择题备考吧

不出特殊情况的话,距离2024年第11届汉字小达人比赛还有4个多月的时间,如何利用这段时间有条不紊地备考呢?我的建议是两手准备:①把小学1-5年级的语文课本上的知识点熟悉,重点是字、词、成语、古诗。②把历年真题刷刷熟…

Linux 进程信号【信号产生】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux知识分享⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 信号概念 1. 生活角度的信号 2…

信息系统项目管理师0101:项目建议与立项申请(7项目立项管理—7.1项目建议与立项申请)

点击查看专栏目录 文章目录 第七章 项目立项管理7.1项目建议与立项申请1.立项申请概念2.项目建议书内容记忆要点总结第七章 项目立项管理 项目立项管理是对拟规划和实施的项目技术上的先进性、适用性,经济上的合理性、效益性,实施上的可能性、风险性以及社会价值的有效性、可…