欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • TVM编译器原理与实践/芯科技前沿技术丛书
      • 作者:编者:吴建明//吴一昊|责编:李晓波
      • 出版社:机械工业
      • ISBN:9787111739128
      • 出版日期:2024/01/01
      • 页数:305
    • 售价:47.6
  • 内容大纲

        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.1  TVM基本原理
        1.1.1  TVM概述
        1.1.2  TVM模型优化部署概述
      1.2  TVM编译过程
        1.2.1  编译流程
        1.2.2  TVM编译数据结构
        1.2.3  TVM编译数据处理
        1.2.4  TVM的Pass过程
      1.3  TVM开源工程逻辑架构
        1.3.1  代码库代码结构
        1.3.2  代码自动内核
      1.4  TVM应用支持
        1.4.1  TVM的工作流程
        1.4.2  支持多语言与多平台
        1.4.3  TVM应用场景
        1.4.4  TVM优化模型推理
        1.4.5  TVM编译器与运行时组件
        1.4.6  TVM运行时主要模块
        1.4.7  TVM简单代码生成编译示例
        1.4.8  TVM各模块之间的关系
      1.5  TVM特色与挑战
        1.5.1  TVM特色
        1.5.2  支持多种后端设备
        1.5.3  TVM应对的挑战
    第2章  使用TVM开发
      2.1  配置TVM环境
        2.1.1  apache TVM源码下载
        2.1.2  配置TVM的开发环境
        2.1.3  TVM conda环境使用方法
        2.1.4  编译实现
        2.1.5  导入模型方法
      2.2  在conda环境编译优化TVM yolov3示例
      2.3  Python与C++的调用关系
        2.3.1  TVM中底层C++数据结构
        2.3.2  进行函数注册
        2.3.3  上层Python调用
      2.4  TVM自定义代码示例
        2.4.1  TVM如何添加代码
        2.4.2  TVM代码生成实现示例
      2.5  用TVM实现算法全流程
        2.5.1  配置张量与创建调度
        2.5.2  进行降级算子优化
        2.5.3  构建host目标程序
        2.5.4  实现后端代码生成
    第3章  算子融合与图优化
      3.1  算子概述
        3.1.1  TVM融合组件示例
        3.1.2  优化计算图
      3.2  图GCN融合

        3.2.1  图的概念
        3.2.2  深度学习新特征
      3.3  图融合GCN示例
        3.3.1  GCN的PyTorch实现
        3.3.2  融合BN与Conv层
      3.4  TVM图优化与算子融合
        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.3  TVM算子融合的4种方法
        3.5.4  数据布局转换
        3.5.5  张量表达式语言
        3.5.6  调度空间分析
      3.6  TVM图优化与算子融合方案分析
        3.6.1  图优化框架分析
        3.6.2  TVM优化基础分析
        3.6.3  TVM优化参数
        3.6.4  算子优化图示
        3.6.5  自定义图级优化
      3.7  支配树技术
        3.7.1  支配树概述
        3.7.2  算子融合方案及示例
      3.8  控制流与优化器
        3.8.1  控制流
        3.8.2  优化器
      3.9  TVM存储与调度
        3.9.1  TVM编译器优化
        3.9.2  图结构基本优化
        3.9.3  张量计算
      3.10  多功能张量加速器VTA
        3.10.1  VTA-TVM硬件-软件堆栈
        3.10.2  VTA主要功能
        3.10.3  VTA示例
        3.10.4  VTA计算模块
        3.10.5  VTA控制
        3.10.6  microTVM模型
      3.11  TVM代码库结构与示例
        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.1  TVM量化概述
        4.1.1  TVM量化现状
        4.1.2  TVM量化原理
      4.2  int8量化与TVM执行
        4.2.1  两种主要量化方案
        4.2.2  int8量化原理分析
        4.2.3  KL散度计算
        4.2.4  实现int8量化
      4.3  低精度训练与推理
      4.4  NN量化
        4.4.1  神经网络量化概述
        4.4.2  优化数据与网络
        4.4.3  前向推理与反向传播
      4.5  熵校准示例
      4.6  TVM量化流程
        4.6.1  Relay的两种并行量化
        4.6.2  Relay优化Pass方法
        4.6.3  量化处理硬件说明
        4.6.4  阈值估计方案
        4.6.5  模拟量化误差
        4.6.6  尺度计算
        4.6.7  数据类型分配
        4.6.8  数据类型分配日志
        4.6.9  神经网络低精度量化
      4.7  TVM量化程序分析
    第5章  TVM优化调度
      5.1  TVM运行时系统
        5.1.1  TVM运行时系统框架
        5.1.2  PackedFunc编译与部署
        5.1.3  构建PackedFunc模块
        5.1.4  远程部署方法
        5.1.5  TVM对象与编译器分析
      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.5  TVM张量计算分析
        5.5.1  生成张量运算
        5.5.2  嵌套并行与协作

        5.5.3  张量化计算
        5.5.4  显式内存延迟隐藏
    第6章  Relay IR
      6.1  TVM数据介绍
        6.1.1  TVM模块框架介绍
        6.1.2  Relay IR原理简介
        6.1.3  构建计算图
        6.1.4  let绑定与作用域
      6.2  IR代码生成
        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.4  TVM中IR示例
        6.4.1  IRModule技术分析
        6.4.2  TVM Runtime(运行时)分析
        6.4.3  预测部署实现
        6.4.4  动态图实现
      6.5  TVM支持CUDA架构分析
        6.5.1  CUDA架构基础理论
        6.5.2  CUDA编程模型基础理论
        6.5.3  实现向量加法实例
        6.5.4  实现矩阵乘法实例
    第7章  代码生成
      7.1  CodeGen基本原理
        7.1.1  TVM代码生成CodeGen
        7.1.2  CodeGen框架流程
        7.1.3  代码生成接口函数
        7.1.4  CodeGen的target.build接口函数
      7.2  CodeGen统一编程
        7.2.1  统一编程基础
        7.2.2  进行CodeGen分析
        7.2.3  实现CodeGen C举例
      7.3  算子的CodeGen原理与示例
        7.3.1  声明生成函数
        7.3.2  调用生成函数
        7.3.3  生成输出缓冲区
        7.3.4  更新输出缓冲区
        7.3.5  小结
      7.4  如何集成部署CodeGen
        7.4.1  将ASIC加速器部署到TVM
        7.4.2  图注释

        7.4.3  图变换
        7.4.4  运行时机制分析
      7.5  在TVM上集成部署CodeGen示例分析
      7.6  代码生成应用实践
        7.6.1  表达式编译
        7.6.2  编译IRModule方案
        7.6.3  CodeGen 原理:以 CodeGenC为例
      7.7  CodeGen调用关系项目示例分析
        7.7.1  项目代码分析
        7.7.2  内存分配分析
    第8章  后端部署与OpenCL
      8.1  OpenCL概述与开发示例
        8.1.1  异构并行编程
        8.1.2  OpenCL编程模型
      8.2  OpenCL程序启动与适配
        8.2.1  在FPGA上实现OpenCL标准的优势
        8.2.2  OpenCL与Host流程图
        8.2.3  TVM适配CUDA
      8.3  OpenCL构建编程示例分析
        8.3.1  选择OpenCL平台并创建上下文
        8.3.2  选择设备并创建命令队列
        8.3.3  构建内核程序
        8.3.4  创建内核内存对象
        8.3.5  设置内核数据并执行队列
        8.3.6  读取结果并释放OpenCL资源
      8.4  OpenCL平台编程配置与示例分析
        8.4.1  配置目标平台
        8.4.2  构建运行时流程
        8.4.3  平台编程示例
      8.5  TVM Python中的relay.build示例
        8.5.1  TVM优化model
        8.5.2  构建relay.build调用机制
      8.6  缓存、内存、线程调度
        8.6.1  并行处理
        8.6.2  参数平均模型数据并行化
        8.6.3  TVM性能评估分析
        8.6.4  远程部署感性分析
    第9章  自动调度、自动搜索与成本模型
      9.1  CPU Auto-scheduling
        9.1.1  AutoTVM与Auto-scheduling
        9.1.2  编译器自动优化
        9.1.3  AutoKernel原理分析
        9.1.4  自动调度示例
      9.2  AutoTVM用成本模型自动搜索
        9.2.1  成本模型原理
        9.2.2  AutoTVM自动搜索
      9.3  AutoTVM自动搜索示例
        9.3.1  安装依赖项并导入包
        9.3.2  定义搜索空间
        9.3.3  用成本模型进行搜索处理

    参考文献