2024三掌柜赠书活动第一期:TVM编译器原理与实践

目录

  • 前言
  • TVM编译器的实现过程
  • 关于《TVM编译器原理与实践》
  • 编辑推荐
  • 内容简介
  • 作者简介
  • 图书目录
  • 书中前言/序言
  • 《TVM编译器原理与实践》全书速览
  • 结束语

前言

随着人工智能的发展,计算机视觉、自然语言处理和语音识别等领域的需求不断增加。为了更好地满足这些需求,许多深度学习框架被开发出来,其中TVM(TVirtual Machine)是一种优秀的编译器,能够将深度学习模型编译为高效的机器码。而且TVM编译器的核心思想,就是将深度学习模型转化为高效的计算图,并优化图中的计算节点。这样一来,模型运行时的计算时间就会大大减少,同时还可以提高模型的功耗效率。TVM编译器的实现过程可以分为三个主要部分:前端、中间层和后端。

TVM编译器的实现过程

关于TVM编译器的实现过程分为三大核心内容。首先是前端部分,它负责将深度学习框架中的模型转化为抽象的计算图。在这个过程中,前端可以根据模型的结构和特性进行一些预处理操作,例如图优化和剪枝。接下来是中间层将接收前端传递过来的计算图,并进行一系列的优化操作。这些操作包括图变换、图剪枝、数据布局、内存优化等。最后是优化后的计算图将传递给后端部分,后端将根据目标硬件的特性生成高效的机器码。

TVM编译器的实践过程需要结合具体的深度学习框架和硬件平台,比如我们需要选择一个适合的深度学习框架,并在该框架中开发和训练模型。又如我们可以使用TVM提供的前端接口将模型转化为计算图,并进行一系列的优化操作。再如需要选择适合的后端,TVM支持多种硬件平台,包括CPU、GPU和FPGA等。根据目标平台的特性,我们可以使用TVM提供的后端接口生成高效的机器码,并进行性能测试和优化。

在实践中,TVM编译器具有许多优点,比如TVM可以针对特定的硬件平台进行优化,可以充分发挥硬件的计算能力;再如TVM提供了丰富的优化功能,可以对计算图进行灵活的优化操作,有效提高模型的运行效率;又如TVM还支持多种深度学习框架和编程语言,方便开发者使用,以及TVM具有较低的学习曲线,开发者可以快速上手并进行模型的编译和优化。

关于《TVM编译器原理与实践》

接下来给大家推荐一本关于深度学习必备的书籍,这是一本关于TVM编译器的原理和实际实践的书,具体信息如下所示。另外,在本文文末评论区评论“我要入门人工智能”,将选取三名幸运读者送出纸质版《TVM编译器原理与实践》一本,截止时间:2024.01.07

编辑推荐

适读人群 :从事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篇是第一作者。

图书目录

第1章 TVM基本知识/

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.5用TVM实现算法全流程/

2.5.1配置张量与创建调度/

2.5.2进行降级算子优化/

2.5.3构建host目标程序/

2.5.4实现后端代码生成/

第3章 算子融合与图优化/

3.1算子概述/

3.1.1TVM融合组件示例/

3.1.2优化计算图/

3.2图GCN融合/

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空间填充/

第4章 TVM量化技术/

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量化程序分析/

第5章 TVM优化调度/

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.3在C++中进行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编译器原理与实践》全书速览

入手《TVM编译器原理与实践》传送门:https://item.jd.com/13978563.html,个人觉得这本书非常的不错,尤其是对于人工智能领域开发者来讲,是一本不可多得的好书,值得拥有去学习。

结束语

通过本文的介绍,总的来说,TVM编译器是一种优秀的深度学习模型编译工具,可以将模型优化为高效的机器码,它的原理与实践可以帮助我们快速开发和优化深度学习模型,提高模型的运行效率和功耗效率。在未来的发展中,TVM有望成为深度学习领域的重要工具,为人工智能的发展做出更大的贡献,所以说在人工智能领域或者将要从事人工智能相关工作的小伙伴,需要抓紧时间学习了解TVM编译器了,紧跟技术发展脚步才能不被“淘汰”。

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

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

相关文章

【Web】CTFSHOW元旦水友赛部分wp

目录 ①easy_include ②easy_web ③easy_login web一共5题,我出了3题,巧的是好像师傅们也只出了3题,跨年拿旗还是很快乐的,下面直接贴出自己的wp. ①easy_include pearcmd不解释 这里主要是 ,file://协议支持以fi…

网络安全B模块(笔记详解)- 数字取证

数据分析数字取证-attack 1.使用Wireshark查看并分析Windows 7桌面下的attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户的IP地址,并将恶意用户的IP地址作为Flag(形式:[IP地址])提交; 解析:http.request.method==POST ​ Flag:[172.16.1.102] 2.继续…

SM2——适用于前后端(java+vue)公用的SM2国密加解密传输

目录 一、SM2国密加解密算法1.1、pom文件引入依赖包1.2、SM2加解密工具类1.3、测试类 一、SM2国密加解密算法 1.1、pom文件引入依赖包 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk18on</artifactId><version>…

Maple2023安装包下载及安装教程

Maple 2023下载链接&#xff1a;https://docs.qq.com/doc/DUkFJY1NkTk9mZnBM 1.选中下载好的安装包&#xff0c;鼠标右键解压到“Maple 2023”文件夹 2.选中setup-windows.exe&#xff0c;鼠标右击选择“以管理员身份运行” 3.点击“OK” 4.点击“Next” 5.选择I accept the ag…

中科驭数鄢贵海新年演讲:数字经济下的算力基础先行,DPU自主创新力量大有可为

近日&#xff0c;中科驭数创始人、CEO鄢贵海受邀在北京电视台《金融街午餐会》新年特别活动中发表新年演讲。 鄢贵海在新年演讲中提到&#xff0c;在21世纪头30年&#xff0c;我们不可思议地经历了三次重要的科技变革&#xff0c;分别是互联网的普及、移动互联网的崛起、以及人…

C++面向对象高级编程(侯捷)笔记2

侯捷C面向对象高级编程 本文是学习笔记&#xff0c;仅供个人学习使用&#xff0c;如有侵权&#xff0c;请联系删除。 如果你对C面向对象的组合、继承和委托不了解&#xff0c;对什么是拷贝构造、什么是拷贝赋值和析构不清楚&#xff0c;对类设计中的Adapter、pImpl、Template…

AJAX(一)

一、AJAX简介 AJAX全称为 Asynchronous JavaScript And XML,就是异步的JS和XML。 通过AJAX可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据 AJAX不是新的编程语言&#xff08;使用的js)&#xff0c;而是一种将现有的标准组合在一起使用的…

微信好友添加频繁的原因

01 微信好友添加频繁的原因 1. 添加好友的频率太高&#xff1a;短时间内添加多个好友&#xff0c;系统会认为账号被盗&#xff0c;从而限制用户添加好友&#xff1b; 2. 频繁的发送好友请求&#xff1a;在短时间内连续发送好友请求&#xff0c;也会导致微信限制操作&#xff0…

使用Gitea搭建自己的git远程仓库

Gitea 为什么需要自建仓库 原因只有一个&#xff1a;折腾。其实国内的码云加上github已经足够用了。 官方原话 Gitea 的首要目标是创建一个极易安装&#xff0c;运行非常快速&#xff0c;安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言&#xff0c;这使我们…

com.gexin.platform 依赖下载问题

打包时报错显示&#xff1a; com.gexin.platform:gexin-rp-sdk-http:pom:4.1.1.4 failed to transfer from http://0.0.0.0/ 解决办法&#xff1a; 1、在idea中找到maven中的设置的settings.xml 2、根据路径找到settings.xml文件&#xff0c;添加以下内容 <mirror><…

遇到无序多变请求怎么办,可以试试责任链模式

责任链模式&#xff08;Chain Of Responsibility Design Pattern&#xff09;&#xff0c;也叫做职责链&#xff0c;是将请求的发送和接收解耦&#xff0c;让多个接收对象都有机会处理这个请求。当有请求发生时&#xff0c;可将请求沿着这条链传递&#xff0c;直到有对象处理它…

UDP通信(服务器-客户端)

一、 UDP服务器-客户端通信 UDP&#xff08;User Datagram Protocol&#xff09;是一种面向无连接的传输层协议&#xff0c;它提供了一种简单的、不可靠的数据传输服务。与TCP&#xff08;Transmission Control Protocol&#xff09;不同&#xff0c;UDP不建立连接&#xff0c;…

基于Kettle开发的web版数据集成开源工具(data-integration)-部署篇

目录 &#x1f4da;第一章 前言&#x1f4d7;背景&#x1f4d7;目的&#x1f4d7;总体方向 &#x1f4da;第二章 下载编译&#x1f4d7;下载&#x1f4d7;编译 &#x1f4da;第三章 部署&#x1f4d7;准备工作&#x1f4d5; 安装数据库&redis&consul&#x1f4d5; 修改…

计算机毕业设计-------基于JSP+Servlet的毕业生离校管理系统

需求分析 使用JSPServletMysql技术设计一个毕业生离校管理系统, 整个系统采用BS架构, 为高校方便进行毕业生离校流程进行统一的离校流程, 极大的减少了大量学生同时离校的过程中杂乱的情况, 整个系统分为学生, 教务处, 辅导员, 图书馆, 宿管, 财务处, 系办公室, 管理员登等角色…

【华为机试】2023年真题B卷(python)-考古问题

一、题目 题目描述&#xff1a; 考古问题&#xff0c;假设以前的石碑被打碎成了很多块&#xff0c;每块上面都有一个或若干个字符&#xff0c;请你写个程序来把之前石碑上文字可能的组合全部写出来&#xff0c;按升序进行排列。 二、输入输出 三、示例 示例1: 输入输出示例仅供…

了解Apache 配置与应用

本章内容 理解 Apache 连接保持 掌握 Apache 的访问控制 掌握 Apache 日志管理的方法 Apache HTTP Server 之所以受到众多企业的青睐&#xff0c;得益于其代码开源、跨平台、功能 模块化、可灵活定制等诸多优点&#xff0c;不仅性能稳定&#xff0c;在安全性方面的表现也十分…

【设计模式-2】原型模式的原理、代码实现及类图展示

我们一定对类的实例化比较熟悉&#xff0c;前面我们说的单例、还有3种工厂模式都是通过new关键字来创建对象&#xff0c;下面我们来了解一种新的对象创建的方式。 1. 定义 原型模式也是一种创建型的设计模式&#xff0c;实现和原理总体比较简单&#xff0c;一句话总结呢&#…

Weblogic安全漫谈(二)

前言 继本系列上篇从CVE-2015-4852入手了解T3协议的构造后&#xff0c;本篇继续分析开启T3反序列化魔盒后的修复与绕过。 Weblogic对于10.3.6推出了p20780171和p22248372用于修复CVE-2015-4852&#xff0c;在补丁详情中又提示了p21984589是它的超集&#xff0c;所以可以直接装…

通过软盘拷贝文件 - 华为OD统一考试

OD统一考试(B卷) 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 有一名科学家想要从一台古董电脑中拷贝文件到自己的电脑中加以研究但此电脑除了有一个3.5寸软盘驱动器以外&#xff0c;没有任何手段可以将文件持贝出来&#xff0c;而且只有一张软盘可以…

MySQL将多条数据合并成一条的完整示例

数据库中存的是多条数据&#xff0c;展示的时候需要合并成一条 数据表存储形式如下图 以type分组&#xff0c;type相同的算一条&#xff0c;且保留image和link的所有数据&#xff0c;用groupBy只保留一条数据 解决方案&#xff1a;用GROUP_CONCAT 完整语法如下 group_concat…