描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302534525
本书是华为公司官方出品!华为轮值董事长徐直军、中国工程院院士高文、中国科学院院士毛军发作序!揭开达芬奇架构AI处理器的神秘面纱、掌握强大算力的使用方法!昇腾Ascend AI处理器是业界领先的人工智能运算芯片,可以应用于未来的各类人工智能场景。本书由上海交大梁晓峣教授执笔,华为公司一线技术支持,并提供了大量可以运行的算例。本书可以作为广大AI工程师的参考用书,也可以作为高等学校人工智能、计算机等专业“微处理器/微控制器/人工智能芯片”等相关课程教材。
视频公开课: 爱课程或中国大学MOOC(慕课) “现代科学运算——MATLAB语言与应用”“控制系统仿真与CAD”(非严格配套本书视频,仅供读者参考)。
配书源代码: 配书源代码可以到清华大学出版社网站本书页面下载。
薛定宇大讲堂系列图书将陆续出版:
薛定宇教授大讲堂(卷Ⅰ):MATLAB程序设计
薛定宇教授大讲堂(卷Ⅱ):MATLAB微积分运算
薛定宇教授大讲堂(卷Ⅲ):MATLAB线性代数运算
薛定宇教授大讲堂(卷Ⅳ):MATLAB*化计算
薛定宇教授大讲堂(卷Ⅴ):MATLAB微分方程求解
薛定宇教授大讲堂(卷Ⅵ):MATLAB/Simulink仿真
本书系统论述了基本达芬奇架构的昇腾(Asccnd)AI处理器的原理、架构与开发技术。全书共分6章,内容涵盖了神经网络理论基础、计算芯片与开源框架、昇腾AI处理器软硬件架构、编程理论与方法,以及典型案例等。为便于读者学习,书中还给出了基本昇腾AI处理器的丰富的技术文档、开发实例等线上资源。
本书可以作为普通高等学校人工智能、智能科学与技术、计算机科学与技术、电子信息工程、自动化等专业的本科生及研究生教材,也适合作为从事人工智能系统设计的科研和工程技术人员的参考用书。
CONTENTS
目录
第1章基础理论00
1.1人工智能简史00
1.2深度学习概论00
1.3神经网络理论0
1.3.1神经元模型0
1.3.2感知机0
1.3.3多层感知机0
1.3.4卷积神经网络0
1.3.5应用示例0
第2章行业背景0
2.1神经网络芯片现状0
2.1.1CPU0
2.1.2GPU0
2.1.3TPU0
2.1.4FPGA0
2.1.5昇腾AI处理器0
2.2神经网络芯片加速理论0
2.2.1GPU加速理论0
2.2.2TPU加速理论0
2.3深度学习框架0
2.3.1MindSpore0
2.3.2Caffe0
2.3.3TensorFlow0
2.3.4PyTorch0
2.4深度学习编译框架——TVM0
第3章硬件架构0
3.1昇腾AI处理器总览0
3.2达芬奇架构0
3.2.1计算单元0
3.2.2存储系统0
3.2.3控制单元0
3.2.4指令集设计0
3.3卷积加速原理0
3.3.1卷积加速0
3.3.2架构对比0
第4章软件架构0
4.1昇腾AI软件栈总览0
4.2神经网络软件流
4.2.1流程编排器
4.2.2数字视觉预处理模块
4.2.3张量加速引擎(TBE)
4.2.4运行管理器
4.2.5任务调度器
4.2.6框架管理器
4.2.7神经网络软件流应用
4.3开发工具链
4.3.1功能简介
4.3.2功能框架
4.3.3工具功能
第5章编程方法
5.1深度学习开发基础
5.1.1深度学习编程理论
5.1.2深度学习推理优化原理
5.1.3深度学习推理引擎
5.2昇腾AI软件栈中的技术
5.2.1模型生成阶段
5.2.2应用编译与部署阶段
5.3自定义算子开发
5.3.1开发步骤
5.3.2AI CPU算子开发
5.3.3AI Core算子开发
5.4自定义应用开发
第6章实战案例
6.1评价标准
6.1.1精度
6.1.2交并比
6.1.3均值平均精度
6.1.4吞吐量和时延
6.1.5能效比
6.2图像识别
6.2.1数据集:ImageNet
6.2.2算法:ResNet
6.2.3模型迁移实践
6.3目标检测
6.3.1数据集:COCO
6.3.2算法:YoloV3
6.3.3自定义算子实践
附录A缩略词列表
附录BAscend开发者社区及资料下载
附录C智能开发平台ModelArts简介
PREFACE
前言
日出东方,其道大光;鲲鹏展翅,旭日昇腾!
一款芯片的研发,是一个漫长的过程;一款芯片的研发,也许就是一代人的心路历程。
随着深度学习在人工智能诸多领域的异军突起,从CPU到GPU,再到各类专属领域的定制芯片,我们迎来了计算机体系结构的黄金时代!然而一款处理器芯片的研发周期,少则数年,多则数十年。在滚滚向前的时代大潮中,只有那一批最耐得住寂寞,经得起诱惑的匠人,才能打造出计算机行业皇冠上最闪亮的明珠。
所以,当华为邀请我为昇腾AI处理器写一本教材时,我毫不犹豫地答应了。也许是出于对硬科技公司的高度认同,也许是出于对同道中人的由衷尊敬,更可能是出于一种骨子里的使命感,我深深地觉得我们这个时代太需要一颗代表国内科技最高水平的中国“芯”了!
华为推出面向人工智能计算场景的昇腾AI处理器,是希望通过更强的算力、更低的功耗,为深度学习的各类应用场景铺平道路。但是“千里之行,始于足下”,昇腾的使命任重道远。对于一款高端处理器来说,生态圈的培养和用户编程习惯的养成可谓重中之重,也是决定该款产品生死存亡的关键。编写本书的目的就是第一次向世人揭开昇腾AI处理器的神秘面纱,探索其内在的设计理念,从软硬件两方面阐述其架构特点,教会读者上手使用昇腾系列开发平台。“不积跬步,无以至千里”,如果把打造昇腾生态圈当作千里之行,那么本书便是尝试迈出的第一步。
本书定位人工智能芯片领域选修教材,面向工程科技类普通读者,尽可能删减繁杂抽象的公式、定理和理论推导。读者除需要具备基本的数学知识和编程能力外,无须预修任何课程。本书特别理想的受众是人工智能、计算机科学、电子工程、生物医药、物理、化学、金融统计等领域需要用到大规模深度学习计算的研发人员; 本书也为AI处理器的设计公司和开发者提供了有价值的参考。
本书共分6章,内容涵盖了神经网络理论基础、计算芯片与开源框架、昇腾AI处理器软硬件架构、编程理论与方法,以及典型案例等,希望能够从理论到实践,帮助读者了解昇腾AI处理器所使用的达芬奇架构,并掌握其具体的编程和使用方法,助力读者打造属于自己的人工智能应用。
空谈误国,实干兴邦。愿与诸位读者共勉。
感谢江子山和李兴对本书撰写工作做出的极大贡献,他们在资料整理与文字编排上注入了极大精力,并且编写和校对了本书中所有的程序示例代码。如果没有他们的全心投入,本书将很难顺利完成。
感谢陈子渊等对本书中的插图进行精心编辑和修改,使得本书的内容更加清晰形象、概念的解释更加具体明确。
感谢华为公司在本书写作过程中提供的资源和支持。
感谢清华大学出版社盛东亮老师和钟志芳老师等的大力支持,他们认真细致的工作保证了本书的质量。
由于编者水平有限,书中难免有疏漏和不足之处,恳请读者批评指正!
作者
2019年8月
专家评论
以人工智能技术为代表的第四次工业革命已经到来,正在使能行业的智能化升级。算力、算法、数据是人工智能的关键要素,其中算力是人工智能发展的动力和引擎。本书较全面地介绍了人工智能与深度学习的基础理论、昇腾AI处理器的体系架构、CANN应用编程方式及工程应用案列,对从事人工智能的科学研究人员和工程技术人员,均具有较高的参考价值
——张迪煊 华为智能计算Atlas领域总经理
新一代人工智能的成功应用,离不开强大的算力支持。早期研究者使用显卡中的图形处理器来实现密集的神经网络计算,后来逐渐有厂商推出了专用芯片,但仍然无法满足人工智能迅猛发展的需求,这些芯片同时也存在能耗高、计算效率低等诸多问题。此次华为公司*推出的昇腾AI处理器,是目前*的AI芯片,为人工智能技术的发展带来了更强有力的支持。本书面向具备基本数学知识和编程能力的普通读者,从人工智能与神经网络理论、AI芯片原理等基础知识入手,详细介绍了昇腾AI处理器的设计、软件与硬件构架、算子开发以及面向深度学习的编程理论和方法,并给出了图像识别和目标检测等实战案例,非常适合读者学习和掌握昇腾AI处理器的编程方法,对从事相关领域研究和开发的工程技术人员也具有极高的参考价值。
——刘群 华为诺亚方舟实验室语音语义首席科学家
人工智能是一个复杂的系统工程,涉及体系架构、芯片、软件、算法、框架、模型、应用等多个技术领域。如同华为的昇腾AI处理器全栈体系一样,本书把这些相关技术领域有机、有效、有趣地融合在一起,既有深度又有广度,完成了另一个全栈式系统工程。作为一直专注于智能系统技术的从业者,我强烈推荐包括我的同事在内的对智能系统有兴趣、有需求、有追求的人士阅读本书。不只是为了解AI历史、学习AI理论、理解昇腾AI处理器架构、使用昇腾AI处理器平台、开发AI场景应用,更是从中体会其背后的专业、专注和知难而上的华为精神。空谈误国,实干兴邦,愿我们一起创造丰富多彩的智能世界!
——邹鹏程 中科创达软件股份有限公司CTO
近年来,AI的高速发展不仅仅得益于算法和模型的开发,*重要的是计算机算力的突飞猛进。GPU、FPGA和TPU 都为AI的发展提供了更高的算力。尤其是2018年10月,华为发布了自主研发的全新昇腾AI处理器,打破了其他人工智能专用芯片的局限性,强化了计算的灵活度,同时支持多种类混合精度计算, 大大减少了训练和推论的时间,在业界一鸣惊人。 本书揭开了昇腾AI处理器的神秘面纱,由浅入深地介绍了昇腾 AI处理器的架构和编程方法, 并辅以详尽的图像识别和目标检测案例, 是一本不可多得的人工智能处理器科研和教学参考书。
——陈雷 香港科技大学教授/ACM中国香港计算机学会主席
内 容 简 介
本书系统论述了基于达芬奇架构的昇腾(Ascend)AI处理器的原理、架构与开发技术。全书共分6章,内容涵盖了神经网络理论基础、计算芯片与开源框架、昇腾AI处理器软硬件架构、编程理论与方法,以及典型案例等。为便于读者学习,书中还给出了基于昇腾AI处理器的丰富的技术文档、开发实例等线上资源。
本书可以作为普通高等学校人工智能、智能科学与技术、计算机科学与技术、电子信息工程、自动化等专业的本科生及研究生教材,也适合作为从事人工智能系统设计的科研和工程技术人员的参考用书。
本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
版权所有,侵权必究。侵权举报电话: 0106278298913701121933
图书在版编目(CIP)数据
昇腾AI处理器架构与编程: 深入理解CANN技术原理及应用/梁晓峣编著.—北京: 清华大学出版社,2019
(华为智能计算技术丛书)
ISBN 9787302534525
Ⅰ. ①昇…Ⅱ. ①梁…Ⅲ. ①移动终端-应用程序-程序设计Ⅳ. ①TN929.53
中国版本图书馆CIP数据核字(2019)第162823号
责任编辑: 盛东亮
封面设计: 吴刚
版式设计:
装帧设计:
责任校对: 李建庄
责任印制: 杨艳
出版发行: 清华大学出版社
网址: http://www.tup.com.cn, http://www.wqbook.com
地址: 北京清华大学学研大厦A座
邮编: 100084
社总机: 01062770175邮购: 01062786544
投稿与读者服务: 01062776969, c[email protected]
质量反馈: 01062772015, [email protected]
课件下载: http://www.tup.com.cn,01062795954
印装者: 三河市龙大印装有限公司
经销: 全国新华书店
开本: 186mm×240mm印张: 18插页: 字数: 330千字
附光盘1张
版次: 2019年10月第1版印次: 2019年10月第1次印刷
印数: 1~000
定价: 69.00元
产品编号: 08531201
FOREWORD
序一昇腾加速普惠AI
AI(人工智能)作为一种新的通用技术,正在推动各行各业发生前所未有的改变。AI不仅使我们能以更高的效率解决已可解决的问题,而且也使我们可以解决很多以前难以解决的问题,这其中的关键就是算力。近年来,随着深度学习的推进,AI领域对算力的需求每年增加10倍左右。对于AI探索研究,越来越多的新算法(如自动机器学习)、新探索(如高阶自动微分)等对算力的需求甚至成百倍增长,算力与论文的发表速度及数量均已呈正比关系; 对于AI商业应用,充沛且经济的算力是AI发挥价值的基本条件,算力的性价比越高,AI的应用就会越广泛。AI全面发展需要的算力,应该如同今天的电力一样,真正普惠,触手可及。
如果说算力的进步是当下AI发展的主要驱动因素,那么算力的稀缺和昂贵正成为AI全面发展的核心制约因素。算力供给的关键在于处理器的效能,当前AI算力需求的增速远超摩尔定律,而现有的AI处理器的体系结构并非围绕AI计算来设计的,这就导致了AI算力的稀缺与昂贵; 以现有的算力水平,训练某些复杂模型往往需要数天甚至数月的时间,而一次成功的发现与创新往往需要多次反复迭代,这种算力水平严重制约了理论的创新和应用的落地。因此,充沛且经济的AI算力必须要在处理器架构上寻求突破,要用新的AI处理器架构来匹配算力的增速。
为了实现普惠AI,为了提供充足的AI算力,华为图灵团队自2017年初开始探索新的AI处理器体系结构,并创建了达芬奇架构AI处理器。2017年6月,我到上海时,华为图灵团队非常期望公司投资基于达芬奇架构开发AI处理器,我支持了他们,就有了今天的昇腾AI处理器——能满足当前及未来AI对算力的极致需求。华为还围绕昇腾处理器构建了全栈、全场景的AI解决方案。本书系统地介绍了昇腾处理器体系结构与编程方法,希望在AI的基础研究与编程领域,给AI研究与应用开发者提供参考,共同推进AI产业和AI研究的发展。
徐直军
华为投资控股有限公司副董事长、轮值董事长
2019年8月
FOREWORD
序二
近十年,全球人工智能热潮一浪高过一浪,专用人工智能从算法到系统,再到应用、风险投资,*后得到社会的普遍关注,其势头之猛,规模之大,是很多人始料未及的。中国和美国现在已经成为人工智能发展的两个超级大国。中国在数据规模和产业应用、青年人才储备方面具有优势; 美国在原创算法与核心元器件、开源开放平台方面具有优势。如何尽快补上短板,使我国的人工智能可以健康发展、长久不衰,是我们需要认真思考与布局的大事。
新一代人工智能的蓬勃发展依赖于三个要素——数据、算法和算力。所谓算力,就是超强的计算能力。目前,人工智能系统的算力大都构建在CPU GPU之上,计算的主体是GPU。GPU原本是为图形处理与显示而设计的,大多用在显卡上。随着时间的推移,GPU处理向量、处理矩阵,甚至处理张量的能力越来越强。除了显卡,高档GPU也经常被用作图像处理与科学计算的协处理器。英伟达公司就是因为提供高档GPU而在几年间成为(协)处理器市场上成长*快的公司。虽然用GPU进行深度神经网络的训练和推理速度很快,但由于GPU需要支持的计算类型繁多,所以芯片规模大、功耗高。为了提高深度神经网络训练和推理的效率,几年前人们就开始考虑设计专用深度神经网络学习和推理的芯片。例如,谷歌和寒武纪公司均推出了深度学习专用芯片,大大提升了运行主流智能算法的性能。华为发布的昇腾910和昇腾310两颗人工智能芯片分别面向深度神经网络训练与推理,其设计理念更有利于打造完整的生态链,可以为中国乃至全球开发者和企业提供新的选择。
当然,一个专用处理器家族从完成设计,到得到市场认可并获得成功应用是一个漫长的过程。这个过程包含诸多环节,其中*重要的一个环节就是教育,包括培训用户理解芯片原理、掌握如何编程、学会如何设计板卡和设计系统等。教育的手段既可以是通过开设课程给工程师、本科生与专科生提供培训,也可以是通过编程比赛甚至创业比赛的形式获得众人的关注,还可以是通过开源平台提供丰富的编程案例给潜在用户提供参考。
总而言之,为教育界提供一本满足上述需求的教材是必不可少的。我很高兴,作者能在昇腾AI处理器面世的短短时间内就完成了这样一本教材,可以帮助人工智能专业的研究生、本科生和从事人工智能领域工作的工程师,让他们能够理解昇腾处理器基本概念,掌握使用昇腾处理器的方法,找到大部分相关问题的解决方案。
希望本书能够帮助读者了解专用人工智能,帮助读者进入华为人工智能生态,进入中国人工智能生态,进入未来智能时代。
高文
中国工程院院士
2019年8月
昇腾AI处理器架构与编程——深入理解CANN技术原理及应用
序言
FOREWORD
序三
人工智能正在赋能各行各业,人工智能芯片是实现人工智能的物理载体,华为的昇腾AI处理器则是重要的人工智能芯片之一。《昇腾AI处理器架构与编程——深入理解CANN技术原理及应用》*次向外界全面介绍了华为昇腾AI处理器,特别是翔实地介绍了其设计理念、体系结构与CANN编程方法,包括TBE算子编程、调度及CUBE矩阵运算单元等,这些都是华为的原创成果。本书能够让读者快速了解昇腾AI处理器的软硬件架构和基本编程方法,帮助读者在该芯片上进行编程实践,适合用作高年级本科生或研究生学习人工智能芯片的教材。对于希望在人工智能和并行编程领域有所建树的研发人员,本书也是一部很好的参考书。
毛军发
中国工程院院士
2019年8月
第5章
编程方法
随着深度学习的蓬勃发展,从学术界的Caffe、Torch,到产业界谷歌公司主推的TensorFlow,脸书公司的PyTorch Caffe2等,各种各样的深度学习框架相继被提出。层出不穷的深度学习框架为开发者提供了完整、高效、便利的模型开发、训练、管理和部署的平台。同时,深度学习领域对于高性能推理的需求也促使了TensorFlow XLA、TVM、TensorRT等推理引擎的出现。这些推理引擎引入了多种优化方法,使得深度学习模型的推理性能相比深度学习框架提升很多,更适合具体的应用部署。
在这种大环境下,华为针对其昇腾AI处理器的计算架构专门构建了完整的软件栈,旨在兼容各个深度学习框架并能够高效运行在昇腾AI处理器上,让开发者能够快速开发推理应用,为开发者提供便利的解决方案。
本章内容主要以昇腾AI处理器编程为主,但是在介绍具体的编程流程和编程实践之前,也非常有必要对深度学习开发的编程思想以及深度学习推理引擎的原理做详细介绍。理解这些内容后,昇腾AI处理器的软件栈将不再是无法打开的黑盒,读者也能更好地理解并进行相关编程。
5.1深度学习开发基础
5.1.1深度学习编程理论
深度学习开发的编程风格与传统的Python开发有很大区别,其中涉及声明式编程、元编程、特定域语言等编程概念。另外,对于昇腾AI软件栈而言,其输入往往是主流深度学习框架各自定义的模型文件。了解这些模型文件如何生成以及保存的内容,对于进行昇腾AI处理器编程非常重要。
1. 声明式编程和命令式编程
声明式编程(Declarative Programming),又称作符号式编程(Symbolic Programming),与之相对应的便是命令式编程(Imperative Programming)。其中,前者只需要对运算进行定义,在运行的时候再显性或者隐性地进行编译,转换为实际的底层内核函数调用,这样便能将计算图的定义步骤和实际的编译运行步骤分隔开来。相较而言,后者中的每一行代码在被执行时,相应的计算都会立即执行。
昇腾AI处理器架构与编程——深入理解CANN技术原理及应用
第5章编程方法
代码51所示的Python代码便采用了命令式编程风格,其用NumPyNumpy的使用可以参见https://www.numpy.org/。库实现了向量乘法和加法。当程序执行到任意一行时,便会立即执行相应的操作。以c=a*b为例,程序执行到这一行时,计算机便立即执行对应的向量乘法运算,并得到结果c。此时,如果使用print函数便能够打印出具体的结果。
import numpy as np
# Start computing
a = np.ones(10)
b = np.ones(10)
c = a * b
d = c 1
print(d)
代码51命令式编程风格的Python代码(NumPy API)
实现同样的向量乘法和向量加法运算,代码52所示的TensorFlow代码则是声明式编程风格。当应用程序执行到C = tf.multiply(A, B, ‘Mult’)这行代码时,计算机并没有进行相应的计算,而是在内存中构建了相应的计算图结构。此时,如果使用print函数进行打印,则会得到数据对象信息,而没有实际的计算结果,因为此时还没有进行计算,直到最后sess.run()这一行代码时,实际的计算才开始执行,得到相应的输出结果。
import numpy as np
import tensorflow as tf
# 定义计算图
A = tf.placeholder(tf.int32, 10, ‘A’)
B = tf.placeholder(tf.int32, 10, ‘B’)
C = tf.multiply(A, B, ‘Mult’)
D = tf.add(C, tf.constant(1, tf.int32), ‘Add’)
# 运行计算图
with tf.Session() as sess:
print(sess.run(D, feed_dict={A: np.ones(10), B: np.ones(10)}))
评论
还没有评论。