当前,新一轮科技革命和产业变革方兴未艾,人工智能已逐渐发展成为带动技术创新、推动产业升级的通用技术。为应对人工智能所带来的市场需求,主流IT厂商如谷歌、苹果、亚马逊、腾讯、百度、阿里等纷纷投入巨资自研AI芯片,AI芯片创业公司也不断刷新融资纪录,AI芯片设计和开发已俨然成为IT产业界的显学。
AI应用和模型在AI芯片上运行离不开编译器的支持。面对AI芯片产业的快速扩张,芯片技术人才供不应求,编译器人才同样严重匮乏,如何改善编译器人才紧缺的局面成为急需解决的难题。编译技术是一门不断发展的技术,特别是针对新兴的AI应用,编译器开发目标和方法出现了新的变化。AI编译器一方面要实现AI应用到芯片的自动化部署,另一方面要通过优化算法与芯片架构间的适配关系,协助提升AI应用的执行效率。市面上现有的编译器类书籍大多偏重经典理论和原理的阐述,这类书籍对于AI编译器初学者建立编译器相关基本概念当然是有帮助的,但因其滞后于AI芯片的发展形势,在为AI编译器开发提供可行的解决方案和指导建议方面力有不逮。因此,业界亟须一本完整介绍AI编译器开发的入门指导书籍,引导初学者由基本的编译器知识入手,逐步掌握AI编译器开发的基本过程。本书综合了各种现有的AI编译器设计理论和实践成果,旨在帮助初学者快速建立AI编译器开发领域知识图谱,理解AI编译器开发的各种关键技术,并为AI编译器实际开发过程中出现的问题提供有价值的指导和参考意见。
本书共分为7章,各章安排如下。
第1章从多个角度对现有AI编译器进行分类,总结了AI编译器通常采用的设计结构和特征,并介绍了AI编译器的产品设计和差异,以及GPGPU编译器基本组成。
第2章以TVM、TensorFlow XLA和Glow三种AI编译器为例,详细介绍了AI编译器的基本架构设计和实现方法。
第3章专注于以TVM为代表的开源AI编译器的实现分析及其定制化开发方法介绍。
第4章将GPGPU编译器后端设计方法作为AI编译器的重要补充加以阐述,重点分析了GPGPU编译器后端重要的三个组成部分:指令选择、指令调度和寄存器分配。
第5章针对引人注目的GPGPU张量核专用处理模块,从张量核设计原理、编程方法和编译器支持角度对其做了系统论述。
第6章在分析模型性能衡量方法和影响因素的基础上,介绍了LLVM AMDGPU和TVM开源项目中的性能相关优化方法。
第7章介绍了对AI编译器设计有重要影响的软硬件接口设计方法,着重介绍了AI编译器与AI加速器硬件相关的接口设计和面向硬件的模型量化方法。
本书从开发实战的角度出发,将抽象的编译器概念,以源代码、结构框图、流程图等方式形象地表述,辅以开源项目中的源代码分析,尽量避免烦琐的公式推导,使读者能通过实际例子对AI编译器的开发有更直观的认识,将AI编译器原理与实践紧密结合起来,提高开发者解决实际问题的能力。本书适合AI编译器开发工程师、AI芯片架构师、AI芯片设计工程师、算法优化工程师、高等院校相关专业的本科生和研究生,以及其他对AI编译器感兴趣的人员阅读学习。
AI芯片和编译技术的发展日新月异,由于篇幅限制,书中仅阐述了当前主要和主流的AI编译器相关技术,一些对AI编译器有重要影响的技术,如MLIR、多面体模型等,书中未能充分论述。读者若对更深入和专门的议题感兴趣,可参考本书参考文献中提供的相关论文和网址。本书中涉及的TVM、LLVM、NVDLA等开源项目源代码可从https://github.com/apache/tvm、https://github.com/llvm/llvmproject和https://github.com/nvdla获得。
本书重点、难点部分配有二维码视频,读者可以扫码观看,本书附带配套免费资源可扫描封底二维码获取,或从以下Github链接获得https://github.com/frankwang0818/AI_compiler_development_guide。
囿于个人经验,书中难免有不准确甚至错误之处,欢迎读者批评斧正。
感谢机械工业出版社策划编辑李培培,从选题到定稿再到本书的出版,她都提供了非常专业的指导和帮助。
感谢我的家人的照顾和支持,让我有时间和精力在工作之余完成本书的写作任务。