打破硬件壁垒:TVM 助力 AI技术跨平台部署

文章目录

  • 《TVM编译器原理与实践》
    • 编辑推荐
    • 内容简介
    • 作者简介
    • 目录
    • 前言/序言
    • 获取方式


随着人工智能(Artificial Intelligence,AI)在全世界信息产业中的广泛应用,深度学习模型已经成为推动AI技术革命的关键。TensorFlow、PyTorch、MXNet、Caffe等深度学习模型已经在服务器级GPU上取得了显著的成果。然而,大多数现有的系统框架只针对小范围的服务器级GPU进行过优化,因此需要做很多的优化努力,以便在汽车、手机端、物联网设备及专用加速器(FPGA、ASIC)等其他平台上部署。为了解决这一问题,TVM应运而生。

TVM是一个基于中间表示(IR)的统一解决方案,它能自动优化深度学习模型,并提供跨平台的高效开源部署框架。有了TVM的帮助,只需要很少的定制工作,就可以轻松地在手机、嵌入式设备甚至浏览器上运行深度学习模型。此外,TVM还为多种硬件平台上的深度学习计算提供了统一的优化框架,包括一些有自主研发计算原语的专用加速器。

TVM是一个深度学习编译器,所有人都能随时随地使用开源框架学习研发。围绕TVM形成了多元化社区,社区成员包括硬件供应商、编译器工程师和机器学习研究人员等,共同构建了一个统一的可编程软件堆栈,丰富了整个机器学习技术生态系统。

TVM是一个新型的AI编译器,广泛应用于各种产品研发中,在企业与学术研究中有很大的影响。通过TVM,深度学习模型可以在更广泛的硬件平台上得到优化和部署,从而推动AI技术的普及和发展。

首先,TVM解决了深度学习模型在不同硬件平台上的部署问题。由于现有的系统框架主要针对服务器级GPU进行优化,因此在其他平台上部署深度学习模型往往需要大量的定制工作。而TVM提供了一个统一的优化框架,可以自动将深度学习模型优化到不同的硬件平台上,大大减少了部署的难度和工作量。

其次,TVM提高了深度学习模型在不同硬件平台上的性能。通过自动优化和调优,TVM可以在保证模型准确性的同时,提高模型在不同硬件平台上的运行速度和能效。这对于在资源受限的设备上运行深度学习模型具有重要意义,例如在手机、嵌入式设备和物联网设备上。

此外,TVM还支持多种专用加速器,如FPGA和ASIC。这些加速器具有很高的计算性能和能效,但通常需要定制化的开发流程。通过TVM,用户可以将这些加速器纳入统一的优化框架,从而充分利用它们的优势。

TVM作为一个开源项目,吸引了来自世界各地的开发者和企业参与其中。围绕TVM形成了一个多元化的社区,社区成员共同推动TVM的发展和完善。这种开放的合作模式有助于加速AI技术的创新和应用。

总之,TVM作为一个基于中间表示的统一解决方案,为深度学习模型在不同硬件平台上的优化和部署提供了强大的支持。通过TVM,深度学习模型可以在更广泛的硬件平台上得到应用,从而推动AI技术的普及和发展。同时,围绕TVM形成的多元化社区也为整个机器学习技术生态系统的繁荣做出了重要贡献。


《TVM编译器原理与实践》

在这里插入图片描述
适读人群 :从事AI算法,软件,AI芯片,编译器开发工程技术人员

编辑推荐

人工智能(Artificial Intelligence,AI)已经在全世界信息产业中获得广泛应用。深度学习模型推动了AI技术革命,如 TensorFlow、PyTorch、MXNet、Caffe等。大多数现有的系统框架只针对小范围的服务器级 GPU进行过优化,因此需要做很多的优化努力,以便在汽车、手机端、物联网设备及专用加速器(FPGA、ASIC)等其他平台上部署。随着深度学习模型和硬件后端数量的增加,TVM构建了一种基于中间表示 (IR)的统一解决方案。TVM不仅能自动优化深度学习模型,还提供了跨平台的高效开源部署框架。大模型的热度逐渐上升,将人工智能理论及算法框架转为落地项目实现,TVM是一个很好的桥梁。因此,本书将得到广大读者的喜爱。

内容简介

TVM(Tensor Virtual Machine, 张量虚拟机)是一种开源的模型编译框架,旨在将机器学习模型自动编译成可供下层硬件执行的机器语言,从而利用多种类型的算力。其工作原理是,先将深度学习模型进行优化推理、内存管理与线程调度,再借用LLVM框架将模型部署在CPU、GPU、FPGA、ARM等硬件设备上。
本书全面解析TVM的主要功能,帮助读者理解TVM工作原理,以及使用 TVM对深度学习与机器学习进行优化与部署。
本书结合作者多年的工作与学习经验,力求将TVM基础理论与案例实践融合在一起进行详细讲解。全书共9章,包括TVM基本知识,使用TVM开发,算子融合与图优化,TVM量化技术,TVM 优化调度,Relay IR,代码生成,后端部署与OpenCL(Open Computing Language,开放运算语言),自动调度、自动搜索与成本模型。各章除了包含重要的知识点和实践技能外,还配备了精心挑选的典型案例。
本书适合从事AI算法、软件、编译器开发以及硬件开发等专业的工程技术人员、科研工作人员、技术管理人员阅读,也可以作为编译器相关专业高校师生的参考用书。

作者简介

吴建明,上海交通大学模式识别与智能系统专业博士毕业。长期从事人工智能芯片设计,尤其擅长TVM/LLVM编译器、AI框架、自动驾驶、芯片制造,嵌入式系统等领域的理论研究与技术创新。长期在一线工作,包括产品设计与代码实现等,主持和参与过30多项产品的研发。还参与过国家自然科学基金、上海市科委项目,并在核心期刊公开发表过8篇论文,其中6篇是第一作者。

目录

1TVM基本知识/
1.1TVM基本原理/
1.1.1TVM概述/
1.1.2TVM 模型优化部署概述/
1.2TVM编译过程/
1.2.1编译流程/
1.2.2TVM编译数据结构/
1.2.3TVM编译数据处理/
1.2.4TVM的Pass过程/
1.3TVM开源工程逻辑架构/
1.3.1代码库代码结构/
1.3.2代码自动内核/
1.4TVM应用支持/
1.4.1TVM的工作流程/
1.4.2支持多语言与多平台/
1.4.3TVM应用场景/
1.4.4TVM优化模型推理/
1.4.5TVM编译器与运行时组件/
1.4.6TVM运行时主要模块/
1.4.7TVM简单代码生成编译示例/
1.4.8TVM各模块之间的关系/
1.5TVM特色与挑战/
1.5.1TVM特色/
1.5.2支持多种后端设备/
1.5.3TVM应对的挑战/2章 使用TVM开发/
2.1配置TVM环境/
2.1.1apache TVM源码下载/
2.1.2配置TVM的开发环境/
2.1.3TVM conda环境使用方法/
2.1.4编译实现/
2.1.5导入模型方法/
2.2在conda环境编译优化TVM yolov3示例/
2.3Python与C++的调用关系/
2.3.1TVM中底层C++数据结构/
2.3.2进行函数注册/
2.3.3上层Python调用/
2.4TVM自定义代码示例/
2.4.1TVM如何添加代码/
2.4.2TVM代码生成实现示例/
2.5TVM实现算法全流程/
2.5.1配置张量与创建调度/
2.5.2进行降级算子优化/
2.5.3构建host目标程序/
2.5.4实现后端代码生成/3章 算子融合与图优化/
3.1算子概述/
3.1.1TVM融合组件示例/
3.1.2优化计算图/
3.2GCN融合/
3.2.1图的概念/
3.2.2深度学习新特征/
3.3图融合GCN示例/
3.3.1GCN的PyTorch实现/
3.3.2融合BN与Conv层/
3.4TVM图优化与算子融合/
3.4.1图与算子优化/
3.4.2自定义算子/
3.4.3算子融合步骤/
3.4.4向Relay中添加operator/
3.5端到端优化/
3.5.1 AI框架概述/
3.5.2计算图优化层/
3.5.3TVM算子融合的4种方法/
3.5.4数据布局转换/
3.5.5张量表达式语言/
3.5.6调度空间分析/
3.6 TVM图优化与算子融合方案分析/
3.6.1图优化框架分析/
3.6.2TVM优化基础分析/
3.6.3TVM优化参数/
3.6.4算子优化图示/
3.6.5自定义图级优化/
3.7支配树技术/
3.7.1支配树概述/
3.7.2算子融合方案及示例/
3.8控制流与优化器/
3.8.1控制流/
3.8.2优化器/
3.9TVM存储与调度/
3.9.1TVM编译器优化/
3.9.2图结构基本优化/
3.9.3张量计算/
3.10多功能张量加速器VTA/
3.10.1VTA-TVM 硬件-软件堆栈/
3.10.2VTA主要功能/
3.10.3VTA示例/
3.10.4VTA计算模块/
3.10.5VTA控制/
3.10.6microTVM模型/
3.11TVM代码库结构与示例/
3.11.1代码库结构/
3.11.2张量添加示例/
3.12主机驱动的执行/
3.12.1 firmware二进制文件/
3.12.2计算声明/
3.12.3数据平铺/
3.12.4卷积运算/
3.12.5空间填充/4TVM量化技术/
4.1TVM量化概述/
4.1.1TVM量化现状/
4.1.2TVM量化原理/
4.2int8量化与TVM执行/
4.2.1两种主要量化方案/
4.2.2int8量化原理分析/
4.2.3KL散度计算/
4.2.4实现int8量化/
4.3低精度训练与推理/
4.4NN量化/
4.4.1神经网络量化概述/
4.4.2优化数据与网络/
4.4.3前向推理与反向传播/
4.5熵校准示例/
4.6TVM量化流程/
4.6.1Relay的两种并行量化/
4.6.2Relay优化Pass方法/
4.6.3量化处理硬件说明/
4.6.4阈值估计方案/
4.6.5模拟量化误差/
4.6.6尺度计算/
4.6.7数据类型分配/
4.6.8数据类型分配日志/
4.6.9神经网络低精度量化/
4.7TVM量化程序分析/5TVM优化调度/
5.1TVM 运行时系统/
5.1.1TVM 运行时系统框架/
5.1.2PackedFunc编译与部署/
5.1.3构建 PackedFunc模块/
5.1.4远程部署方法/
5.1.5TVM 对象与编译器分析/
5.2自动微分静态图与动态图/
5.2.1计算图分类/
5.2.2动态图实现示例/
5.3机器学习自动微分/
5.3.1微分方法/
5.3.2手动微分/
5.3.3数值微分/
5.3.4符号微分/
5.3.5自动微分/
5.3.6自动微分实现示例/
5.4稀疏矩阵分析/
5.4.1稀疏矩阵概念/
5.4.2稀疏矩阵优化/
5.4.3特定矩阵压缩存储/
5.4.4稀疏矩阵实现示例/
5.5TVM张量计算分析/
5.5.1生成张量运算/
5.5.2嵌套并行与协作/
5.5.3张量化计算/
5.5.4显式内存延迟隐藏/6章 Relay IR/
6.1TVM数据介绍/
6.1.1TVM模块框架介绍/
6.1.2Relay IR原理简介/
6.1.3构建计算图/
6.1.4let绑定与作用域/
6.2IR代码生成/
6.2.1前端优化/
6.2.2节点优化/
6.2.3代数优化/
6.2.4数据流级别的优化/
6.3在Relay中注册算子/
6.3.1添加节点,定义编译参数/
6.3.2运算类型关系分析/
6.3.3C++中进行RELAY_REGISTER_OP宏注册/
6.3.4算子注册与调度/
6.3.5注册函数API分析/
6.3.6将Python API打包/
6.3.7单元测试分析/
6.4TVM中IR示例/
6.4.1IRModule技术分析/
6.4.2TVM Runtime(运行时)分析/
6.4.3预测部署实现/
6.4.4动态图实现/

前言/序言

人工智能(Artificial Intelligence,AI)已经在全世界信息产业中获得广泛应用。深度学习模型推动了AI技术革命,如 TensorFlow、PyTorch、MXNet、Caffe等。大多数现有的系统框架只针对小范围的服务器级 GPU进行过优化,因此需要做很多的优化努力,以便在汽车、手机端、物联网设备及专用加速器(FPGA、ASIC)等其他平台上部署。随着深度学习模型和硬件后端数量的增加,TVM构建了一种基于中间表示 (IR)的统一解决方案。TVM不仅能自动优化深度学习模型,还提供了跨平台的高效开源部署框架。

有了TVM的帮助,只需要很少的定制工作,就可以轻松地在手机、嵌入式设备甚至浏览器上运行深度学习模型。TVM 还为多种硬件平台上的深度学习计算提供了统一的优化框架,包括一些有自主研发计算原语的专用加速器。TVM是一个深度学习编译器,所有人都能随时随地使用开源框架学习研发。围绕TVM形成了多元化社区,社区成员包括硬件供应商、编译器工程师和机器学习研究人员等,共同构建了一个统一的可编程软件堆栈,丰富了整个机器学习技术生态系统。

TVM是一个新型的AI编译器,广泛应用于各种产品研发中,在企业与学术研究中有很大的影响。但是,目前市面上有关TVM的书还很少,本书试图弥补这个空缺。全书的特点总结如下:

第一,从TVM的概念入手,分析了TVM的基本原理和关键支撑技术。

第二,从TVM的环境搭建到案例实践逐步展开,分析如何使用TVM进行实战开发。

第三,介绍了TVM的重要关键技术,如算子与图融合、量化技术、Relay IR(中间表示)、优化调度、编译部署等,分析了这些模块的理论与案例实践。

第四,TVM对后端相关的技术进行了分析与实践,包括代码生成、自动调度、自动搜索与成本模型等。

获取方式

  • 京东图书:《TVM编译器原理与实践》(吴建明,吴一昊)

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

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

相关文章

【习题】应用程序框架

判断题 1. 一个应用只能有一个UIAbility。错误(False) 正确(True)错误(False) 2. 创建的Empty Ability模板工程,初始会生成一个UIAbility文件。正确(True) 正确(True)错误(False) 3. 每调用一次router.pushUrl()方法,页面路由栈数量均会加1。错误(Fal…

开放式耳机品牌排行榜,2024开放式耳机选购攻略

我在选后开放式耳机的路上可以说是花了不少米,前前后后也下了不少的功夫去做功课了解开放式耳机,包括市面上目前最火的西圣、南卡、cleer等热门型号我都有用过了,可以说是很有发言权了吧。 开放式耳机现在越来越涌现在大众的视野上了&#x…

如何构建Prompt,帮我生成QA,作为召回率检索的测试集?

最近在做搜索召回率的提升工作。粮草未动兵马先行!在做之前应该先有一把尺子来衡量召回率的好坏。所以应该先构建测试数据集,然后去做标准化测试。 有了测试机集以后。再去做搜索优化,才能看出来效果。 当然可以选择一些开源的测试集。如果可…

POI:对Excel的基本读操作 整理2

1 简单读取操作 public class ExcelRead {String PATH "D:\\Idea-projects\\POI\\POI_projects";// 读取的一系列方法// ...... } 因为07版本和03版本操作流程大差不差,所以这边就以03版本为例 Testpublic void testRead03() throws IOException {//获取…

可拖拽表单比传统表单好在哪里?

随着行业的进步和发展,可拖拽表单的应用价值越来越高,在推动企业实现流程化办公和数字化转型的过程中发挥了重要价值和作用,是提质增效的办公利器,也是众多行业客户朋友理想的合作伙伴。那么,可拖拽表单的优势特点表单…

【MySQL】聚合函数与分组查询

聚合函数与分组查询 一、聚合函数1、常见的聚合函数2、实例 二、分组查询1、group by子句2、准备工作3、实例4、having 条件 一、聚合函数 说明:聚合函数用来计算一组数据的集合并返回单个值,通常用这些函数完成:个数的统计,某列…

Dubbo 框架揭秘:分布式架构的精髓与魔法【一】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Dubbo 框架揭秘:分布式架构的精髓与魔法【一】 前言Dubbo是什么Dubbo的核心概念整体设计 前言 在数字时代,分布式架构正成为应对大规模流量和复杂业务场景的标配。Dubbo&#…

【快刊录用】ABS一星,2区,仅2个月15天录用!

2023年12月30日-2024年1月5日 进展喜讯 经核实,由我处Unionpub学术推荐的论文中,新增2篇论文录用、3篇上线见刊、1篇数据库检索: 录用通知 FA20107 FA20181 — 见刊通知 FB20805 FA20269 FA20797 检索通知 FA20199 — — 计算机…

配网故障定位技术的发展与应用:保障电力供应安全稳定的重要支撑

在现代社会,电力供应安全稳定对于国家经济发展和民生福祉至关重要。然而,随着电网规模的不断扩大,配网故障问题也日益突出。为了确保电力供应的连续性和可靠性,人们不断探索和研发各种故障定位技术。本文将介绍一种基于行波测距技…

[Linux 进程(二)] Linux进程状态

文章目录 1、进程各状态的概念1.1 运行状态1.2 阻塞状态1.3 挂起状态 2、Linux进程状态2.1 运行状态 R2.2 睡眠状态 S2.3 深度睡眠 D2.4 停止状态 T2.5 僵尸状态 Z 与 死亡状态 X孤儿进程 Linux内核中,进程状态,就是PCB中的一个字段,是PCB中的…

智慧食堂管理方式,究竟改变了什么?

随着科技的迅速发展,餐饮业也在不断地迎来新的挑战和机遇。为了提升食堂管理效率、改善用户体验以及提高收益,许多食堂纷纷引入智慧收银系统。 客户案例 企业食堂改革 石家庄某大型企业食堂由于员工数量庞大,传统的收银方式难以满足快速就餐…

大话 JavaScript(Speaking JavaScript):第二十一章到第二十五章

第二十一章:数学 原文:21. Math 译者:飞龙 协议:CC BY-NC-SA 4.0 Math对象用作多个数学函数的命名空间。本章提供了一个概述。 数学属性 Math的属性如下: Math.E 欧拉常数(e) Math.LN2 2 …

Verilog 和 System Verilog 的区别

当谈到VLSI设计和数字电路建模时,verilog和system verilog是两种常用的硬件描述语言。这些 HDL 在 VLSI 设计中用于描述电子电路的行为和结构。它们都广泛应用于半导体行业来设计和实现集成电路(IC)。 它们是设计和模拟复杂数字系统的强大工具…

解决:ModuleNotFoundError: No module named ‘dbutils’

解决:ModuleNotFoundError: No module named ‘dbutils’ 文章目录 解决:ModuleNotFoundError: No module named dbutils背景报错问题报错翻译报错位置代码报错原因解决方法方法一,直接安装方法二,手动下载安装方法三,…

盈利之道:下单前的必问之问

投资者在过去的交易经历中,通常都会面临所谓的“交易低谷”。交易低谷是指在交易过程中难以实现盈利或可能导致进一步亏损的阶段。这种面临损失或没有盈利的时期可能发生在任何人身上,无论是由于市场变化、投资者策略调整还是其他原因。为了应对这种情况…

Hibernate实战之操作MySQL数据库(2024-1-8)

Hibernate实战之操作MySQL数据库 2024.1.8 前提环境(JavaMySQLNavicatVS Code)1、Hibernate简介1.1 了解HQL 2、MySQL数据库建表2.1 编写SQL脚本2.2 MySQL执行脚本 3、Java操作MySQL实例(Hibernate)3.1 准备依赖的第三方jar包3.2 …

与听力学相关的职业都有哪些?怎么选择?

随着年龄的增长,每个人都可能面临听觉障碍的困惑。听力学领域专注于患者的耳朵问题,包括听力损失和平衡障碍。听力学职业是为患者提供听觉健康管理服务的职业,专注于他们耳朵的听力和平衡甚至言语相关需求。为患者进行听功能检查、测试、诊疗…

代码随想录算法训练营Day17|110.平衡二叉树、257. 二叉树的所有路径、 404.左叶子之和

文章目录 一、110.平衡二叉树1.递归法 二、257. 二叉树的所有路径1. 递归法 三、 404.左叶子之和1.迭代法 一、110.平衡二叉树 题目描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二…

C++ Primer 6.2参数传递 知识点+练习题

C Primer 6.2参数传递 知识点练习题 指针形参使用引用拷贝Const 形参实参尽量使用常量引用数组形参数组引用形参传递多维数组向main函数传参数含有可变形参的函数练习题待更新 指针形参 void reset(int *p) {*p0;//p指向的整型对象变为0p0;//只是对形参改变p,使其为…

【Git】查看凭据管理器的账号信息,并删除账号,解决首次认证登录失败后无法重新登录的问题

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是是《代码管理工具》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的…