diff --git a/01Introduction/01present.md b/01Introduction/01present.md
index 411f8533..3c2624de 100644
--- a/01Introduction/01present.md
+++ b/01Introduction/01present.md
@@ -50,11 +50,11 @@
随着深度学习技术的快速发展,智能音频处理作为其中的一个重要应用领域,利用深度学习技术可以实现音频信号的分析、识别和合成等任务。深度学习技术在智能音频处理中的应用与创新为音频信号的分析、识别和合成等任务提供了强大的工具和方法。通过深度学习技术,可以实现音频信号的自动处理和优化,提高音频处理的效率和准确性。未来,我们可以进一步研究和探索深度学习技术在智能音频处理中的新应用和创新,以满足不断增长的音频处理需求。
-- 音频信号分析:深度学习技术可以用于音频信号的分析,如音频分类、音频分割和音频降噪等。通过训练深度神经网络模型,可以提取音频信号的特征,并对音频进行分类或分割。此外,深度学习技术还可以应用于音频降噪,通过学习噪声模型和信号模型,实现对噪声的自动去除。
+- 音频信号分析:深度学习技术可以用于音频信号的分析,如音频分类、音频分割和音频降噪等。通过训练神经网络模型,可以提取音频信号的特征,并对音频进行分类或分割。此外,深度学习技术还可以应用于音频降噪,通过学习噪声模型和信号模型,实现对噪声的自动去除。
-- 语音识别:深度学习技术在语音识别领域取得了重大突破。通过使用深度神经网络模型,可以将语音信号转化为文本信息。神经网络模型可以自动学习语音信号的特征,并通过大规模的训练数据提高识别准确率。语音识别技术的应用包括语音助手、语音翻译和语音控制等。
+- 语音识别:深度学习技术在语音识别领域取得了重大突破。通过使用神经网络模型,可以将语音信号转化为文本信息。神经网络模型可以自动学习语音信号的特征,并通过大规模的训练数据提高识别准确率。语音识别技术的应用包括语音助手、语音翻译和语音控制等。
-- 音频合成:深度学习技术可以用于音频合成,如语音合成和音乐合成等。通过训练深度神经网络模型,可以生成逼真的语音合成结果。此外,深度学习技术还可以用于音乐合成,通过学习音乐的模式和结构,生成新的音乐作品。
+- 音频合成:深度学习技术可以用于音频合成,如语音合成和音乐合成等。通过训练神经网络模型,可以生成逼真的语音合成结果。此外,深度学习技术还可以用于音乐合成,通过学习音乐的模式和结构,生成新的音乐作品。
- 端到端的音频处理:传统的音频处理方法通常需要多个步骤和模块,而深度学习技术可以实现端到端的音频处理。通过训练端到端的神经网络模型,可以直接从原始音频信号中提取特征并完成音频处理任务,简化了处理流程并提高了效率。
@@ -127,13 +127,13 @@
### 突破驱动繁荣期(约 2010s)
-2011 年 8 月,微软研究院 Frank Seide, Gang Li, Dong Yu 在 Interspeech 的论文 " Conversational speech transcription using context-dependent deep neural networks."[[12]] 首次介绍了如何通过深度神经网络模型在会话语音转录(Conversational Speech Transcription)上实现突破性进展。文章介绍了模型的的设计和实验结果,“其在单通道非特定人识别(Single-pass Speaker-independent Recognition)基准测试上将相对错误率由 27.4% 降低到 18.5% ,相对错误率降低 33%,在其他 4 类任务中相对错误率降低 22–28%。
+2011 年 8 月,微软研究院 Frank Seide, Gang Li, Dong Yu 在 Interspeech 的论文 " Conversational speech transcription using context-dependent deep neural networks."[[12]] 首次介绍了如何通过神经网络模型在会话语音转录(Conversational Speech Transcription)上实现突破性进展。文章介绍了模型的的设计和实验结果,“其在单通道非特定人识别(Single-pass Speaker-independent Recognition)基准测试上将相对错误率由 27.4% 降低到 18.5% ,相对错误率降低 33%,在其他 4 类任务中相对错误率降低 22–28%。
-此深度神经网络的训练任务是通过分布式系统(其设计了适合当前作业的张量切片与放置以及通信协调策略以加速训练)部署在多台配置有英伟达 Tesla GPGPU 服务器,通过几百小时的分布式训练才得以完成。论文在最后致谢中提到 “Our special thanks go to Ajith Jayamohan and Igor Kouzminykh of the MSR Extreme Computing Group for access to a Tesla server farm, without which this work would not have been possible.”,由此看到在 AI 领域算法团队与系统团队协作已经由来已久,算法与系统的协同设计将以往不可能完成的计算任务变为了可能,上层应用负载需求驱动系统发展与演化,系统支撑上层应用负载取得新的突破。
+此神经网络的训练任务是通过分布式系统(其设计了适合当前作业的张量切片与放置以及通信协调策略以加速训练)部署在多台配置有英伟达 Tesla GPGPU 服务器,通过几百小时的分布式训练才得以完成。论文在最后致谢中提到 “Our special thanks go to Ajith Jayamohan and Igor Kouzminykh of the MSR Extreme Computing Group for access to a Tesla server farm, without which this work would not have been possible.”,由此看到在 AI 领域算法团队与系统团队协作已经由来已久,算法与系统的协同设计将以往不可能完成的计算任务变为了可能,上层应用负载需求驱动系统发展与演化,系统支撑上层应用负载取得新的突破。
2012 年 1 月,谷歌的神经网络从 1000 万张 YouTube 视频的静止画面中学会了[识别猫](https://www.nytimes.com/2012/06/26/technology/in-a-big-network-of-computers-evidence-of-machine-learning.html)。谷歌的科学家通过连接 16,000 个计算机处理器创建了最大的机器学习神经网络之一,他们在互联网上将这些处理器松散开来自行学习,正是大规模系统互联更大的算力支撑了当时相比以往更大的数据和模型的训练。此工作 “[Building high-level features using large scale unsupervised learning](https://dl.acm.org/doi/10.5555/3042573.3042641)” [[13]] 发表在 ICML '12 会议上。
-2012 年 9 月,Alex Krizhevsky,Ilya Sutskever 和 Geoffrey Hinton,团队通过设计 [AlexNet](https://papers.nips.cc/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html)[[14]] 赢得 ImageNet 竞赛,深度神经网络开始再次流行。首次采用 ReLU 激活函数,扩展了 LeNet5 结构,添加 Dropout 层减小过拟合,LRN 层增强泛化能力/减小过拟合。这些新的模型结构和训练方法影响着后续的模型设计和系统优化,例如:激活函数和卷积层的内核融合计算等。其花费 5 到 6 天,采用 2 块英伟达 GTX 580 3GB GPUs 对计算进行加速,进而形成 AI 系统以 GPU 等加速器为主要计算单元的架构。
+2012 年 9 月,Alex Krizhevsky,Ilya Sutskever 和 Geoffrey Hinton,团队通过设计 [AlexNet](https://papers.nips.cc/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html)[[14]] 赢得 ImageNet 竞赛,神经网络开始再次流行。首次采用 ReLU 激活函数,扩展了 LeNet5 结构,添加 Dropout 层减小过拟合,LRN 层增强泛化能力/减小过拟合。这些新的模型结构和训练方法影响着后续的模型设计和系统优化,例如:激活函数和卷积层的内核融合计算等。其花费 5 到 6 天,采用 2 块英伟达 GTX 580 3GB GPUs 对计算进行加速,进而形成 AI 系统以 GPU 等加速器为主要计算单元的架构。
![](images/01Present09.png)
@@ -147,7 +147,7 @@
### 大模型带来新机遇(约 2020s)
-随着神经网络模型结构向更深的网络结构,更多的参数演进,出现了各种基于预训练模型进行参数微调的特大参数模型。2021 年 8 月份,著名人工智能教授李飞飞和 100 多位学者联名发表一份 200 多页的研究报告《[On the Opportunities and Risk of Foundation Models](https://arxiv.org/pdf/2108.07258)》,深度地综述了当前大规模预训练模型面临的机遇和挑战,文中将这种基于深度神经网络和自监督学习技术,在大规模、广泛来源数据集上训练的 AI 模型称为大模型。
+随着神经网络模型结构向更深的网络结构,更多的参数演进,出现了各种基于预训练模型进行参数微调的特大参数模型。2021 年 8 月份,著名人工智能教授李飞飞和 100 多位学者联名发表一份 200 多页的研究报告《[On the Opportunities and Risk of Foundation Models](https://arxiv.org/pdf/2108.07258)》,深度地综述了当前大规模预训练模型面临的机遇和挑战,文中将这种基于神经网络和自监督学习技术,在大规模、广泛来源数据集上训练的 AI 模型称为大模型。
大模型包括多种预训练模型,如 BERT、GPT-3、CLIP、DALL·E 等。目前基础模型所涉及的技术子领域包括:模型的构建、训练、微调、评价、加速、数据、安全、稳健性、对齐(Alignment)、模型理论、可解释等,大模型仍处于快速发展的阶段。
diff --git a/01Introduction/02Develop.md b/01Introduction/02Develop.md
index 0b91e5ee..9478c9bc 100644
--- a/01Introduction/02Develop.md
+++ b/01Introduction/02Develop.md
@@ -16,7 +16,7 @@ AI 起源于上世纪五十年代,经历了几次繁荣与低谷,直到 2016
在展开 AI 系统设计之前,需要首先了解 AI 的原理与特点。将以下面图中的实例介绍 AI 是如何工作的。本内容假定读者有一定机器学习经验,其中的一些概念暂不在本节过多解释,会在后续章节中介绍机器学习、神经网络与 AI 的原理,让读者对整体的执行流程有更加深入的理解。
-如图所示,将深度神经网络的开发与工作模式抽象为以下几个步骤:
+如图所示,将神经网络的开发与工作模式抽象为以下几个步骤:
1. **确定模型输入输出**:首先需要确认神经网络模型的输入样本学习数据(Sample)、输出标签(Label)。如图中所示,给 AI 模型输入图片(有狗,猫等),输出是图片所对应的类别(是猫还是是狗?)。用户需要提前准备好模型的输入输出数据,进而展开后续的模型训练。
diff --git a/01Introduction/05Sample.md b/01Introduction/05Sample.md
index cc19769d..686d9412 100644
--- a/01Introduction/05Sample.md
+++ b/01Introduction/05Sample.md
@@ -200,7 +200,7 @@ for n in range(batch_size):
在实际 Kernel 的计算过程中有很多有趣的问题:
-- **硬件加速**:通用矩阵乘是计算机视觉和自然语言处理模型中的主要的计算方式,同时 NPU、GPU,又或者如 TPU 脉动阵列的矩阵乘单元等其他专用人工智能芯片 ASIC 是否会针对矩阵乘作为底层支持?(第二章 AI 芯片体系结构相关内容)
+- **硬件加速**:通用矩阵乘是计算机视觉和自然语言处理模型中的主要的计算方式,同时 NPU、GPU,又或者如 TPU 脉动阵列的矩阵乘单元等其他专用 AI 芯片 ASIC 是否会针对矩阵乘作为底层支持?(第二章 AI 芯片体系结构相关内容)
- **片上内存**:其中参与计算的输入、权重和输出张量能否完全放入 NPU/GPU 片内缓存(L1、L2、Cache)?如果不能放入则需要通过循环块(Loop Tile)编译优化进行切片。(第二章 AI 芯片体系结构相关内容)
diff --git a/01Introduction/README.md b/01Introduction/README.md
index c04e3691..94299ca0 100644
--- a/01Introduction/README.md
+++ b/01Introduction/README.md
@@ -4,15 +4,15 @@
## 课程简介
-《AI 系统》本课程可以作为计算机及相关专业硕博研究生的专业选修课程,它是一门多领域交叉学科,涉及概率论与数理统计、高等数学、数据结构、程序设计、半导体设计、工程系统、计算机体系结构、人工智能、实际工程应用等多门学科。是研究使用计算机系统怎样模拟人类智能的一门学科,是计算机专业智能化方向重要课程。
+《AI 系统》本课程可以作为计算机及相关专业硕博研究生的专业选修课程,它是一门多领域交叉学科,涉及概率论与数理统计、高等数学、数据结构、程序设计、半导体设计、工程系统、计算机体系结构、 AI 、实际工程应用等多门学科。是研究使用计算机系统怎样模拟人类智能的一门学科,是计算机专业智能化方向重要课程。
-《AI 系统》该课程旨在帮助学生把握和理解人工智能学科在计算机领域的性质、地位和作用,掌握人工智能系统层面的基本理论、技术、实际应用及研究方向,使学生对人工智能和系统结构的学科范畴有基本了解,为后续学习奠定基础,为学生今后从事相关领域的研究工作或项目开发工作奠定基础,让学生通过编程练习典型应用实例,提升学生的抽象思维能力和理论应用实际能力。
+《AI 系统》该课程旨在帮助学生把握和理解 AI 学科在计算机领域的性质、地位和作用,掌握 AI 系统层面的基本理论、技术、实际应用及研究方向,使学生对 AI 和系统结构的学科范畴有基本了解,为后续学习奠定基础,为学生今后从事相关领域的研究工作或项目开发工作奠定基础,让学生通过编程练习典型应用实例,提升学生的抽象思维能力和理论应用实际能力。
-本课程主要围绕人工智能和计算机系统的各个方面的理论基础与技术基础知识而展开,具体来说,本课程的教学目标为:通过以下内容展开介绍,以让开发者了解人工智能系统的来龙去脉,形成人工智能系统的系统化与层次化的初步理解,为后续展开具体的人工智能系统内容打好初步基础。
+本课程主要围绕 AI 和计算机系统的各个方面的理论基础与技术基础知识而展开,具体来说,本课程的教学目标为:通过以下内容展开介绍,以让开发者了解 AI 系统的来龙去脉,形成 AI 系统的系统化与层次化的初步理解,为后续展开具体的 AI 系统内容打好初步基础。
课程主要包括以下六大模块:
-第一部分《AI 系统概述》:AI 基础知识和 AI 系统的全栈概述的 AI 系统概述,以及人工智能系统的系统性设计和方法论,主要是整体了解 AI 训练和推理全栈的体系结构内容。
+第一部分《AI 系统概述》:AI 基础知识和 AI 系统的全栈概述的 AI 系统概述,以及 AI 系统的系统性设计和方法论,主要是整体了解 AI 训练和推理全栈的体系结构内容。
第二部分《AI 硬件体系架构》:硬核篇介绍 AI 芯片概况,从芯片基础到 AI 芯片的范围都会涉及,芯片设计需要考虑上层 AI 框架的前端、后端编译、以及针对 AI 算法的实现角度等相关技术综合设计符合 AI 范式的芯片架构。
@@ -26,25 +26,25 @@
我在 2019 年来到了华为技术有限公司的 2012 实验室,后来加入了计算产品线从事昇腾产业,是国内为数不多的 AI(Artificial Intelligence, 人工智能)基础研究的发源地之一,很多学生和 AI 基础软硬件研究者慕名而来从事 AI 产业相关技术。这里拥有许多出色的 AI 的算法研究(如自然语言处理、计算机视觉、计算神经学等),同时也拥有一系列关于计算机系统的扎实研究(如操作系统、编程语言、编译器、计算机体系架构、AI 芯片设计等)。
-当我在公司内部主要负责 AI 训练框架 MindSpore 和推理引擎 MindSpore Lite 的开发,深刻地了解到了:人工智能算法是如何利用计算机结构体系实现计算加速和部署。反观国内外鲜有相关的材料和课程介绍,大部分都是聚焦在如何开发一个 AI 算法,有更加深入的内容则是解读不同 AI 框架里面的某个注册机制,例如如何注册自定义算子等。
+当我在公司内部主要负责 AI 训练框架 MindSpore 和推理引擎 MindSpore Lite 的开发,深刻地了解到了: AI 算法是如何利用计算机结构体系实现计算加速和部署。反观国内外鲜有相关的材料和课程介绍,大部分都是聚焦在如何开发一个 AI 算法,有更加深入的内容则是解读不同 AI 框架里面的某个注册机制,例如如何注册自定义算子等。
-在 2021 年 8 月份暑期给 C9 高校联盟培训的交流过程中,我发现很多学生和从业者对人工智能算法,如何利用计算机结构体系实现计算加速和部署尤为兴趣,而且会投来疑惑的眼神。这促使我思考能否在中国这一片 AI 应用落地的摇篮之地,乃至于在国内最顶尖的学校(清华大学、浙江大学、哈尔滨工业大学等知名学府)教学大纲中,是不是缺一门衔接人工智能和计算机结构体系的课程。
+在 2021 年 8 月份暑期给 C9 高校联盟培训的交流过程中,我发现很多学生和从业者对 AI 算法,如何利用计算机结构体系实现计算加速和部署尤为兴趣,而且会投来疑惑的眼神。这促使我思考能否在中国这一片 AI 应用落地的摇篮之地,乃至于在国内最顶尖的学校(清华大学、浙江大学、哈尔滨工业大学等知名学府)教学大纲中,是不是缺一门衔接 AI 和计算机结构体系的课程。
我的第一反应是基于目前在华为昇腾从事的 AI 相关的工作来进行拓展。那时,加州大学伯克利分校的《AI Systems(人工智能系统)》课程较为知名,这门课描述了机器学习系统的不同研究方向,内容以研读论文为主;可惜的是,许多论文已经无法经受住时间的检验;微软开放的《AI Systems》课程因为课缺乏对于知识的整体梳理,未能形成完整的 AI 系统知识体系架构;学习完这门课程,学生未能对于从头搭建机器学习系统有明确的思路。华盛顿大学曾短期开过《Deep Learning Systems(深度学习系统)》课程,这门课程讲述了机器学习程序的编译过程。而由于这门课程以讲述 Apache TVM 深度学习编译器为主要目的,对于机器学习系统缺乏完整的教学;另外,斯坦福大学的课程《Machine Learning Systems Design(机器学习系统设计)》因为课程设计人的研究领域以数据库为主,因此该课程专注于数据清洗、数据管理、数据标注等主题;MindSpore 的首席架构师金雪峰老师与英国爱丁堡大学的麦络老师合作开发的《机器学习系统:设计和实现》,由于其内容更加专注于 AI 框架的实现,从而引入了很多跟 AI 系统不相关的强化学习、联邦学习等最新的 AI 算法介绍,但是缺乏从计算机结构体系的整个软硬件系统层视角,来系统性论述人工智能系统所涉及的基础软硬件内容。
-回首 2022 年年底,我们已经拥有了优秀的操作系统、数据库、分布式系统等基础性教材。同时,在人工智能相关算法方面也有了一系列教材。然而,无论是国内外,很难找到一本系统性讲述人工智能系统的教材。随着国内的 AI 芯片的公司和大模型基础设施的公司如如后春笋般涌现,但是另外一方面,许多公司和高校实验室不得不花费大量的人力和物力从头培养学生和工程师,使他们加强对于人工智能底层基础设施的认识。这类教材的缺乏已经制约了高校的人才培养,制约了企业人才的培养,不利于高校培养出符合业界学界和时代发展的人才了。因此,开始思考:我们是不是应该推出一本人工智能系统的教科书了呢?
+回首 2022 年年底,我们已经拥有了优秀的操作系统、数据库、分布式系统等基础性教材。同时,在 AI 相关算法方面也有了一系列教材。然而,无论是国内外,很难找到一本系统性讲述 AI 系统的教材。随着国内的 AI 芯片的公司和大模型基础设施的公司如如后春笋般涌现,但是另外一方面,许多公司和高校实验室不得不花费大量的人力和物力从头培养学生和工程师,使他们加强对于 AI 底层基础设施的认识。这类教材的缺乏已经制约了高校的人才培养,制约了企业人才的培养,不利于高校培养出符合业界学界和时代发展的人才了。因此,开始思考:我们是不是应该推出一本 AI 系统的教科书了呢?
### 课程开始
-于是便开始设计《AI 系统》这一课程,这门课程讲述了人工智能系统背后的设计理念。慢慢地梳理相关的大纲、知识点,利用自己在工作之余所积累的相关知识点进行串联起来。带着写书的构想,我开始和朋友以及周边的同事沟通。大家都非常认可编写这类书的巨大价值,但是现实的情况是:很少有人愿意做这么一件费力的事情。
+于是便开始设计《AI 系统》这一课程,这门课程讲述了 AI 系统背后的设计理念。慢慢地梳理相关的大纲、知识点,利用自己在工作之余所积累的相关知识点进行串联起来。带着写书的构想,我开始和朋友以及周边的同事沟通。大家都非常认可编写这类书的巨大价值,但是现实的情况是:很少有人愿意做这么一件费力的事情。
-而我和同行交流时也发现:他们更愿意改进市面上已经有的教科书,即做有迹可循的事情,而不是摸着石头过河,做从无到有的事情。特别是对于人工智能系统这个快速发展,频繁试错的领域,能不能写出经受时间检验的书也是一个未知数。
+而我和同行交流时也发现:他们更愿意改进市面上已经有的教科书,即做有迹可循的事情,而不是摸着石头过河,做从无到有的事情。特别是对于 AI 系统这个快速发展,频繁试错的领域,能不能写出经受时间检验的书也是一个未知数。
传统的图书写作,往往依赖于一、两个教授将学科十余年的发展慢慢总结整理成书。这种模式类似于传统软件开发的瀑布流方式。可是,在科技的世界,软件的发展从传统的瀑布流进化到如今的开源敏捷开发。而图书的写作为什么还要停留在传统方式呢?
-于是我开始趁着在苏州给 C9 高校为期三天的人工智能 AI 框架的核心原理的培训这一契机,制作了一系列围绕 AI 框架核心模块 -- 自动微分的原理实现,从胶片到实操代码。并收到了来自浙江大学、上海交通大学、华东师范大学、南京大学等学生的高度好评,于是相隔了 2 个月之后,在 22 年的 10 月份开始尝试制作第一个 AI 框架原理的视频,并在全网上线,从书籍的撰写到围绕书籍内容进行视频的制作。一个人,没有找到伙伴,凭着一腔热爱技术分享,说干就干!
+于是我开始趁着在苏州给 C9 高校为期三天的 AI AI 框架的核心原理的培训这一契机,制作了一系列围绕 AI 框架核心模块 -- 自动微分的原理实现,从胶片到实操代码。并收到了来自浙江大学、上海交通大学、华东师范大学、南京大学等学生的高度好评,于是相隔了 2 个月之后,在 22 年的 10 月份开始尝试制作第一个 AI 框架原理的视频,并在全网上线,从书籍的撰写到围绕书籍内容进行视频的制作。一个人,没有找到伙伴,凭着一腔热爱技术分享,说干就干!
-上线了多期视频后,经过了几个月的视频分享,内容一期又一期,深度来越深,刚开始的时候,因为没有流量,关注的人只有少数的几百人。随着《AI 系统》最初的设计,分享从 AI 框架慢慢扩展到推理引擎、AI 编译器等,我们将项目或者课程名定为《AI 系统》。希望通过分享人工智能系统设计原理,同时也为学生和 AI 行业从业者提供大量人工智能系统实现的实际项目经验分享,让他们在将来工作和科研中遇到实际问题知道该如何分析和解决。
+上线了多期视频后,经过了几个月的视频分享,内容一期又一期,深度来越深,刚开始的时候,因为没有流量,关注的人只有少数的几百人。随着《AI 系统》最初的设计,分享从 AI 框架慢慢扩展到推理引擎、AI 编译器等,我们将项目或者课程名定为《AI 系统》。希望通过分享 AI 系统设计原理,同时也为学生和 AI 行业从业者提供大量 AI 系统实现的实际项目经验分享,让他们在将来工作和科研中遇到实际问题知道该如何分析和解决。
### 社区构建
@@ -58,7 +58,7 @@
### 众智之力
-充分发动众筹、众智的力量后,项目的内容得以持续高质量地添加。自从开源了项目以后,图书的受众快速增长,GitHub 上关注度的增长让我们受宠若惊。在社区的推动下,参与进来进行内容审核、视频字幕补充、内容细化的小伙伴越来越多,图书的每一个细节内容快速地补充,所有细节和更加深刻的知识点都已经开始全面推进。这么多年来,我第一次意识到我在人工智能系统中学习到的和积累到的知识,在解决现实复杂问题的时候是如此的有用,能够帮助到这么多人!
+充分发动众筹、众智的力量后,项目的内容得以持续高质量地添加。自从开源了项目以后,图书的受众快速增长,GitHub 上关注度的增长让我们受宠若惊。在社区的推动下,参与进来进行内容审核、视频字幕补充、内容细化的小伙伴越来越多,图书的每一个细节内容快速地补充,所有细节和更加深刻的知识点都已经开始全面推进。这么多年来,我第一次意识到我在 AI 系统中学习到的和积累到的知识,在解决现实复杂问题的时候是如此的有用,能够帮助到这么多人!
很多时候,当我们面对未知而巨大的困难时,个人的力量真的很渺小,即使再渺小的力量下,坚持下去一定会有所收获的。而和朋友、社区一起就变成了强大的力量,让我们鼓起勇气,走出了最关键的一步!希望我们在开源社区的《AI 系统》的内容,能给整个计算产业带来更多的思考和产业落地的借鉴思路。
diff --git a/02Hardware/01Foundation/03MobileParallel.md b/02Hardware/01Foundation/03MobileParallel.md
index c6982473..c452c0e4 100644
--- a/02Hardware/01Foundation/03MobileParallel.md
+++ b/02Hardware/01Foundation/03MobileParallel.md
@@ -6,7 +6,7 @@
## 轻量化网络模型
-随着深度神经网络应用的普及,越来越多的模型需要在特定的硬件平台部署,如移动端和嵌入式设备,这些平台普遍存在内存资源少,处理器性能不高,功耗受限等特点,所以慢慢演变出了一种轻量化的网络模型设计方向,即在保持模型精度基础上进一步减少模型参数量和计算量的网络模型结构。
+随着神经网络应用的普及,越来越多的模型需要在特定的硬件平台部署,如移动端和嵌入式设备,这些平台普遍存在内存资源少,处理器性能不高,功耗受限等特点,所以慢慢演变出了一种轻量化的网络模型设计方向,即在保持模型精度基础上进一步减少模型参数量和计算量的网络模型结构。
### 模型轻量化方法
diff --git a/02Hardware/01Foundation/04Metrics.md b/02Hardware/01Foundation/04Metrics.md
index a6df795b..21d657ea 100644
--- a/02Hardware/01Foundation/04Metrics.md
+++ b/02Hardware/01Foundation/04Metrics.md
@@ -62,7 +62,7 @@ AI 芯片的时延是指从输入数据传入芯片开始,到输出结果产
### 能耗 Energy
-AI 芯片的能耗指的是在执行人工智能任务时芯片所消耗的能量。随着人工智能应用的广泛普及,对于 AI 芯片的能效和能耗成为了重要关注的焦点之一。
+AI 芯片的能耗指的是在执行 AI 任务时芯片所消耗的能量。随着 AI 应用的广泛普及,对于 AI 芯片的能效和能耗成为了重要关注的焦点之一。
在 AI 任务中,通常需要大量的计算资源来执行复杂的算法,例如神经网络模型的训练和推断。因此,AI 芯片的能耗通常与其性能密切相关。高性能的 AI 芯片通常会消耗更多的能量,而低功耗的设计则可以减少能源消耗并延长电池寿命,这对于移动设备和物联网设备等场景尤为重要。
diff --git a/02Hardware/01Foundation/srt/01.srt b/02Hardware/01Foundation/srt/01.srt
index b3bc5704..ccd2a30b 100644
--- a/02Hardware/01Foundation/srt/01.srt
+++ b/02Hardware/01Foundation/srt/01.srt
@@ -184,7 +184,7 @@ AI 芯片
47
00:01:44,350 --> 00:01:48,503
-就是 AI 深度学习、人工智能的计算的模式
+就是 AI 深度学习、 AI 的计算的模式
48
00:01:48,503 --> 00:01:49,719
diff --git a/02Hardware/01Foundation/srt/02.srt b/02Hardware/01Foundation/srt/02.srt
index 3797b2f5..c60f5673 100644
--- a/02Hardware/01Foundation/srt/02.srt
+++ b/02Hardware/01Foundation/srt/02.srt
@@ -108,7 +108,7 @@ MobileNet
28
00:01:10,259 --> 00:01:12,434
-了解人工智能的发展
+了解 AI 的发展
29
00:01:12,434 --> 00:01:16,083
@@ -144,7 +144,7 @@ AI 的发展和 AI 的范式
37
00:01:31,222 --> 00:01:32,981
-已经提出了人工智能
+已经提出了 AI
38
00:01:32,981 --> 00:01:34,773
diff --git a/02Hardware/02ChipBase/05GPUBase.md b/02Hardware/02ChipBase/05GPUBase.md
index 973d115a..b063eee4 100644
--- a/02Hardware/02ChipBase/05GPUBase.md
+++ b/02Hardware/02ChipBase/05GPUBase.md
@@ -84,7 +84,7 @@ GPU 与人工智能(AI)的发展密不可分。2012 年的一系列重要事
2. 消费电子:目前智能手机市场占据了全球 GPU 市场份额的主导地位,此外,智能音箱、智能手环/手表、VR/AR 眼镜等移动消费电子都是 GPU 潜在的市场。
-3. 云端 AI 服务器:AI 服务器通常搭载 GPU、FPGA、ASIC 等加速芯片,利用 CPU 与加速芯片的组合可以满足高吞吐量互联的需求,为自然语言处理、计算机视觉、语音交互等人工智能应用场景提供强大的算力支持,支撑 AI 算法训练和推理过程。
+3. 云端 AI 服务器:AI 服务器通常搭载 GPU、FPGA、ASIC 等加速芯片,利用 CPU 与加速芯片的组合可以满足高吞吐量互联的需求,为自然语言处理、计算机视觉、语音交互等 AI 应用场景提供强大的算力支持,支撑 AI 算法训练和推理过程。
4. 自动驾驶:GPU 兼具技术成本优势,已成为自动驾驶领域主流。
@@ -94,7 +94,7 @@ GPU 与人工智能(AI)的发展密不可分。2012 年的一系列重要事
7. 加密货币:比特币等加密货币的行情火爆带动矿卡 GPU 需求,矿机算力的大小决定挖矿的速度,算力越大,挖矿越快。除了主流的 ASIC 矿机,加密货币挖矿用的最多大概是 GPU 矿机了。
-8. 医疗影像设备:近年来,在深度学习和 GPU 加速运算快速发展之下,人工智能成为满足医疗影像需求日益增长的推手。
+8. 医疗影像设备:近年来,在深度学习和 GPU 加速运算快速发展之下, AI 成为满足医疗影像需求日益增长的推手。
## 小结与思考
diff --git a/02Hardware/02ChipBase/06NPUBase.md b/02Hardware/02ChipBase/06NPUBase.md
index 80c4e260..015bdab0 100644
--- a/02Hardware/02ChipBase/06NPUBase.md
+++ b/02Hardware/02ChipBase/06NPUBase.md
@@ -2,11 +2,11 @@
# NPU 基础
-近年来,随着人工智能技术的飞速发展,AI 专用处理器如 NPU(Neural Processing Unit)和 TPU(Tensor Processing Unit)也应运而生。这些处理器旨在加速深度学习和机器学习任务,相比传统的 CPU 和 GPU,它们在处理 AI 任务时表现出更高的效率和性能。在接下来的内容中,我们将首先简单介绍引入什么是 AI 芯片,随后具体展开其的部署说明,技术发展路线和应用场景。
+近年来,随着 AI 技术的飞速发展,AI 专用处理器如 NPU(Neural Processing Unit)和 TPU(Tensor Processing Unit)也应运而生。这些处理器旨在加速深度学习和机器学习任务,相比传统的 CPU 和 GPU,它们在处理 AI 任务时表现出更高的效率和性能。在接下来的内容中,我们将首先简单介绍引入什么是 AI 芯片,随后具体展开其的部署说明,技术发展路线和应用场景。
## 什么是 AI 芯片
-AI 芯片是专门为加速人工智能应用中的大量针对矩阵计算任务而设计的处理器或计算模块。与传统的通用芯片如中央处理器(CPU)不同,AI 芯片采用针对特定领域优化的体系结构(Domain-Specific Architecture,DSA),侧重于提升执行 AI 算法所需的专用计算性能。
+AI 芯片是专门为加速 AI 应用中的大量针对矩阵计算任务而设计的处理器或计算模块。与传统的通用芯片如中央处理器(CPU)不同,AI 芯片采用针对特定领域优化的体系结构(Domain-Specific Architecture,DSA),侧重于提升执行 AI 算法所需的专用计算性能。
如下图所示的就是一个典型的 AI 芯片架构,我们假设所有场景围绕应用,那么其周围的例如解码芯片(如图中黄色部分 RSU)、FPGA 芯片(如图中粉色部分)等都是属于针对特定领域优化的芯片结构。
@@ -14,7 +14,7 @@ AI 芯片是专门为加速人工智能应用中的大量针对矩阵计算任
DSA 通常被称为针对特殊领域的加速器架构,因为与在通用 CPU 上执行整个应用程序相比,它们可以大幅提升特定应用的性能。DSA 可以通过更贴近应用的实际需求来实现更高的效率和性能。除了 AI 芯片,DSA 的其他例子还包括图形加速单元(GPU)、用于深度学习的神经网络处理器(NPU/TPU)以及软件定义网络(SDN)处理器等。
-AI 芯片作为一种专用加速器,通过在硬件层面优化深度学习算法所需的矩阵乘法、卷积等关键运算,可以显著加速 AI 应用的执行速度,降低功耗。与在通用 CPU 上用软件模拟这些运算相比,AI 芯片能带来数量级的性能提升。因此,AI 芯片已成为人工智能技术实现落地的关键使能器。
+AI 芯片作为一种专用加速器,通过在硬件层面优化深度学习算法所需的矩阵乘法、卷积等关键运算,可以显著加速 AI 应用的执行速度,降低功耗。与在通用 CPU 上用软件模拟这些运算相比,AI 芯片能带来数量级的性能提升。因此,AI 芯片已成为 AI 技术实现落地的关键使能器。
他们的架构区别如下图,CPU 最为均衡,可以处理多种类型的任务,各种组件比例适中;GPU 则减少了控制逻辑的存在但大量增加了 ALU 计算单元,提供给我们以高计算并行度;而 NPU 则是拥有大量 AI Core,这可以让我们高效完成针对性的 AI 计算任务。
@@ -32,13 +32,13 @@ AI 专用处理器的发展可以追溯到 2016 年,谷歌推出了第一代 T
## AI 芯片任务和部署
-AI 芯片在人工智能的发展中扮演着至关重要的角色,其任务和部署过程极其复杂。首先,AI 芯片需要处理大量数据,并执行高强度的计算任务,这涉及到高性能计算、能效优化、硬件架构设计等多个方面。在人工智能系统中,芯片不仅要具备强大的计算能力,还需要在不同应用场景下表现出色,例如数据中心、大规模服务器以及边缘设备等。
+AI 芯片在 AI 的发展中扮演着至关重要的角色,其任务和部署过程极其复杂。首先,AI 芯片需要处理大量数据,并执行高强度的计算任务,这涉及到高性能计算、能效优化、硬件架构设计等多个方面。在 AI 系统中,芯片不仅要具备强大的计算能力,还需要在不同应用场景下表现出色,例如数据中心、大规模服务器以及边缘设备等。
AI 芯片的复杂性主要体现在以下几个方面。首先是计算能力,AI 任务通常涉及大量的矩阵运算和并行计算,这对芯片的计算核心和内存带宽提出了极高的要求。为了满足这些需求,芯片需要设计复杂的并行计算架构,并配备高效的内存系统,以保证数据的高速传输和处理。
其次是能效比,尤其是在移动设备和边缘计算场景中,芯片必须在保证高性能的同时,尽量降低功耗。这要求芯片设计者在硬件架构和算法加速技术上进行优化,以提高计算效率并减少能源消耗。
-此外,AI 芯片还需要具备灵活性和可扩展性,以适应不断变化的应用需求和技术进步。例如,不同的人工智能任务可能需要不同的计算资源和数据处理能力,芯片必须能够动态调整以满足这些需求。
+此外,AI 芯片还需要具备灵活性和可扩展性,以适应不断变化的应用需求和技术进步。例如,不同的 AI 任务可能需要不同的计算资源和数据处理能力,芯片必须能够动态调整以满足这些需求。
尽管 AI 芯片的任务和部署极为复杂,但其功能最终可以归结为两种主要形态:训练和推理。
@@ -132,9 +132,9 @@ IoT 设备种类繁多,对 AI 芯片的需求也各不相同。例如,智能
## 小结与思考
-1. NPU 和 TPU 等 AI 专用处理器的问世,极大地推动了人工智能技术的发展和应用。这些芯片在架构设计和性能优化方面不断创新,为各种 AI 任务提供了强大的计算支持。
+1. NPU 和 TPU 等 AI 专用处理器的问世,极大地推动了 AI 技术的发展和应用。这些芯片在架构设计和性能优化方面不断创新,为各种 AI 任务提供了强大的计算支持。
-2. 随着 AI 技术的不断发展和应用需求的增长,AI 芯片将迎来更加广阔的发展前景。各大科技巨头和芯片厂商将继续加大在 AI 芯片领域的投入和创新,推动人工智能技术的进一步发展和普及。
+2. 随着 AI 技术的不断发展和应用需求的增长,AI 芯片将迎来更加广阔的发展前景。各大科技巨头和芯片厂商将继续加大在 AI 芯片领域的投入和创新,推动 AI 技术的进一步发展和普及。
## 本节视频
diff --git a/02Hardware/02ChipBase/07Future.md b/02Hardware/02ChipBase/07Future.md
index 01bc0f01..98877124 100644
--- a/02Hardware/02ChipBase/07Future.md
+++ b/02Hardware/02ChipBase/07Future.md
@@ -12,22 +12,22 @@
## AI 芯片发展
-人工智能的发展与芯片算力的提升密不可分,可以大致分为三个阶段:
+ AI 的发展与芯片算力的提升密不可分,可以大致分为三个阶段:
1. 第一阶段:芯片算力不足,神经网络没有被受到重视
-在早期,受限于芯片算力,复杂的神经网络模型难以实现。这一时期的人工智能主要依赖于专家系统、决策树等传统方法。神经网络虽然在理论上已经被提出,但由于计算资源的匮乏,难以训练出有效的模型,因此没有受到广泛重视。
+在早期,受限于芯片算力,复杂的神经网络模型难以实现。这一时期的 AI 主要依赖于专家系统、决策树等传统方法。神经网络虽然在理论上已经被提出,但由于计算资源的匮乏,难以训练出有效的模型,因此没有受到广泛重视。
2. 第二阶段:CPU 算力大幅提升,但仍然无法满足神经网络增长需求
随着摩尔定律的推进,CPU 性能不断提升。这为神经网络的发展提供了一定的计算基础。研究者们开始尝试更大规模的神经网络,并在一些领域取得了突破。但是,神经网络对算力的需求呈指数级增长,单纯依靠 CPU 的性能提升已经难以满足日益复杂的模型训练需求。
-3. 第三阶段:GPU 和 AI 芯片新架构推动人工智能快速落地
+3. 第三阶段:GPU 和 AI 芯片新架构推动 AI 快速落地
-为了解决算力瓶颈,研究者们开始将目光转向了其他计算架构。GPU 凭借其强大的并行计算能力,成为了深度学习的主要计算平台。与 CPU 相比,GPU 在矩阵运算等方面有着显著的优势,能够大幅加速神经网络训练。与此同时,一些专门针对 AI 加速的芯片架构也开始涌现,如 TPU、NPU 等。这些芯片在算力、功耗等方面进一步优化,为人工智能的落地应用扫清了障碍。
+为了解决算力瓶颈,研究者们开始将目光转向了其他计算架构。GPU 凭借其强大的并行计算能力,成为了深度学习的主要计算平台。与 CPU 相比,GPU 在矩阵运算等方面有着显著的优势,能够大幅加速神经网络训练。与此同时,一些专门针对 AI 加速的芯片架构也开始涌现,如 TPU、NPU 等。这些芯片在算力、功耗等方面进一步优化,为 AI 的落地应用扫清了障碍。
-除了芯片算力外,算法的进步、数据的积累也是人工智能发展的重要推动力。在算力瓶颈得到缓解后,一些重要的神经网络结构如 CNN、RNN、Transformer 等被相继提出,并在图像、语音、自然语言处理等领域取得了突破性进展。海量的数据为模型训练提供了丰富的素材,使得神经网络能够学习到更加鲁棒和泛化的特征表示。
+除了芯片算力外,算法的进步、数据的积累也是 AI 发展的重要推动力。在算力瓶颈得到缓解后,一些重要的神经网络结构如 CNN、RNN、Transformer 等被相继提出,并在图像、语音、自然语言处理等领域取得了突破性进展。海量的数据为模型训练提供了丰富的素材,使得神经网络能够学习到更加鲁棒和泛化的特征表示。
而更进一步,单一架构的使用也渐渐满足不了一些应用场景,针对于此,异构计算的概念也就应运而生。
@@ -45,7 +45,7 @@
降低功耗: 异构架构能够根据任务需求动态调整资源分配,降低整体功耗,提升能源利用效率。
-其应用场景也十分广泛,包括人工智能、高性能计算、大数据分析、图形处理等等
+其应用场景也十分广泛,包括 AI 、高性能计算、大数据分析、图形处理等等
我们以一个具体的例子来引入:特斯拉 HW3 FSD 芯片(如下图),我们可以看到其单一芯片却有着 CPU,GPU,NPU 多种架构。
@@ -65,9 +65,9 @@
为了突破单核 CPU 性能的瓶颈,业界开始探索并行计算技术,通过多核处理器或集群计算机实现高性能计算,然而并行计算中的微处理器仍受冯·诺依曼结构的制约,在处理数据密集型任务时,计算速度和性价比不尽如人意。
-随着深度学习等人工智能技术的兴起,对计算能力提出了更高的要求,传统的 CPU 在处理神经网络训练和推理任务时,性能和效率远不及专门设计的 AI 芯片,如 GPU 和 NPU 等。异构计算通过集成不同类型的计算单元,发挥各自的计算优势,实现更高的性能和能效,AI 芯片在处理特定任务时,计算效率远超传统 CPU,有望成为未来计算机体系的标配。
+随着深度学习等 AI 技术的兴起,对计算能力提出了更高的要求,传统的 CPU 在处理神经网络训练和推理任务时,性能和效率远不及专门设计的 AI 芯片,如 GPU 和 NPU 等。异构计算通过集成不同类型的计算单元,发挥各自的计算优势,实现更高的性能和能效,AI 芯片在处理特定任务时,计算效率远超传统 CPU,有望成为未来计算机体系的标配。
-尽管异构计算的发展仍面临系统功耗限制、上层基础软件的欠缺以及与芯片结构的匹配度不足等挑战,但通过优化异构计算平台的架构设计、开发高效的编程模型和运行时系统、提供易用的开发工具和库,可以更好地发挥异构计算的潜力,推动人工智能、大数据分析、科学计算等领域的进一步发展,异构计算有望成为未来计算机体系结构的主流趋势。
+尽管异构计算的发展仍面临系统功耗限制、上层基础软件的欠缺以及与芯片结构的匹配度不足等挑战,但通过优化异构计算平台的架构设计、开发高效的编程模型和运行时系统、提供易用的开发工具和库,可以更好地发挥异构计算的潜力,推动 AI 、大数据分析、科学计算等领域的进一步发展,异构计算有望成为未来计算机体系结构的主流趋势。
### 异构的例子
@@ -92,7 +92,7 @@
1. **适用于处理高性能计算**:伴随着高性能计算类应用的发展,驱动算力需求不断攀升,但目前单一计算类型和架构的处理器已经无法处理更复杂、更多样的数据。数据中心如何在增强算力和性能的同时,具备应对多类型任务的处理能力,成为全球性的技术难题。异构并行计算架构作为高性能计算的一种主流解决方案,受到广泛关注。
-2. **适用于处理数据中心产生的海量数据**:数据爆炸时代来临,使用单一架构来处理数据的时代已经过去。比如:个人互联网用户每天产生约 1GB 数据,智能汽车每天约 50GB,智能医院每天约 3TB 数据,智慧城市每天约 50PB 数据。数据的数量和多样性以及数据处理的地点、时间和方式也在迅速变化。无论工作任务是在边缘还是在云中,不管是人工智能工作任务还是存储工作任务,都需要有正确的架构和软件来充分利用这些特点。
+2. **适用于处理数据中心产生的海量数据**:数据爆炸时代来临,使用单一架构来处理数据的时代已经过去。比如:个人互联网用户每天产生约 1GB 数据,智能汽车每天约 50GB,智能医院每天约 3TB 数据,智慧城市每天约 50PB 数据。数据的数量和多样性以及数据处理的地点、时间和方式也在迅速变化。无论工作任务是在边缘还是在云中,不管是 AI 工作任务还是存储工作任务,都需要有正确的架构和软件来充分利用这些特点。
3. **可以共享内存空间,消除冗余内存副本**:在此前的技术中,虽然 GPU 和 CPU 已整合到同一个芯片上,但是芯片在运算时要定位内存的位置仍然得经过繁杂的步骤,这是因为 CPU 和 GPU 的内存池仍然是独立运作。为了解决两者内存池独立的运算问题,当 CPU 程式需要在 GPU 上进行部分运算时,CPU 都必须从 CPU 的内存上复制所有的资料到 GPU 的内存上,而当 GPU 上的运算完成时,这些资料还得再复制回到 CPU 内存上。然而,将 CPU 与 GPU 放入同一架构,就能够消除冗余内存副本来改善问题,处理器不再需要将数据复制到自己的专用内存池来访问/更改该数据。统一内存池还意味着不需要第二个内存芯片池,即连接到 CPU 的 DRAM。
@@ -124,7 +124,7 @@ ASIC 工作流示意图如下:
首先我们从三个角度来理解一下为什么超异构的出现是应运而生的:
-1. **需求驱动**:软件新应用层出不穷,两年一个新热点。随着人工智能、大数据、元宇宙等新兴技术的快速发展,对计算能力提出了越来越高的要求。传统单一架构的计算模式难以满足日益增长的计算需求,亟需新的计算架构来突破性能瓶颈。已有的热点技术仍在快速演进。例如,元宇宙需要将算力提升 1000 倍才能实现逼真的沉浸式体验。超异构计算能够通过融合不同类型计算单元的优势,显著提升计算性能,为元宇宙等新兴技术的落地提供强有力的支持。
+1. **需求驱动**:软件新应用层出不穷,两年一个新热点。随着 AI 、大数据、元宇宙等新兴技术的快速发展,对计算能力提出了越来越高的要求。传统单一架构的计算模式难以满足日益增长的计算需求,亟需新的计算架构来突破性能瓶颈。已有的热点技术仍在快速演进。例如,元宇宙需要将算力提升 1000 倍才能实现逼真的沉浸式体验。超异构计算能够通过融合不同类型计算单元的优势,显著提升计算性能,为元宇宙等新兴技术的落地提供强有力的支持。
2. **工艺和封装支撑**:Chiplet 封装使得在单芯片层次,可以构建规模数量级提升的超大系统。Chiplet 封装技术将多个芯片封装在一个封装体内,可以显著提高芯片的集成度和性能。这使得在单一封装内集成多种类型的 XPU 成为可能,进一步推动了超异构计算的发展。
@@ -142,7 +142,7 @@ ASIC 工作流示意图如下:
超异构有以下基本特征:
-1. 超大规模的计算集群:超异构计算通常由大量计算节点组成,每个节点可以包含 CPU、GPU、FPGA、DSA 等多种类型的计算单元。这些计算节点通过高速互联网络连接在一起,形成一个超大规模的计算集群。超大规模的计算集群能够提供强大的计算能力,满足大数据分析、人工智能、科学计算等对计算能力要求高的应用场景。
+1. 超大规模的计算集群:超异构计算通常由大量计算节点组成,每个节点可以包含 CPU、GPU、FPGA、DSA 等多种类型的计算单元。这些计算节点通过高速互联网络连接在一起,形成一个超大规模的计算集群。超大规模的计算集群能够提供强大的计算能力,满足大数据分析、 AI 、科学计算等对计算能力要求高的应用场景。
2. 复杂计算系统,由分层分块组件组成,如下图所示。超异构计算系统的复杂性主要体现在以下几个方面:不同类型的计算单元具有不同的性能和特性,需要进行统一管理和调度;计算任务可能涉及多个计算节点,需要进行任务分解和数据通信;需要考虑功耗、可靠性等因素,进行系统优化。
diff --git a/02Hardware/02ChipBase/srt/07.srt b/02Hardware/02ChipBase/srt/07.srt
index 657ede7d..32649222 100644
--- a/02Hardware/02ChipBase/srt/07.srt
+++ b/02Hardware/02ChipBase/srt/07.srt
@@ -160,7 +160,7 @@ GPU 和 AI 的芯片
41
00:01:50,400 --> 00:01:53,600
-推动了整个人工智能的快速落地
+推动了整个 AI 的快速落地
42
00:01:53,600 --> 00:01:56,000
diff --git a/02Hardware/03GPUBase/01Works.md b/02Hardware/03GPUBase/01Works.md
index eee69712..733101c8 100644
--- a/02Hardware/03GPUBase/01Works.md
+++ b/02Hardware/03GPUBase/01Works.md
@@ -201,7 +201,7 @@ GPU 和 CPU 内存带宽和时延进行比较,在 GPU 中如果把主内存(
| ---- | ----- | -------- | ------ | ---- |
| DRAM(Dynamic Random Access Memory)| 一种基本的内存技术,通常以单层平面的方式组织,存储芯片分布在一个平面上 | 当读取数据时,电荷被传递到输出线路,然后被刷新。当写入数据时,电荷被存储在电容中。由于电容会逐渐失去电荷,因此需要周期性刷新来保持数据 | 具有较高的密度和相对较低的成本,但带宽和延迟相对较高 | 常用于个人电脑、笔记本电脑和普通服务器等一般计算设备中 |
| GDDR(Graphics Double Data Rate) | 专门为图形处理器设计的内存技术,具有较高的带宽和性能 | 在数据传输速度和带宽方面优于传统的 DRAM,适用于图形渲染和视频处理等需要大量数据传输的应用 | GDDR 与标准 DDR SDRAM 类似,但在设计上进行了优化以提供更高的数据传输速度。它采用双倍数据速率传输,即在每个时钟周期传输两次数据,提高了数据传输效率 | 主要用于高性能图形处理器(GPU)和游戏主机等需要高带宽内存的设备中 |
-| HBM(High Bandwidth Memory) | 使用堆叠设计,将多个 DRAM 存储芯片堆叠在一起,形成三维结构 | 堆叠设计允许更短的数据传输路径和更高的带宽,同时减少了功耗和延迟。每个存储芯片通过硅间连接(Through Silicon Via,TSV)与其他存储芯片通信,实现高效的数据传输 | 具有非常高的带宽和较低的延迟,适用于高性能计算和人工智能等需要大量数据传输的领域 | 主要用于高端图形处理器(GPU)、高性能计算系统和服务器等需要高带宽内存的设备中 |
+| HBM(High Bandwidth Memory) | 使用堆叠设计,将多个 DRAM 存储芯片堆叠在一起,形成三维结构 | 堆叠设计允许更短的数据传输路径和更高的带宽,同时减少了功耗和延迟。每个存储芯片通过硅间连接(Through Silicon Via,TSV)与其他存储芯片通信,实现高效的数据传输 | 具有非常高的带宽和较低的延迟,适用于高性能计算和 AI 等需要大量数据传输的领域 | 主要用于高端图形处理器(GPU)、高性能计算系统和服务器等需要高带宽内存的设备中 |
不同存储和传输的带宽和计算强度进行比较,假设 HBM 计算强度为 100,L2 缓存的计算强度只为 39,意味着每个数据只需要执行 39 个操作,L1 的缓存更少,计算强度只需要 8 个操作,这个时候对于硬件来说非常容易实现。这就是为什么 L1 缓存、L2 缓存和寄存器对 GPU 来说如此重要。可以把数据放在 L1 缓存里面然后对数据进行 8 个操作,使得计算达到饱和的状态,使 GPU 里面 SM 的算力利用率更高。但是 PCIe 的带宽很低,整体的时延很高,这将导致整体的算力强度很高,算力利用率很低。
diff --git a/02Hardware/03GPUBase/02Principle.md b/02Hardware/03GPUBase/02Principle.md
index 28dd097d..2290df1a 100644
--- a/02Hardware/03GPUBase/02Principle.md
+++ b/02Hardware/03GPUBase/02Principle.md
@@ -132,7 +132,7 @@ $$\text{Arithmetic Intensity} = \frac{2N^3 - N^2}{3N^2}≈O(N)$$
> 张量核心(Tensor core)
>
-> Tensor Core 是英伟达推出专门用于深度学习和人工智能计算的硬件单元。Tensor Core 的设计旨在加速矩阵乘法运算,这在深度学习中是非常常见的计算操作。Tensor Core 主要有以下特点和优势:
+> Tensor Core 是英伟达推出专门用于深度学习和 AI 计算的硬件单元。Tensor Core 的设计旨在加速矩阵乘法运算,这在深度学习中是非常常见的计算操作。Tensor Core 主要有以下特点和优势:
>
> 1. 并行计算能力:Tensor Core 能够同时处理多个矩阵乘法运算,从而大幅提高计算效率。
>
@@ -142,7 +142,7 @@ $$\text{Arithmetic Intensity} = \frac{2N^3 - N^2}{3N^2}≈O(N)$$
>
> 4. 节能优势:由于其高效的并行计算和混合精度计算能力,Tensor Core 在相同计算任务下通常能够比传统的计算单元更节能。
>
-> Tensor Core 的出现极大地加速了深度学习和人工智能计算的速度和效率,使得训练和推理过程更加快速和高效。已经被广泛应用于 AI 框架如 TensorFlow、PyTorch 等中,为用户提供了更好的计算体验。
+> Tensor Core 的出现极大地加速了深度学习和 AI 计算的速度和效率,使得训练和推理过程更加快速和高效。已经被广泛应用于 AI 框架如 TensorFlow、PyTorch 等中,为用户提供了更好的计算体验。
当 Tensor Core 在 L1 缓存、L2 缓存和 HBM 存储位置的不同将影响理想计算强度下矩阵的维度大小,每种存储和矩阵的计算强度分别对应一个交叉点,由此可以看出数据在什么类型的存储中尤为重要,相比较 FP32 和 FP64 对计算强度的影响更为重要。当数据搬运到 L1 缓存中时可以进行一些更小规模的矩阵运算,比如卷积运算,对于 NLP(Natural Language Processing)中使用的 transformer 结构,可以将数据搬运到 L2 缓存进行计算。因为数据运算和读取存在比例关系,如果数据都在搬运此时计算只能等待,导致二者不平衡,因此找到计算强度和矩阵大小的平衡点对于 AI 计算系统的优化尤为重要。
diff --git a/02Hardware/03GPUBase/04History.md b/02Hardware/03GPUBase/04History.md
index e1d7af25..03e747f9 100644
--- a/02Hardware/03GPUBase/04History.md
+++ b/02Hardware/03GPUBase/04History.md
@@ -121,7 +121,7 @@ SMM 使用基于象限的设计,其中每个 SMM 有四个共 32 核处理块
## Pascal 架构
-2016 年英伟达提出 Pascal 架构,相比之前的架构,Pascal 帕斯卡架构在应用场景、内存带宽和制程工艺等多个方面做出了创新。将系统内存 GDDR5 换成 HBM2,能够在更高的带宽下处理更大的工作数据集,提高效率和计算吞吐量,并减少从系统内存传输的频率,而且 HBM2 原生支持数据纠错(Error correcting Code, ECC)。采用 16nm FinFET 工艺,拥有 15.3 亿个晶体管,相同功耗下算力提升提升一个数量级。同时提出第一代 NVLink,提升单机卡间通信之外扩展多机之间的带宽。支持统一内存,允许在 GPU 和 CPU 的完整虚拟地址空间之间透明迁移数据,降低了并行编程的门槛。支持计算抢占和针对 Pascal 架构优化的人工智能算法,可应用于高性能计算、深度学习和 GPU 计算密集型领域。
+2016 年英伟达提出 Pascal 架构,相比之前的架构,Pascal 帕斯卡架构在应用场景、内存带宽和制程工艺等多个方面做出了创新。将系统内存 GDDR5 换成 HBM2,能够在更高的带宽下处理更大的工作数据集,提高效率和计算吞吐量,并减少从系统内存传输的频率,而且 HBM2 原生支持数据纠错(Error correcting Code, ECC)。采用 16nm FinFET 工艺,拥有 15.3 亿个晶体管,相同功耗下算力提升提升一个数量级。同时提出第一代 NVLink,提升单机卡间通信之外扩展多机之间的带宽。支持统一内存,允许在 GPU 和 CPU 的完整虚拟地址空间之间透明迁移数据,降低了并行编程的门槛。支持计算抢占和针对 Pascal 架构优化的 AI 算法,可应用于高性能计算、深度学习和 GPU 计算密集型领域。
![Pascal 帕斯卡架构主要创新](images/04History07.png)
@@ -219,7 +219,7 @@ TU102 GPU 包括 6 个图形处理集群(GPCs)、36 个纹理处理集群(
>
> 4. 在逻辑学领域,他提出了图灵判定问题,对计算机可解性和不可解性做出了重要贡献。
-随着神经网络模型的量化部署逐渐成熟,Turing 架构中的 Tensor Core(张量核心)增加了对 INT8/INT4/Binary 的支持,加速神经网络训练和推理函数的矩阵乘法核心。一个 TU102 GPU 包含 576 个张量核心,每个张量核心可以使用 FP16 输入在每个时钟执行多达 64 个浮点融合乘法加法(FMA)操作。SM 中 8 个张量核心在每个时钟中总共执行 512 次 FP16 的乘法和累积运算,或者在每个时钟执行 1024 次 FP 运算,新的 INT8 精度模式以两倍的速率工作,即每个时钟进行 2048 个整数运算。Tensor Core 用于加速基于人工智能的英伟达 NGX 功能,增强图形、渲染和其它类型的客户端应用程序,包括 DLSS(深度学习超级采样)、人工智能绘画、AI Super Rez(图像/视频超分辨率)和 AI Slow-Mo(视频流插帧)。
+随着神经网络模型的量化部署逐渐成熟,Turing 架构中的 Tensor Core(张量核心)增加了对 INT8/INT4/Binary 的支持,加速神经网络训练和推理函数的矩阵乘法核心。一个 TU102 GPU 包含 576 个张量核心,每个张量核心可以使用 FP16 输入在每个时钟执行多达 64 个浮点融合乘法加法(FMA)操作。SM 中 8 个张量核心在每个时钟中总共执行 512 次 FP16 的乘法和累积运算,或者在每个时钟执行 1024 次 FP 运算,新的 INT8 精度模式以两倍的速率工作,即每个时钟进行 2048 个整数运算。Tensor Core 用于加速基于 AI 的英伟达 NGX 功能,增强图形、渲染和其它类型的客户端应用程序,包括 DLSS(深度学习超级采样)、 AI 绘画、AI Super Rez(图像/视频超分辨率)和 AI Slow-Mo(视频流插帧)。
每个 SMs 分别有 64 个 FP32 核和 64 个 INT32 核,还包括 8 个混合精度的张量核(Tensor Core),每个 SM 被分为四个块,每个块包括一个新的 L0 指令缓存和一个 64 KB 的寄存器文件。四个块共享一个 96 KB L1 数据缓存/共享内存。传统的图形工作负载将 96 KB 的 L1/共享内存划分为 64 KB 的专用图形着色器 RAM 和 32 KB 的用于纹理缓存和寄存器文件溢出区域。计算工作负载可以将 96 KB 划分为 32 KB 共享内存和 64 KB L1 缓存,或者 64 KB 共享内存和 32 KB L1 缓存。
@@ -273,7 +273,7 @@ A100 Tensor Core3.0 增强操作数共享并提高计算效率,引入了 TF32
![Ampere 架构 TF32、BF16 和 FP64](images/04History23.png)
-A100 FP32 FFMA,INT8、INT4 和 Binary 分别提高了 32x、64x 和 256x,与 Volta 架构一样,自动混合精度(AMP)允许用户使用与 FP16 相结合的混合精度来进行人工智能训练,使用 AMP 之后 A100 提供了比 TF32 快 2 倍的张量核心性能。
+A100 FP32 FFMA,INT8、INT4 和 Binary 分别提高了 32x、64x 和 256x,与 Volta 架构一样,自动混合精度(AMP)允许用户使用与 FP16 相结合的混合精度来进行 AI 训练,使用 AMP 之后 A100 提供了比 TF32 快 2 倍的张量核心性能。
![Ampere 架构 A100 支持精度](images/04History24.png)
@@ -285,7 +285,7 @@ A100 张量核心 GPU 可以被分为 7 个 GPU 实例并被不同任务使用
![Ampere 架构多实例分割虚拟 GPU](images/04History26.png)
-DGX A100 是英伟达专门构建的第三代人工智能系统,在单个系统中可以提供 5 PFLOPS(petaflop)性能,通过一种新的基础设施结构,彻底改变了企业数据中心,旨在将所有人工智能工作负载统一在一个新的通用平台和架构上。A100 以整机的形式出售,最上面是散热器,中间的 A100 芯片不再通过 PCIe 进行连接,而是直接封装在主板上,这样便于在同一个节点上进行模型并行,但是跨节点跨机器之间训练大模型时带宽就会成为整个大模型训练的瓶颈。内存高达 1TB 或者 2TB,可以直接将数据全部加载到 CPU 里面,然后再不断回传到 GPU 中,加速大模型训练。
+DGX A100 是英伟达专门构建的第三代 AI 系统,在单个系统中可以提供 5 PFLOPS(petaflop)性能,通过一种新的基础设施结构,彻底改变了企业数据中心,旨在将所有 AI 工作负载统一在一个新的通用平台和架构上。A100 以整机的形式出售,最上面是散热器,中间的 A100 芯片不再通过 PCIe 进行连接,而是直接封装在主板上,这样便于在同一个节点上进行模型并行,但是跨节点跨机器之间训练大模型时带宽就会成为整个大模型训练的瓶颈。内存高达 1TB 或者 2TB,可以直接将数据全部加载到 CPU 里面,然后再不断回传到 GPU 中,加速大模型训练。
![A100 硬件规格](images/04History27.png)
@@ -354,7 +354,7 @@ NVIDIA CUDA 平台针对 NVIDIA Grace CPU,NVIDIA Grace Hopper Superchip 和 NV
基于 Hopper 架构,英伟达推出 NVIDIA H100 高性能计算加速器,旨在为各种规模的计算工作负载提供出色的性能和效率。在单服务器规模下,结合主流服务器使用 H100 加速卡可以提供强大的计算能力,加速各种计算密集型工作负载。在多服务器规模下,组成 GPU 集群的多块 H100 加速卡可以构建高性能计算集群,支持分布式计算和并行计算,提高整体计算效率。而在超级计算规模下,大量 H100 加速卡组成的超级计算集群可以处理极端规模的计算任务,支持复杂的科学计算和研究。
-从单服务器到多服务器再到超级计算规模(Mainstream Servers to DGX to DGX SuperPOD),NVIDIA H100 在不同层次和规模下展现出色的计算性能和效率,满足各种计算需求和业务目标。企业可以根据自身需求和预算选择适合的 NVIDIA H100 解决方案,加速其计算任务和推动人工智能领域的发展。
+从单服务器到多服务器再到超级计算规模(Mainstream Servers to DGX to DGX SuperPOD),NVIDIA H100 在不同层次和规模下展现出色的计算性能和效率,满足各种计算需求和业务目标。企业可以根据自身需求和预算选择适合的 NVIDIA H100 解决方案,加速其计算任务和推动 AI 领域的发展。
![H100-Mainstream Servers to DGX to DGX SuperPOD](images/04History33.png)
@@ -386,7 +386,7 @@ NVIDIA CUDA 平台针对 NVIDIA Grace CPU,NVIDIA Grace Hopper Superchip 和 NV
![8 年时间 AI 计算性能提升了 1000 倍](images/04History35.png)
-英伟达 GB200 NVL72 集群以机架形式设计连接 36 个 GB200 超级芯片(36 个 Grace cpu 和 72 个 Blackwell GPU)。GB200 NVL72 是一款液冷、机架型 72 GPU NVLink,可以作为单个大规模 GPU,提供比上一代 HGX H100 实现 30 倍的实时万亿参数 LLM 推理,加速下一代人工智能和加速计算。
+英伟达 GB200 NVL72 集群以机架形式设计连接 36 个 GB200 超级芯片(36 个 Grace cpu 和 72 个 Blackwell GPU)。GB200 NVL72 是一款液冷、机架型 72 GPU NVLink,可以作为单个大规模 GPU,提供比上一代 HGX H100 实现 30 倍的实时万亿参数 LLM 推理,加速下一代 AI 和加速计算。
![英伟达 GB200 NVL72 集群](images/04History36.png)
@@ -409,7 +409,7 @@ NVIDIA CUDA 平台针对 NVIDIA Grace CPU,NVIDIA Grace Hopper Superchip 和 NV
![英伟达为满足模型需要不断创新](images/04History37.jpg)
-英伟达 Blackwell HGX B200 和 HGX B100 在生成式人工智能、数据分析和高性能计算方面具有相同的突破性进展。HGX B200 是基于 8 个 B200 x86 平台,提供 144 petaFLOPs 的 AI 性能,每个 GPU 最高可配置 1000 瓦。HGX B100 是基于 8 个 B100 x86 平台,提供 112 petaFLOPs 的 AI 性能,每个 GPU 最高可配置为 700 瓦。
+英伟达 Blackwell HGX B200 和 HGX B100 在生成式 AI 、数据分析和高性能计算方面具有相同的突破性进展。HGX B200 是基于 8 个 B200 x86 平台,提供 144 petaFLOPs 的 AI 性能,每个 GPU 最高可配置 1000 瓦。HGX B100 是基于 8 个 B100 x86 平台,提供 112 petaFLOPs 的 AI 性能,每个 GPU 最高可配置为 700 瓦。
| | HGX B200 | HGX B100 |
| --- | --- | --- |
@@ -451,7 +451,7 @@ NVIDIA CUDA 平台针对 NVIDIA Grace CPU,NVIDIA Grace Hopper Superchip 和 NV
- 2022 年 Hopper 架构实现了 CPU 和 GPU 异构,CPU 与 GPU 实现英伟达 NVLink-C2C 互连。
-- 2024 年 Blackwell 架构 GPU,英伟达将 AI 计算性能提升了 1000 倍,进一步为生成式人工智能与大模型提供算力支持。
+- 2024 年 Blackwell 架构 GPU,英伟达将 AI 计算性能提升了 1000 倍,进一步为生成式 AI 与大模型提供算力支持。
### CUDA Core & Tensor Core
diff --git a/02Hardware/04NVIDIA/02HistoryTC.md b/02Hardware/04NVIDIA/02HistoryTC.md
index 85b0c1c5..64d44286 100644
--- a/02Hardware/04NVIDIA/02HistoryTC.md
+++ b/02Hardware/04NVIDIA/02HistoryTC.md
@@ -12,9 +12,9 @@
到了 2022 年,英伟达发布了专为深度学习设计的 Hopper 架构。Hopper 架构标志性的变化是引入了 FP8 张量核心,这一创新进一步加速了 AI 训练和推理过程。值得注意的是,Hopper 架构去除了 RT Core,以便为深度学习计算腾出更多空间,这一决策凸显了英伟达对深度学习领域的专注和投入。此外,Hopper 架构还引入了 Transformer 引擎,这使得它在处理如今广泛应用的 Transformer 模型时表现出色,进一步巩固了英伟达在深度学习硬件领域的领导地位。
-2024 年,英伟达推出了 Blackwell 架构为生成式人工智能带来了显著的飞跃。相较于 H100 GPU,GB200 Superchip 在处理 LLM 推理任务时,性能实现了高达 30 倍的惊人提升,同时在能耗方面也实现了高达 25 倍的优化。其中 GB200 Superchip 能够组合两个 Blackwell GPU,并与英伟达的 Grace 中央处理单元配对,支持 NVLink-C2C 互联。此外,Blackwell 还引入了第二代 Transformer 引擎,增强了对 FP4 和 FP6 精度的兼容性,显著降低了模型运行时的内存占用和带宽需求。此外,还引入了第五代 NVLink 技术,使每个 GPU 的带宽从 900 GB/s 增加到 1800 GB/s。
+2024 年,英伟达推出了 Blackwell 架构为生成式 AI 带来了显著的飞跃。相较于 H100 GPU,GB200 Superchip 在处理 LLM 推理任务时,性能实现了高达 30 倍的惊人提升,同时在能耗方面也实现了高达 25 倍的优化。其中 GB200 Superchip 能够组合两个 Blackwell GPU,并与英伟达的 Grace 中央处理单元配对,支持 NVLink-C2C 互联。此外,Blackwell 还引入了第二代 Transformer 引擎,增强了对 FP4 和 FP6 精度的兼容性,显著降低了模型运行时的内存占用和带宽需求。此外,还引入了第五代 NVLink 技术,使每个 GPU 的带宽从 900 GB/s 增加到 1800 GB/s。
-总的来说,从 Volta 到 Blackwell,英伟达的 GPU 架构经历了一系列针对深度学习优化的重大创新和升级,每一次进步都在推动深度学习技术的边界。这些架构的发展不仅体现了英伟达在硬件设计方面的前瞻性,也为深度学习的研究和应用提供了强大的计算支持,促进了人工智能技术的快速发展。
+总的来说,从 Volta 到 Blackwell,英伟达的 GPU 架构经历了一系列针对深度学习优化的重大创新和升级,每一次进步都在推动深度学习技术的边界。这些架构的发展不仅体现了英伟达在硬件设计方面的前瞻性,也为深度学习的研究和应用提供了强大的计算支持,促进了 AI 技术的快速发展。
接下来,我们将逐一深入剖析每一代 Tensor Core 的独特之处,以揭示其背后的技术奥秘。
@@ -58,7 +58,7 @@ Volta SM 的结构揭示了其内部工作机制的细节。SM 顶部的 L1 指
因此,在 Volta 架构中,Sub Core 微架构单独提供了一个 Tensor Core 的指令,直接提供给 Warp Scheduler 使用,无需通过 Math Dispatch Unit 进行指令分发。
-除了引入专门针对 AI 框架矩阵计算的 Tensor Core,Volta 架构还减少了指令延迟,进一步提高了计算效率。这些设计和优化使得 Volta 架构对人工智能和深度学习任务有着更快的处理速度。
+除了引入专门针对 AI 框架矩阵计算的 Tensor Core,Volta 架构还减少了指令延迟,进一步提高了计算效率。这些设计和优化使得 Volta 架构对 AI 和深度学习任务有着更快的处理速度。
## 第二代 Tensor Core(Turing)
@@ -186,7 +186,7 @@ ze 通常设置为 32,这意味着每个 scale 会影响 32 个 element。MX F
- 五代 Tensor Core 的演进反映了英伟达对深度学习硬件支持的不断加强,特别是对低精度计算和大规模矩阵运算的优化,为 AI 训练和推理提供了更高效的硬件基础。
-- Blackwell 架构的第五代 Tensor Core 通过支持 FP4 和 FP6 精度计算,以及引入第二代 Transformer 引擎,展现了英伟达面向未来 AI 工作负载需求的前瞻性设计,进一步推动了生成式人工智能和大型语言模型的发展。
+- Blackwell 架构的第五代 Tensor Core 通过支持 FP4 和 FP6 精度计算,以及引入第二代 Transformer 引擎,展现了英伟达面向未来 AI 工作负载需求的前瞻性设计,进一步推动了生成式 AI 和大型语言模型的发展。
## 本节视频
diff --git a/02Hardware/04NVIDIA/03DeepTC.md b/02Hardware/04NVIDIA/03DeepTC.md
index 0e53ab41..0447e479 100644
--- a/02Hardware/04NVIDIA/03DeepTC.md
+++ b/02Hardware/04NVIDIA/03DeepTC.md
@@ -2,7 +2,7 @@
# Tensor Core 深度剖析
-Tensor Core 是用于加速深度学习计算的关键技术,其主要功能是执行深度神经网络中的矩阵乘法和卷积运算。通过利用混合精度计算和张量核心操作,Tensor Core 能够在较短的时间内完成大量矩阵运算,从而显著加快神经网络模型的训练和推断过程。具体来说,Tensor Core 采用半精度(FP16)作为输入和输出,并利用全精度(FP32)进行存储中间结果计算,以确保计算精度的同时最大限度地提高计算效率。
+Tensor Core 是用于加速深度学习计算的关键技术,其主要功能是执行神经网络中的矩阵乘法和卷积运算。通过利用混合精度计算和张量核心操作,Tensor Core 能够在较短的时间内完成大量矩阵运算,从而显著加快神经网络模型的训练和推断过程。具体来说,Tensor Core 采用半精度(FP16)作为输入和输出,并利用全精度(FP32)进行存储中间结果计算,以确保计算精度的同时最大限度地提高计算效率。
与传统的 CUDA Core 相比,Tensor Core 在每个时钟周期能执行多达 4x4x4 的 GEMM(general matrix multiply)运算,相当于同时进行 64 个浮点乘法累加(FMA)运算。这种并行计算的方式极大地提高了计算速度,使得神经网络模型的训练和推断能够更加高效地进行。
diff --git a/02Hardware/04NVIDIA/04BasicNvlink.md b/02Hardware/04NVIDIA/04BasicNvlink.md
index ea2aa3a6..ca7621a5 100644
--- a/02Hardware/04NVIDIA/04BasicNvlink.md
+++ b/02Hardware/04NVIDIA/04BasicNvlink.md
@@ -2,7 +2,7 @@
# 分布式通信与 NVLink
-在进入大模型时代后,大模型的发展已成为人工智能的核心,但训练大模型实际上是一项比较复杂的工作,因为它需要大量的 GPU 资源和较长的训练时间。
+在进入大模型时代后,大模型的发展已成为 AI 的核心,但训练大模型实际上是一项比较复杂的工作,因为它需要大量的 GPU 资源和较长的训练时间。
此外,由于单个 GPU 工作线程的内存有限,并且许多大模型的大小已经超出了单个 GPU 的范围。所以就需要实现跨多个 GPU 的模型训练,这种训练方式就涉及到了分布式通信和 NVLink。当谈及分布式通信和 NVLink 时,我们进入了一个引人入胜且不断演进的技术领域,本节我们将简单介绍分布式通信的原理和实现高效分布式通信背后的技术 NVLink 的演进。
@@ -52,7 +52,7 @@
模型并行是一种解决单个计算节点无法容纳模型所有参数的方法。不同于数据并行,其中每个节点处理完整模型的不同数据子集,模型并行将模型的不同部分分布到多个节点上,每个节点只负责模型的一部分参数。这样可以有效降低单个节点的内存需求和计算负载。
-在模型并行中,深度神经网络的多个层可以被分割并分配给不同的节点。例如,我们可以将连续的几层分为一组,然后将这组层分配给一个节点。这种分层策略使得每个节点只处理分配给它的一部分模型参数,减少了内存和计算资源的使用。然而,简单的模型并行实现可能会导致显著的等待时间和计算资源的低效利用,因为具有顺序依赖的层需要等待前一层的计算完成。
+在模型并行中,神经网络的多个层可以被分割并分配给不同的节点。例如,我们可以将连续的几层分为一组,然后将这组层分配给一个节点。这种分层策略使得每个节点只处理分配给它的一部分模型参数,减少了内存和计算资源的使用。然而,简单的模型并行实现可能会导致显著的等待时间和计算资源的低效利用,因为具有顺序依赖的层需要等待前一层的计算完成。
为了减少这种效率损失,流水并行(Pipeline Parallel, PP)被提出。在流水并行中,一个大的数据批次被分成多个小的微批次(micro-batches),每个微批次的处理速度应该成比例地更快,并且每个 Worker 一旦可用就开始处理下一个微批次,从而加快流水的执行速度。如果有足够的微批次,则可以充分利用 Worker(GPU 卡),并在步骤开始和结束时将空闲时间“气泡”降至最低。
diff --git a/02Hardware/04NVIDIA/05DeepNvlink.md b/02Hardware/04NVIDIA/05DeepNvlink.md
index 54f2ed20..29a845b2 100644
--- a/02Hardware/04NVIDIA/05DeepNvlink.md
+++ b/02Hardware/04NVIDIA/05DeepNvlink.md
@@ -2,7 +2,7 @@
# NVLink 原理剖析
-随着人工智能技术的飞速发展,大模型的参数量已经从亿级跃升至万亿级,这一变化不仅标志着人工智能的显著提升,也对支持这些庞大模型训练的底层硬件和网络架构提出了前所未有的挑战。为了有效地训练这些复杂的模型,需要依赖于大规模的 GPU 服务器集群,它们通过高速网络相互连接,以便进行快速、高效的数据交换。但是,即便是最先进的 GPU 也可能因为网络瓶颈而无法充分发挥其计算潜力,导致整个算力集群的性能大打折扣。这一现象凸显了在构建大规模 GPU 集群时,仅仅增加 GPU 数量并不能线性增加集群的总体算力。相反,随着集群规模的扩大,网络通信的额外开销也会成倍增加,严重影响计算效率。
+随着 AI 技术的飞速发展,大模型的参数量已经从亿级跃升至万亿级,这一变化不仅标志着 AI 的显著提升,也对支持这些庞大模型训练的底层硬件和网络架构提出了前所未有的挑战。为了有效地训练这些复杂的模型,需要依赖于大规模的 GPU 服务器集群,它们通过高速网络相互连接,以便进行快速、高效的数据交换。但是,即便是最先进的 GPU 也可能因为网络瓶颈而无法充分发挥其计算潜力,导致整个算力集群的性能大打折扣。这一现象凸显了在构建大规模 GPU 集群时,仅仅增加 GPU 数量并不能线性增加集群的总体算力。相反,随着集群规模的扩大,网络通信的额外开销也会成倍增加,严重影响计算效率。
在这种背景下,算存互连(即计算与存储之间的连接)和算力互连(即计算单元之间的连接)的重要性变得日益突出。这些互连技术是实现高效大规模并行计算的关键,它们确保数据可以迅速在处理单元和存储设备间传输,最大限度地减少通信延迟,提高整体系统性能。
@@ -16,7 +16,7 @@ PCIe 是一种高速串行计算机扩展总线标准,广泛应用于连接服
英伟达的 NVLink 技术则为 GPU 之间提供了更高速度的数据交换能力,其传输速度远超传统的 PCIe 连接,使得数据在 GPU 之间的传输更加高效。此外,NVSwitch 技术进一步扩展了这种能力,允许多达数十个 GPU 之间实现高速、高带宽的直接连接。这种先进的互连技术极大地提高了大规模 GPU 集群处理复杂模型时的数据交换效率,降低了通信延迟,从而使得万亿级别的模型训练成为可能。
-在英伟达推出其创新的 NVLink 和 NVSwitch 互联技术之前,构建强大计算节点的常规方法是通过 PCIe 交换机将多个 GPU 直接连接到 CPU,如下图所示。这种配置方式依赖于 PCIe 标准,尤其是 PCIe 3.0 版本,它为每个通道提供了大约 32GB/s 的双向带宽。虽然这在当时被视为高效的数据传输方式,但随着人工智能和机器学习领域的快速发展,数据集和模型的规模呈指数级增长,这种传统的 GPU-CPU 互联方式很快成为了系统性能提升的瓶颈。
+在英伟达推出其创新的 NVLink 和 NVSwitch 互联技术之前,构建强大计算节点的常规方法是通过 PCIe 交换机将多个 GPU 直接连接到 CPU,如下图所示。这种配置方式依赖于 PCIe 标准,尤其是 PCIe 3.0 版本,它为每个通道提供了大约 32GB/s 的双向带宽。虽然这在当时被视为高效的数据传输方式,但随着 AI 和机器学习领域的快速发展,数据集和模型的规模呈指数级增长,这种传统的 GPU-CPU 互联方式很快成为了系统性能提升的瓶颈。
随着新一代 GPU 性能的显著提升,它们处理数据的能力大幅增强,但如果互联带宽没有相应的提升,那么这些 GPU 就无法充分发挥其性能潜力。数据传输速度不足意味着 GPU 在处理完当前数据之前,需要等待下一批数据的到来,这导致了计算效率的显著下降。在这种情况下,即使是最先进的 GPU 也无法满足日益增长的计算需求,限制了大规模并行计算系统的整体性能。
diff --git a/02Hardware/04NVIDIA/06DeepNvswitch.md b/02Hardware/04NVIDIA/06DeepNvswitch.md
index 64e921e7..97075532 100644
--- a/02Hardware/04NVIDIA/06DeepNvswitch.md
+++ b/02Hardware/04NVIDIA/06DeepNvswitch.md
@@ -2,7 +2,7 @@
# NV Switch 深度解析
-在当今的高性能计算领域,英伟达的 GPU 技术无疑是一颗璀璨的明星。随着人工智能和机器学习技术的飞速发展,对于计算能力的需求日益增长,GPU 之间的互联互通变得尤为重要。在这样的背景下,英伟达推出了 NVLink 协议,以及基于此技术的多 GPU 互联解决方案——NV Switch。
+在当今的高性能计算领域,英伟达的 GPU 技术无疑是一颗璀璨的明星。随着 AI 和机器学习技术的飞速发展,对于计算能力的需求日益增长,GPU 之间的互联互通变得尤为重要。在这样的背景下,英伟达推出了 NVLink 协议,以及基于此技术的多 GPU 互联解决方案——NV Switch。
本节将深入探讨 NV Switch 的发展历程、工作原理以及其在构建高性能服务器集群中的关键作用,为读者揭开这一技术背后神秘的面纱。
diff --git a/02Hardware/04NVIDIA/srt/04.srt b/02Hardware/04NVIDIA/srt/04.srt
index 7101de4c..9be02e3d 100644
--- a/02Hardware/04NVIDIA/srt/04.srt
+++ b/02Hardware/04NVIDIA/srt/04.srt
@@ -176,7 +176,7 @@ AI 的软硬件通信
45
00:02:01,294 --> 00:02:03,734
-首先整个人工智能的发展
+首先整个 AI 的发展
46
00:02:03,814 --> 00:02:06,454
diff --git a/02Hardware/05Abroad/04TPUIntrol.md b/02Hardware/05Abroad/04TPUIntrol.md
index 6dac0d63..19e8253f 100644
--- a/02Hardware/05Abroad/04TPUIntrol.md
+++ b/02Hardware/05Abroad/04TPUIntrol.md
@@ -2,7 +2,7 @@
# 谷歌 TPU 历史发展
-在本节中,我们将深入探讨谷歌的 Tensor Processing Unit(TPU)的发展历程及其在深度学习和人工智能领域的应用。TPU 是谷歌为加速机器学习任务而设计的专用集成电路(ASIC),自首次推出以来,TPU 经历了多次迭代升级,包括 TPU v1、v2、v3 和 v4,以及 Edge TPU 和谷歌 Tensor 等产品。
+在本节中,我们将深入探讨谷歌的 Tensor Processing Unit(TPU)的发展历程及其在深度学习和 AI 领域的应用。TPU 是谷歌为加速机器学习任务而设计的专用集成电路(ASIC),自首次推出以来,TPU 经历了多次迭代升级,包括 TPU v1、v2、v3 和 v4,以及 Edge TPU 和谷歌 Tensor 等产品。
这些 TPU 芯片在制程技术、芯片大小、内存容量、时钟速度、内存带宽和热设计功耗等方面都有显著的提升,为数据中心和边缘设备提供了强大的计算能力。
@@ -12,7 +12,7 @@
早在 2006 年,谷歌的内部就讨论过在自家的数据中心中部署图形处理器(GPU)、现场可编程门阵列(FPGA)或自研专用集成电路(ASIC)的可能性。但当时能够在特殊硬件上运行的少数应用程序可以几乎 0 代价的利用当时谷歌大型数据中心的过剩算力完成,那什么比免费的午餐更有吸引力呢?于是此课程并没有落地。
-但是在 2013 年,风向突变,当时谷歌的研究人员做出预测:如果人们每天使用语音搜索并通过深度神经网络(DNN)进行 3 分钟的语音识别,那么当时谷歌的数据中心需要双倍的算力才能满足日益增长的计算需求,而仅仅依靠传统 CPU 来满足这种需求是非常昂贵的。于是,在这个背景下,谷歌开始了 TPU 的设计。
+但是在 2013 年,风向突变,当时谷歌的研究人员做出预测:如果人们每天使用语音搜索并通过神经网络(DNN)进行 3 分钟的语音识别,那么当时谷歌的数据中心需要双倍的算力才能满足日益增长的计算需求,而仅仅依靠传统 CPU 来满足这种需求是非常昂贵的。于是,在这个背景下,谷歌开始了 TPU 的设计。
通常一个芯片的开发需要几年的时间,然而谷歌不愧是谷歌,TPU 从立项到大规模部署只用了 15 个月。TPU 课程的领头人 Norm Jouppi 说到:“芯片设计过程异常迅速,这本身就是一项非凡的成就。令人惊叹的是,我们首批交付的硅片无需进行任何错误修正或掩模的更改。考虑到在整个芯片构建过程中,我们还在同步进行团队的组建,紧接着迅速招募 RTL(寄存器传输级)设计专家,并且急切地补充设计验证团队,整个工作节奏非常紧张。”
@@ -66,7 +66,7 @@
在这个 AI 爆发的大时代,谷歌在移动端的 AI 掷下豪赌,对于最新发布的 Tensor G3,谷歌 Silicon 的高级总监 Monika Gupta 是这样评价的:“我们的合作与 Tensor 一直不仅仅局限于追求速度和性能这样的传统评价标准。我们的目标是推动移动计算体验的进步。
-在最新的 Tensor G3 芯片中,我们对每个关键的系统组件都进行了升级,以便更好地支持设备上的生成式人工智能技术。这包括最新型号的 ARM 中央处理器、性能更强的图形处理器、全新的图像信号处理器和图像数字信号处理器,以及我们最新研发的,专门为运行谷歌的神经网络模型而量身打造的 TPU。”
+在最新的 Tensor G3 芯片中,我们对每个关键的系统组件都进行了升级,以便更好地支持设备上的生成式 AI 技术。这包括最新型号的 ARM 中央处理器、性能更强的图形处理器、全新的图像信号处理器和图像数字信号处理器,以及我们最新研发的,专门为运行谷歌的神经网络模型而量身打造的 TPU。”
![Alt text](images/04TPUIntro03.png)
@@ -181,7 +181,7 @@ TPU v3 相较于其前身 TPU v2 有了显著的提升。这一代 TPU 在晶体
## 小结与思考
-- 谷歌 TPU 是专为深度学习和人工智能任务设计的专用集成电路(ASIC),自 2016 年推出以来,已经经历了多次迭代升级,显著提升了性能和能效。
+- 谷歌 TPU 是专为深度学习和 AI 任务设计的专用集成电路(ASIC),自 2016 年推出以来,已经经历了多次迭代升级,显著提升了性能和能效。
- TPU 通过采用低精度计算、脉动阵列和专用硬件设计等技术,实现了高效的矩阵运算加速,同时简化的硬件架构降低了成本和提高了良品率。
diff --git a/02Hardware/05Abroad/08TPU4.md b/02Hardware/05Abroad/08TPU4.md
index f6f8985c..2c791767 100644
--- a/02Hardware/05Abroad/08TPU4.md
+++ b/02Hardware/05Abroad/08TPU4.md
@@ -69,7 +69,7 @@ TPU v4 Pod 提供了 exaflops 的算力,原因就是因为其强大的芯片
![TPU v4 Arch](images/08TPU405.jpeg)
-我们细致讲一下这个 Cube。下图是一个 Cube 的另一种展开方式。Cube 如果要实现 6 面连接,每个面需要 16 条链路,每个 Cube 总共有 96 条光链路连接到 OCS 上。为了提供整个 3D Torus 的连接,相对的侧面需要连接到相同的 OCS 上面(图中不同色块和 Cube 之间的长环)。因此,每个 Cube 会连接到 $6 \times 16 \div 4 = 48$ 个 OCS 上。这 48 个 OCS 一共连接来自 64 个 Cube 的 48 对光缆,总共并联 4096 个 TPU v4 芯片。所以,如果想要搭建一个 TPU v4 集群,就需要购置 4096 片 TPU v4 和 48 个 OCS 光互联交换器,因此成本相当之高,而幸运的是,谷歌最不缺的就是钱。当然,在当前这个时间点,在美一家公司和投资人都愿意无上限地为模型花钱的时代,传统大厂在成本投入上的优势相对于新兴的人工智能公司(例如 OpenAI 和 Anthropic)越来越少,而芯片的产能甚至是电力资源这种物理上的限制反而成了目前各家迭代模型最大的瓶颈。
+我们细致讲一下这个 Cube。下图是一个 Cube 的另一种展开方式。Cube 如果要实现 6 面连接,每个面需要 16 条链路,每个 Cube 总共有 96 条光链路连接到 OCS 上。为了提供整个 3D Torus 的连接,相对的侧面需要连接到相同的 OCS 上面(图中不同色块和 Cube 之间的长环)。因此,每个 Cube 会连接到 $6 \times 16 \div 4 = 48$ 个 OCS 上。这 48 个 OCS 一共连接来自 64 个 Cube 的 48 对光缆,总共并联 4096 个 TPU v4 芯片。所以,如果想要搭建一个 TPU v4 集群,就需要购置 4096 片 TPU v4 和 48 个 OCS 光互联交换器,因此成本相当之高,而幸运的是,谷歌最不缺的就是钱。当然,在当前这个时间点,在美一家公司和投资人都愿意无上限地为模型花钱的时代,传统大厂在成本投入上的优势相对于新兴的 AI 公司(例如 OpenAI 和 Anthropic)越来越少,而芯片的产能甚至是电力资源这种物理上的限制反而成了目前各家迭代模型最大的瓶颈。
![TPU v4 Arch](images/08TPU406.jpeg)
@@ -139,7 +139,7 @@ TPU v4 Pod 显示出了在成本、功耗和速度方面的优势,但是,尽
- 模型的演进总是要比芯片的设计迭代更快,随着大模型涌现,支持主要依赖 AI 计算集群,而非提高单芯片能力,TPU v4 对于高效互联和规模化的支持。
-- 算法-芯片协同设计是 TPU v4 的灵魂,人工智能芯片与算法之间的结合继续保持紧密关系。包括对于新数据格式(HF32/BF16)支持,对于稀疏计算支持,对于模型关键算法专用加速器。
+- 算法-芯片协同设计是 TPU v4 的灵魂, AI 芯片与算法之间的结合继续保持紧密关系。包括对于新数据格式(HF32/BF16)支持,对于稀疏计算支持,对于模型关键算法专用加速器。
- Benchmark 之外很多生产环境的性能指标都无法直观评测,XLA 编译器的优化效益也难以直观评测。到底 TPU v4 是否如网上纰漏的信息那么强悍有待验证。
diff --git a/02Hardware/06Domestic/04Cambricon.md b/02Hardware/06Domestic/04Cambricon.md
index 446afdd6..16fe773e 100644
--- a/02Hardware/06Domestic/04Cambricon.md
+++ b/02Hardware/06Domestic/04Cambricon.md
@@ -34,7 +34,7 @@ IP 终端 | 边缘端 | 云端推理 | 云端训练
“云边端”一体化是寒武纪的一个重要发展战略,根据一些公开的信息可知,其含义主要是:云、边、端三种场景对于芯片的运算能力和功耗等特性有着不同要求,单一品类的智能芯片难以满足实际应用的需求。
-因此寒武纪面向云、边、端三大场景分别研发了三种类型的芯片产品,分别为云端智能芯片及加速卡、边缘智能芯片及加速卡、IP 授权及软件。与此同时,寒武纪为云边端全系列智能芯片与处理器产品提供统一的平台级基础系统软件 Cambricon Neuware(包含软件开发工具链等),打破了不同场景之间的软件开发壁垒,兼具高性能、灵活性和可扩展性的优势,可让同一人工智能应用程序便捷高效地运行在寒武纪云边端系列化芯片与处理器产品之上,从而使得各种场景下 AI 模型迁移更方便。
+因此寒武纪面向云、边、端三大场景分别研发了三种类型的芯片产品,分别为云端智能芯片及加速卡、边缘智能芯片及加速卡、IP 授权及软件。与此同时,寒武纪为云边端全系列智能芯片与处理器产品提供统一的平台级基础系统软件 Cambricon Neuware(包含软件开发工具链等),打破了不同场景之间的软件开发壁垒,兼具高性能、灵活性和可扩展性的优势,可让同一 AI 应用程序便捷高效地运行在寒武纪云边端系列化芯片与处理器产品之上,从而使得各种场景下 AI 模型迁移更方便。
## MLU03 核心架构
@@ -46,7 +46,7 @@ IP 终端 | 边缘端 | 云端推理 | 云端训练
![产品形态 1](images/cambricon07.png)
-MLU370-X8 智能加速卡是全面升级的数据中心训推一体 AI 加速卡,基于寒武纪全新一代思元 370 芯片,接口为 PCIe 4.0 X16,是全高全长双宽(FHFL-Dual-Slot)的标准 PCIe 加速卡,适用于业内最新的 CPU 平台,可轻松搭载于最先进的人工智能服务器,快速实现 AI 算力的部署。MLU370-X8 加速卡功耗为 250W,可为计算机视觉、自然语言处理、语音等多样化的人工智能应用提供强大算力支持。
+MLU370-X8 智能加速卡是全面升级的数据中心训推一体 AI 加速卡,基于寒武纪全新一代思元 370 芯片,接口为 PCIe 4.0 X16,是全高全长双宽(FHFL-Dual-Slot)的标准 PCIe 加速卡,适用于业内最新的 CPU 平台,可轻松搭载于最先进的 AI 服务器,快速实现 AI 算力的部署。MLU370-X8 加速卡功耗为 250W,可为计算机视觉、自然语言处理、语音等多样化的 AI 应用提供强大算力支持。
![产品形态 2](images/cambricon08.png)
@@ -58,7 +58,7 @@ MLU370-X8 通过 MLU-Link™高速网络,组建大规模训练集群,并实
>
> 芯粒集成就是这样的前沿技术。芯粒是指按特定功能进行分解的小芯片,芯粒集成技术则是把制程代际和功能不同的芯粒像搭积木一样组合形成一个芯片去使用。
-寒武纪的 MLU 硬件是面向人工智能应用的领域专用处理器,针对人工智能算法的计算特性和访存特性,设计了高效的指令集、流水线、运算部件和访存部件。与通用处理器相比,MLU 硬件在处理人工智能任务时有更高的性能、灵活性和能效比。MLU 硬件针对人工智能中不同特征的访存数据流设计专用的数据通路和运算部件,实现了不同的数据流之间的隔离;同时向软件暴露了灵活的片上存储空间访问功能,提高了处理效率。
+寒武纪的 MLU 硬件是面向 AI 应用的领域专用处理器,针对 AI 算法的计算特性和访存特性,设计了高效的指令集、流水线、运算部件和访存部件。与通用处理器相比,MLU 硬件在处理 AI 任务时有更高的性能、灵活性和能效比。MLU 硬件针对 AI 中不同特征的访存数据流设计专用的数据通路和运算部件,实现了不同的数据流之间的隔离;同时向软件暴露了灵活的片上存储空间访问功能,提高了处理效率。
寒武纪硬件的基本组成单元是 MLU Core。每个 MLU Core 是具备完整计算、IO 和控制功能的处理器核心,可以独立完成一个计算任务,也可以与其他 MLU Core 协作完成一个计算任务。每 4 个 MLU Core 核心构成一个 Cluster,在 MLUv02 以及后续架构中,每个 Cluster 内还会包含一个额外的 Memory Core 和一块被 Memory Core 和 4 个 MLU Core 共享的 SRAM(Shared RAM,共享存储单元)。Memory Core 不能执行向量和张量计算指令,只能用于 SRAM 与 DDR (Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器,DDR SDRAM 通常简称为 DDR)和 MLU Core 之间的数据传输。
@@ -74,7 +74,7 @@ MLU370-X8 通过 MLU-Link™高速网络,组建大规模训练集群,并实
### BANG C
-Cambricon BANG 异构计算平台的核心组件是面向 MLU 硬件的编译器工具链,目前支持通过 C/C++ 的扩展语言 Cambricon BANG C 和基于 Python 的扩展语言 Cambricon BANGPy 对 MLU 硬件进行编程。编译器工具链和编程语言为任务划分、并行处理、数据通信和同步机制等提供底层支持,使用户可以专注于编写应用的处理逻辑本身。利用 Cambricon BANG C 和 Cambricon BANGPy 编程语言可以开发各类人工智能应用和算法库,并最终形成完整的人工智能解决方案。
+Cambricon BANG 异构计算平台的核心组件是面向 MLU 硬件的编译器工具链,目前支持通过 C/C++ 的扩展语言 Cambricon BANG C 和基于 Python 的扩展语言 Cambricon BANGPy 对 MLU 硬件进行编程。编译器工具链和编程语言为任务划分、并行处理、数据通信和同步机制等提供底层支持,使用户可以专注于编写应用的处理逻辑本身。利用 Cambricon BANG C 和 Cambricon BANGPy 编程语言可以开发各类 AI 应用和算法库,并最终形成完整的 AI 解决方案。
Cambricon BANG C 在 C/C++ 语言的基础上,增加了 Cambricon BANG 异构并行编程模型必须的语法特性、计算原语、数据类型和内建变量支持。此外,Cambricon BANG C 针对异构编程环境的特点对 C/C++ 进行了简化,禁用了一些不适合异构编程环境的 C/C++ 特性。Cambricon BANG C 程序可以使用 CNGDB 进行调试,有关 CNGDB 的使用方法可以参考《寒武纪 CNGDB 用户手册》。
@@ -121,7 +121,7 @@ Cambricon CNNL 主要支持丰富的基本算子。
### MagicMind
-MagicMind 是面向寒武纪 MLU 的推理加速引擎。MagicMind 能将人工智能框架(TensorFlow、PyTorch、Caffe 与 ONNX 等)训练好的算法模型转换成 MagicMind 统一计算图表示,并提供端到端的模型优化、代码生成以及推理业务部署能力。MagicMind 致力于为用户提供高性能、灵活、易用的编程接口以及配套工具,让用户能够专注于推理业务开发和部署本身,而无需过多关注底层硬件细节。
+MagicMind 是面向寒武纪 MLU 的推理加速引擎。MagicMind 能将 AI 框架(TensorFlow、PyTorch、Caffe 与 ONNX 等)训练好的算法模型转换成 MagicMind 统一计算图表示,并提供端到端的模型优化、代码生成以及推理业务部署能力。MagicMind 致力于为用户提供高性能、灵活、易用的编程接口以及配套工具,让用户能够专注于推理业务开发和部署本身,而无需过多关注底层硬件细节。
如果有用 MLU、GPU、CPU 训练好的算法模型,可以使用 MagicMind 快速地实现在 MLU 上部署推理业务。MagicMind 的优势在于它能为 MLU 上的推理业务提供:
@@ -173,7 +173,7 @@ CNCL(Cambricon Communications Library,寒武纪通信库)是面向 MLU 设
1. PyTorch
-为支持寒武纪 MLU,寒武纪定制了开源人工智能编程框架 PyTorch(以下简称 Cambricon PyTorch)。
+为支持寒武纪 MLU,寒武纪定制了开源 AI 框架 PyTorch(以下简称 Cambricon PyTorch)。
Cambricon PyTorch 借助 PyTorch 自身提供的设备扩展接口将 MLU 后端库中所包含的算子操作动态注册到 PyTorch 中,MLU 后端库可处理 MLU 上的张量和算子的运算。Cambricon PyTorch 会基于 Cambricon CNNL 库在 MLU 后端实现一些常用算子,并完成一些数据拷贝。为了能在 Torch 模块方便使用 MLU 设备,Cambricon PyTorch 在 PyTorch 后端进行了以下扩展:
@@ -205,7 +205,7 @@ CNCodec-V3(Cambricon Codec Library,寒武纪编解码库)是一个基于
3. CNStream
-CNStream 是面向寒武纪开发平台的数据流处理 SDK,基于模块化和流水线的思想,提供了一套基于 C++11 的类和接口来支持流处理多路并发的 Pipeline 框架。用户可以根据 CNStream 提供的接口,开发自定义模块,并通过模块之间相互连接,实现自己的业务处理流程。CNStream 能够大大简化寒武纪人工智能平台提供的推理和其他处理,如视频解码、图像前处理的集成。也能够在兼顾灵活性的同时,充分发挥寒武纪硬件解码和人工智能算法的运算性能。
+CNStream 是面向寒武纪开发平台的数据流处理 SDK,基于模块化和流水线的思想,提供了一套基于 C++11 的类和接口来支持流处理多路并发的 Pipeline 框架。用户可以根据 CNStream 提供的接口,开发自定义模块,并通过模块之间相互连接,实现自己的业务处理流程。CNStream 能够大大简化寒武纪 AI 平台提供的推理和其他处理,如视频解码、图像前处理的集成。也能够在兼顾灵活性的同时,充分发挥寒武纪硬件解码和 AI 算法的运算性能。
### CNServing
diff --git a/02Hardware/06Domestic/07AscendBase.md b/02Hardware/06Domestic/07AscendBase.md
deleted file mode 100644
index 8009bc9b..00000000
--- a/02Hardware/06Domestic/07AscendBase.md
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-# 昇腾 AI 处理器
-
-本节将会介绍华为昇腾 AI 处理器的架构与卷积加速原理。昇腾 AI 处理器是华为基于达芬奇架构专为人工智能领域设计的处理器,它支持云边端一体化的全栈全场景解决方案,具有高能效比和强大的 3D Cube 矩阵计算单元,支持多种计算模式和混合精度计算。
-
-昇腾 AI 处理器的架构包括了 AI Core、AI CPU、多层级片上缓存/缓冲区和数字视觉预处理模块 DVPP,这些组件通过 CHI 协议的环形总线实现数据共享和一致性。此外,本节还将探讨卷积加速原理,即昇腾 AI 处理器如何通过软硬件优化实现高效的卷积计算加速,包括矩阵计算单元和数据缓冲区的高效组合以及灵活的数据通路设计,以满足不同深度神经网络的计算要求。
-
-## 昇腾 AI 处理器
-
-参考文献:《昇腾 AI 处理器架构与编程——深入理解 CANN 技术原理与应用》——梁晓峣,2019
-
-华为公司针对人工智能领域专用计算量身打造了“达芬奇架构”,并于 2018 年推出了基于“达芬奇架构”的昇腾 AI 处理器,开启了华为的人工智能之旅。
-
-从基础研究出发,立足于自然语言处理、机器视觉、自动驾驶等领域,昇腾 AI 处理器致力于打造面向云边端一体化的全栈全场景解决方案,同时为了配合其应用目标,打造了异构计算架构 CANN(Computer Architecture for Nerual Network),为昇腾 AI 处理器进行加速计算。全栈指技术方面,包括 IP、芯片、加速计算、AI 框架、应用使能等的全栈式设计方案。全场景包括公有云、私有云、各种边缘计算、物联网行业终端及消费者终端设备。围绕全栈全场景,华为正以昇腾 AI 处理器为核心,以算力为驱动,以工具为抓手,全力突破人工智能发展的极限。
-
-自 2018 年伊始,昇腾 AI 处理器的训练和推理系列型号陆续推出。训练系列的处理器主要应用于云端,可以为深度学习的训练算法提供强大算力。推理系列的处理器则是面向移动计算场景的强算力人工智能片上系统(SoC,System on Chip)。
-
-在设计上,昇腾 AI 处理器意图突破目前人工智能芯片功耗、运算性能和效率的约束,目的是极大提升能效比。昇腾 AI 处理器采用了华为自研的达芬奇架构,专门针对深度神经网络运算特征而量身定做,以高性能的 3D Cube 矩阵计算单元为基础,实现算力和能效比的大幅度提升。每个矩阵计算单元可以由一条指令完成 4096 次成家计算,并且处理器内部还支持多维计算模式,如标量、矢量、矩阵等,打破了其它人工智能专用芯片的局现象,增加了计算的灵活度。同时支持多种类混合精度计算,在实现推理应用的同时也强力支持了训练的数据精度要求。
-
-达芬奇架构的统一性体现在多个应用场景的良好适配上,覆盖高、中、低全场景,一次开发可支持多场景部署、迁移和协同。从架构上提升了软件效率。功耗优势也是该架构的一个显著特点,统一的架构可以支持从几十毫瓦到几百瓦的芯片,可以进行多核灵活扩展,在不同应用场景下发挥出芯片的能耗优势。
-
-达芬奇架构指令集采用了 CISC 指令且具有高度灵活性,可以应对日新月异、变化多端的新算法和新模型。高效的运算密集型 CISC 指令含有特殊专用指令,专门为神经网络打造,助力人工智能领域新模型的研发,同时帮助开发者更快速的实现新业务的部署,实现在线升级,促进行业发展。昇腾 AI 处理器在全业务流程加速方面,采用场景化视角,系统性设计,内置多种硬件加速器。昇腾 AI 处理器拥有丰富的 IO 接口,支持灵活可扩展和多种形态下的加速卡设计组合,很好应对云端、终端的算力和能效挑战,可以为各场景的应用强劲赋能。
-
-## AI 处理器架构
-
-昇腾 AI 处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像、视频、语音、文字处理相关的应用场景。上图是早期昇腾其处理器的逻辑架构,其主要的架构组成部件包括特制的计算单元、大容量的存储单元和相应的控制单元。该处理器大致可以划为:芯片系统控制 CPU(Control CPU),AI 计算引擎(包括 AI Core 和 AI CPU),多层级的片上系统缓存(Cache)或缓冲区(Buffer),数字视觉预处理模块(Digital Vision Pre-Processing,DVPP)等。芯片可以采用 LPDDR4 高速主存控制器接口,价格较低。目前主流 SoC 芯片的主存一般由 DDR(Double Data Rate)或 HBM(High Bandwidth Memory)构成,用来存放大量的数据。HBM 相对于 DDR 存储带宽较高,是行业的发展方向。其它通用的外设接口模块包括 USB、磁盘、网卡、GPIO、I2C 和电源管理接口等。
-
-![昇腾 AI 处理器逻辑图](images/ascendarch01.png)
-
-当该处理器作为计算服务器的加速卡使用时,会通过 PCIe 总线接口和服务器其它单元实现数据互换。以上所有这些模块通过基于 CHI 协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。
-
-昇腾 AI 处理器集成了多个 ARM 架构的 CPU 核心,每个核心都有独立的 L1 和 L2 缓存,所有核心共享一个片上 L3 缓存。集成的 CPU 核心按照功能可以划分为专用于控制芯片整体运行的主控 CPU 和专用于承担非矩阵类复杂计算的 AI CPU。两类任务占用的 CPU 核数可由软件根据系统实际运行情况动态分配。
-
-除了 CPU 之外,该处理器真正的算力担当是采用了达芬奇架构的 AI Core。这些 AI Core 通过特别设计的架构和电路实现了高通量、大算力和低功耗,特别适合处理深度学习中神经网络必须的常用计算如矩阵相乘等。目前该处理器能对整数或浮点数提供强大的乘加计算力。由于采用了模块化的设计,可以很方便的通过叠加模块的方法提高后续处理器的计算力。
-
-针对深度神经网络参数量大、中间值多的特点,该处理器还特意为 AI 计算引擎配备了一定容量的片上缓冲区(On-Chip Buffer),提供高带宽、低延迟、高效率的数据交换和访问。能够快速访问到所需的数据对于提高神经网络算法的整体性能至关重要,同时将大量需要复用的中间数据缓存在片上对于降低系统整体功耗意义重大。为了能够实现计算任务在 AI Core 上的高效分配和调度,还特意配备了一个专用 CPU 作为任务调度器(Task Scheduler,TS)。该 CPU 专门服务于 AI Core 和 AI CPU,而不承担任何其他的事务和工作。
-
-数字视觉预处理模块主要完成图像视频的编解码,视频处理,对图像支持 JPEG 和 PNG 等格式的处理。来自主机端存储器或网络的视频和图像数据,在进入昇腾 AI 处理器的计算引擎处理之前,需要生成满足处理要求的输入格式、分辨率等,因此需要调用数字视觉预处理模块进行预处理以实现格式和精度转换等要求。数字视觉预处理模块主要实现视频解码(Video Decoder,VDEC),视频编码(Video Encoder,VENC),JPEG 编解码(JPEG Decoder/Encoder,JPEGD/E),PNG 解码(PNG Decoder,PNGD)和视觉预处理(Vision Pre-Processing Core,VPC)等功能。图像预处理可以完成对输入图像的上/下采样、裁剪、色调转换等多种功能。数字视觉预处理模块采用了专用定制电路的方式来实现高效率的图像处理功能,对应于每一种不同的功能都会设计一个相应的硬件电路模块来完成计算工作。在数字视觉预处理模块收到图像视频处理任务后,会读取需要处理的图像视频数据并分发到内部对应的处理模块进行处理,待处理完成后将数据写回到内存中等待后续步骤。
-
-### 昇腾 910
-![昇腾 AI 处理器逻辑图](images/ascendarch18.png)
-
-昇腾 910 处理器的目标场景是云端的推理和训练,其架构如上图所示,包含 Davinci Core、DVPP、HBM、DDR4 等组件。昇腾 910 处理器采用了芯粒(chiplet)技术,包含六个 die: 1 个计算芯粒(包含 32 个 Davinci Core、16 个 CPU Core 和 4 个 DVDP),1 个 IO 芯粒,和 4 个 HBM 芯粒(总计 1.2TB/s 带宽)。针对云端训练和推理场景,昇腾 910 处理器做的优化包括:
-1. 高算力: 训练场景通常使用的 Batch Size 较大,因此采用最高规格的 Ascend-Max,每个 Core 每个周期可以完成 16*16*16=4096 次 FP16 乘累加
-2. 高 Load/Store 带宽: 训练场景下计算反向 SGD 时,会有大量对 Last Level Cache 和片外缓存的访问,因此需要配备较高的 Load/Store 带宽,因此昇腾 910 除了 DDR 还采用了 HBM 技术。
-3. 100G NIC: 随着 DNN 的模型尺寸愈发庞大,单机单卡甚至单机多卡已经不能满足云端训练的需求,为了支持多卡多机组成集群,昇腾 910 集成了支持 ROCE V2 协议的 100G NIC 用于跨服务器传递数据,使得可以使用昇腾 910 组成万卡集群。
-4. 高吞吐率的数字视觉与处理器(DVPP): DVPP 用于 JPEG、PNG 格式图像编解码、图像预处理(对输入图像上下采样、裁剪、色调转换等)、视频编解码,为了适配云端推理场景,DVPP 最高支持 128 路 1080P 视频解码。
-
-### 昇腾 310
-![昇腾 AI 处理器逻辑图](images/ascendarch17.png)
-昇腾 310 处理器的目标场景是边缘推理,比如智慧城市、智慧新零售、机器人、工业制造等,其架构如上图所示,主要包含 Davinci Core、DVPP、LPDDR4 等组件。相比昇腾 910,昇腾 310 的定制化 IP 相对较少,但是提供了更多外设接口。由于在边缘推理场景下 batch size 通常只有 1,因此昇腾 310 选择了较小的矩阵计算维度(m = 4, n = 16, k = 16)以实现$C_{mn} = A_{mk}\times B_{kn}$。由于在矩阵运算中$M = batch\_size \times output\_hight \times output\_width$, 当 batch size = 1 时,将 m 设置成 4 可以提升乘累加利用率。
-
-## 卷积加速原理
-
-在深度神经网络中,卷积计算一直扮演着至关重要的角色。在一个多层的卷积神经网络中,卷积计算的计算量往往是决定性的,将直接影响到系统运行的实际性能。昇腾 AI 处理器作为人工智能加速器自然也不会忽略这一点,并且从软硬件架构上都对卷积计算进行了深度的优化。
-
-![卷积计算过程](images/ascendarch15.png)
-
-上图展示的是一个典型的卷积层计算过程,其中**X**为输入特征矩阵,**W**为权重矩阵;**b**为偏置值;**Y**o 为中间输出;Y 为输出特征矩阵,GEMM 表示通用矩阵乘法。输入特征矩阵**X**和**W**先经过 Img2Col 展开处理后得到重构矩阵 XI2C 和 WI2C 通过矩阵**X**I2C 和矩阵**W**I2C 进行矩阵相乘运算后得到中间输出矩阵**Y**o;接着累加偏置**b**,得到最终输出特征矩阵**Y**,这就完成了一个卷积神经网络中的卷积层处理。
-
-利用 AI Core 来加速通用卷积计算,总线接口从核外 L2 缓冲区或者直接从内存中读取卷积程序编译后的指令,送入指令缓存中,完成指令预取等操作,等待标量指令处理队列进行译码。如果标量指令处理队列当前无正在执行的指令,就会即刻读入指令缓存中的指令,并进行地址和参数配置,之后再由指令发射模块按照指令类型分别送入相应的指令队列进行执行。在卷积计算中首先发射的指令是数据搬运指令,该指令会被发送到存储转换队列中,再最终转发到存储转换单元中。
-
-![典型卷积数据流](images/ascendarch16.png)
-
-卷积整个数据流如上图所示,如果所有数据都在 DDR 或 HBM 中,存储转换单元收到读取数据指令后,会将矩阵***X***和***W***由总线接口单元从核外存储器中由数据通路 1 读取到输入缓冲区中,并且经过数据通路 3 进入存储转换单元,由存储转换单元对***X***和***W***进行补零和 Img2Col 重组后得到***X***I2C 和***W***I2C 两个重构矩阵,从而完成卷积计算到矩阵计算的格式变换。在格式转换的过程中,存储转换队列可以发送下一个指令给存储转换单元,通知存储转换单元在矩阵转换结束后将***X***I2C 和***W***I2C 经过数据通路 5 送入矩阵计算单元中等待计算。根据数据的局部性特性,在卷积过程中如果权重***W***I2C 需要重复多次计算,可以将权重经过数据通路 17 固定在输入缓冲区中,在每次需要用到该组权重时再经过数据通路 18 传递到矩阵计算单元中。在格式转换过程中,存储转换单元还会同时将偏置数据从核外存储经由数据通路 4 读入到输出缓冲区中,经过数据通路 6 由存储转换单元将偏置数据从原始的向量格式重组成矩阵后,经过数据通路 7 转存入输出缓冲区中,再经过数据通路 9 存入累加器中的寄存器中,以便后续利用累加器进行偏置值累加。
-
-当左、右矩阵数据都准备好了以后,矩阵运算队列会将矩阵相乘指令通过数据通路 5 发送给矩阵计算单元。***X***I2C 和***W***I2C 矩阵会被分块组合成 16\*16 的矩阵,由矩阵计算单元进行矩阵乘法运算。如果输入矩阵较大则可能会重复以上步骤多次并累加得到***Y***o 中间结果矩阵,存放于矩阵计算单元中。矩阵相乘完成后如果还需要处理偏置值,累加器会收到偏置累加指令,并从输出缓冲区中通过数据通路 9 读入偏置值,同时经过数据通路 8 读入矩阵计算单元中的中间结果***Y***o 并累加,最终得到输出特征矩阵***Y***,经过数据通路 10 被转移到输出缓冲区中等待后续指令进行处理。
-
-AI Core 通过矩阵相乘完成了网络的卷积计算,之后向量执行单元会收到池化和激活指令,输出特征矩阵***Y***就会经过数据通路 12 进入向量计算单元进行池化和激活处理,得到的结果***Y***会经过数据通路 13 存入输出缓冲区中。向量计算单元能够处理激活函数等一些常见的特殊计算,并且可以高效实现降维的操作,特别适合做池化计算。在执行多层神经网络计算时,***Y***会被再次从输出缓冲区经过数据通路 14 转存到输入缓冲区中,作为输入重新开始下一层网络的计算。
-
-达芬奇架构针对通用卷积的计算特征和数据流规律,采用功能高度定制化的设计,将存储、计算和控制单元进行有效的结合,在每个模块完成独立功能的同时实现了整体的优化设计。AI Core 高效组合了矩阵计算单元与数据缓冲区,缩短了存储到计算的数据传输路径,降低延时。
-
-同时 AI Core 在片上集成了大容量的输入缓冲区和输出缓冲区,一次可以读取并缓存充足的数据,减少了对核外存储系统的访问频次,提升了数据搬移的效率。同时各类缓冲区相对于核外存储系统具有较高的访问速度,大量片上缓冲区的使用也极大提升了计算中实际可获得的数据带宽。
-
-同时针对深度神经网络的结构多样性,AI Core 采用了灵活的数据通路,使得数据在片上缓冲区、核外存储系统、存储转换单元以及计算单元之间可以快速流动和切换,从而满足不同结构的深度神经网络的计算要求,使得 AI Core 对各种类型的计算具有一定的通用性。
-
-## 小结与思考
-
-- 昇腾 AI 处理器的创新:华为推出的昇腾 AI 处理器基于达芬奇架构,专为 AI 领域设计,提供云边端一体化的全栈全场景解决方案,以高能效比和强大的 3D Cube 矩阵计算单元为特点,支持多种计算模式和混合精度计算。
-
-- 昇腾 AI 处理器架构:昇腾 AI 处理器是一个 SoC,集成了特制的计算单元、存储单元和控制单元,包括 AI Core、AI CPU、多层级片上缓存/缓冲区和数字视觉预处理模块 DVPP,通过 CHI 协议的环形总线实现模块间的数据共享和一致性。
-
-- 卷积加速原理:昇腾 AI 处理器针对卷积计算进行软硬件优化,利用 AI Core 的矩阵计算单元和数据缓冲区,缩短数据传输路径,降低延时,并通过灵活的数据通路满足不同深度神经网络的计算要求,实现高效能的卷积计算加速。
\ No newline at end of file
diff --git a/01Introduction/05Ascend.md b/02Hardware/06Domestic/08AscendBase.md
similarity index 75%
rename from 01Introduction/05Ascend.md
rename to 02Hardware/06Domestic/08AscendBase.md
index ba4fba28..4aad78f0 100644
--- a/01Introduction/05Ascend.md
+++ b/02Hardware/06Domestic/08AscendBase.md
@@ -1,10 +1,12 @@
-# 昇腾 AI 全栈架构介绍
+# 昇腾 AI 架构介绍
昇腾计算的基础软硬件是产业的核⼼,也是 AI 计算能⼒的来源。华为,作为昇腾计算产业⽣态的⼀员,是基础软硬件系统的核⼼贡献者。昇腾计算软硬件包括硬件系统、基础软件和应⽤使能等。
-而本书介绍的 AI 系统整体的架构,则是对应与昇腾 AI 产业的全栈架构较为相似。因此这里以昇腾计算产业作为例子,来以实际工业界计算产业中的昇腾作为例子进行阐述。其他计算产业如英伟达、寒武纪、摩尔线程等全栈架构基本与 AI 系统也较为相似。
+而本书介绍的 AI 系统整体架构(如图所示),则是对应与昇腾 AI 产业的全栈架构较为相似。因此这里以昇腾计算产业作为例子,来以实际工业界计算产业中的昇腾作为例子进行阐述。其他计算产业如英伟达、寒武纪、摩尔线程等全栈架构基本与 AI 系统也较为相似。
+
+![](./images/08AscendBase01.png)
## 昇腾计算产业介绍
@@ -16,15 +18,47 @@
### AI 硬件系统
-昇腾计算的 AI 硬件系统主要包括有:
+如图所示为华为昇腾系列产品,覆盖边缘推理、云端推理、云端训练三大场景,昇腾计算的 AI 硬件系统主要包括有:
- 基于华为达芬奇内核的昇腾系列处理器等多样化 AI 算⼒;
- 基于昇腾处理器的系列硬件产品,⽐如嵌⼊式模组、板卡、⼩站、服务器、集群等。
+![](./images/08AscendBase02.png)
+
+昇腾AI产品包含训练和推理产品,主要产品系列如表所示,昇腾训练产品同时支持训练和推理业务,各个组件支持的产品范围请参见组件对应文档的产品支持列表。
+
+| 产品系列 | 产品型号 |
+| ---- | ---- |
+| Atlas 200/300/500 推理产品 | Atlas 200 AI加速模块、Atlas 300I 推理卡(型号:3000)、Atlas 300I 推理卡(型号:3010)Atlas 500 智能小站、Atlas 200 DK 开发者套件 |
+| Atlas 200/500 A2推理产品 | Atlas 500 A2 智能小站、Atlas 200I DK A2 开发者套件、Atlas 200I A2 加速模块 |
+| Atlas 推理系列产品(配置Ascend 310P AI处理器) | Atlas 300I Pro 推理卡、Atlas 300V 视频解析卡、Atlas 300V Pro 视频解析卡、Atlas 300I Duo 推理卡、Atlas 200I SoC A1核心板 |
+| Atlas 推理服务器系列产品 | 1. 边缘服务器:
+
+Atlas 500 Pro 智能边缘服务器支持插入Atlas 300I 推理卡(型号:3000)、Atlas 300I Pro 推理卡、Atlas 300V 视频解析卡、Atlas 300V Pro 视频解析卡使用 |
+| Atlas 推理服务器系列产品 | 2. 中心推理服务器:
+
+Atlas 800 推理服务器(型号:3000)支持插入Atlas 300I 推理卡(型号:3000)、Atlas 300I 推理卡(型号:3010)、Atlas 300I Pro 推理卡、Atlas 300V 视频解析卡、Atlas 300V Pro 视频解析卡、Atlas 300I Duo 推理卡使用
+
+Atlas 800 推理服务器(型号:3010)支持插入Atlas 300I 推理卡(型号:3010)、Atlas 300I Pro 推理卡、Atlas 300V 视频解析卡、Atlas 300V Pro 视频解析卡、Atlas 300I Duo 推理卡使用 |
+| Atlas 训练系列产品 | Atlas 800 训练服务器(型号:9000)、Atlas 800 训练服务器(型号:9010)、Atlas 900 PoD(型号:9000)、Atlas 900T PoD Lite、Atlas 300T 训练卡(型号 9000)、Atlas 300T Pro 训练卡(型号:9000) |
+| Atlas A2 训练系列产品 | Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 300T A2 训练卡、Atlas 200T A2 Box16 异构子框 |
+
+昇腾产品以昇腾AI处理器的PCle(Peripheral Component Interconnect Express)的工作模式进行区分,分为RC(Root Complex)模式和EP(Endpoint)模式,如果PCle工作在主模式,可以扩展外设,则称为RC模式;如果PCle工作在从模式,则称为EP模式。
+
+| PCle工作模式 | 支持的昇腾产品 | 工作模式说明 |
+| ---- | ---- | ---- |
+| RC模式 | Atlas 200 AI加速模块、Atlas 200 DK 开发者套件、Atlas 200I SoC A1、Atlas 500 A2 智能小站、Atlas 200I DK A2 开发者套件、Atlas 200I A2 加速模块 | 产品的CPU直接运行用户指定的AI业务软件,接入网络摄像头、I2C传感器、SPI显示器等其他外挂设备作为从设备接入产品。 |
+| EP模式 | 推理产品:Atlas 500 智能小站、Atlas 200 AI加速模块、Atlas 推理系列产品(配置Ascend 310P AI处理器)、Atlas 200I A2 加速模块 | EP模式通常由Host侧作为主端,Device侧作为从端。客户的AI业务程序运行在Host系统中,昇腾产品作为Device系统以PCIe从设备接入Host系统,Host系统通过PCIe通道与Device系统交互,将AI任务加载到Device侧的昇腾AI处理器中运行。 |
+| EP模式 | 训练产品:Atlas 训练系列产品、Atlas A2 训练系列产品 | 同上 |
+
+![](./images/08AscendBase03.png)
+
+在异构计算架构中, 昇腾AI处理器与服务器的CPU通过PCIe总线连接协同工作,我们一般分别称为Device侧和Host侧。
+
### AI 软件体系
-昇腾计算 AI 基础软件体系主要包括有:
+如图所示, 从下往上昇腾计算 AI 基础软件体系主要包括有:
- 异构计算架构 CANN 以及对应的驱动、运⾏时、加速库、编译器、调试调优⼯具、开具链 MindStudio 和各种运维管理⼯具等,开放给⼴⼤的开发者和客户;
@@ -36,6 +70,8 @@
昇腾计算产业也拥抱各种云服务场景,⽀持 laas,SaaS 等多种云服务模式;同时,端边云协同的能⼒,会原⽣的构建在整个技术架构中,推动昇腾计算成为全场景的 AI 基础设施。
+![](./images/08AscendBase04.png)
+
### 产业价值
以“硬件开放,软件开源,使能合作伙伴”的开放⽣态,推动昇腾计算产业更好地发展。华为聚焦计算架构、处理器和基础软件的创新与研发。通过⾃有硬件和伙伴硬件相结合的⽅式客户提供多样化的算⼒选择。华为基于昇腾系列处理器,通过模组、板卡、⼩站、服务器、集群等丰富的产品形态,打造⾯向“端、边、云” 的全场景 Atlas AI 基础设施⽅案。
@@ -56,7 +92,7 @@
底层的 AI 芯片和结构体系在昇腾 AI 全栈架构中主要指具体的硬件,覆盖了端边云全场景,支持数据中心,边缘和终端测的灵活部署方式。基础软件则是对应本书中 AI 系统的编译以及 AI 计算架构,使能芯片能力,提供具体的软件计算能力。再往上的框架层则是包含 AI 推理引擎、AI 计算框架。最后上层的应用使能则是针对具体的算法和模型提供的封装等相关的接口。
-![](images/05Ascend01.png)
+![](images/08AscendBase05.png)
为满足最大化 AI 开发和部署的灵活性,昇腾整体 AI 架构遵照如下的设计理念。
@@ -110,8 +146,6 @@ MindSpore 还⽀持在端侧直接对模型进⾏轻量训练,更新本地的
昇腾计算产业的⽣态将会持续不断丰富。更多的⾼性能算法、计算加速库、SDK、⾏业、开发语⾔和⼯具、开发者、产品形态、合作伙伴,将会随着昇腾计算产业的发展⽽快速推进。
-未来⼏年,将有百万量级的开发者,基于昇腾计算产业来开发,⽽昇腾的应⽤场景,将会触及到社会和⽣活的⽅⽅⾯⾯。
-
昇腾计算产业将持续推进极简易⽤的开发体系和极致性能的应⽤效果。随着计算成本和开发成本 的下降以及应⽤的快速成熟,在⾏业和⽣活中⼤规模的部署昇腾计算系统将成为很快的现实。
昇腾计算在⾏业中的⼤规模落地,将对社会⽣产⼒产⽣极⼤的推进。我们认为,未来在智能制造、 机器⼈、虚拟⼈、内容⽣成、⾃动和辅助驾驶、移动互联⽹、智慧农业、教育、交通、能源等⾏业,都将受益于昇腾计算产业所带来的智能化⽔平提升。
diff --git a/02Hardware/06Domestic/08AscendBase.pptx b/02Hardware/06Domestic/08AscendBase.pptx
index e2d5d8ab..4cda2f05 100644
Binary files a/02Hardware/06Domestic/08AscendBase.pptx and b/02Hardware/06Domestic/08AscendBase.pptx differ
diff --git a/02Hardware/06Domestic/09AscendCluster.md b/02Hardware/06Domestic/09AscendCluster.md
deleted file mode 100644
index 075e0206..00000000
--- a/02Hardware/06Domestic/09AscendCluster.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-# 昇腾 AI 算力集群
-
-## 小结与思考
\ No newline at end of file
diff --git a/02Hardware/06Domestic/09AscendSOC.md b/02Hardware/06Domestic/09AscendSOC.md
new file mode 100644
index 00000000..1255cfdc
--- /dev/null
+++ b/02Hardware/06Domestic/09AscendSOC.md
@@ -0,0 +1,113 @@
+
+
+# 昇腾 AI 处理器
+
+本节将会介绍华为昇腾 AI 处理器的架构与卷积加速原理。昇腾 AI 处理器是华为基于达芬奇架构专为AI计算加速而设计的处理器,它支持云边端一体化的全栈全场景解决方案,具有高能效比和强大的 3D Cube 矩阵计算单元,支持多种计算模式和混合精度计算。
+
+昇腾 AI 处理器的架构包括了 AI Core、AI CPU、多层级片上缓存/缓冲区和数字视觉预处理模块 DVPP,这些组件通过 CHI 协议的环形总线实现数据共享和一致性而组成的 SoC。此外,本节还将探讨卷积加速原理,即昇腾 AI 处理器如何通过软硬件优化实现高效的卷积计算加速,包括矩阵计算单元和数据缓冲区的高效组合以及灵活的数据通路设计,以满足不同神经网络的计算要求。
+
+## 昇腾 AI 处理器
+
+华为公司针对 AI 领域专用计算量身打造了“达芬奇架构”,并于 2018 年推出了基于“达芬奇架构”的昇腾 AI 处理器,开启了华为的AI之旅。
+
+从基础研究出发,立足于自然语言处理、机器视觉、自动驾驶等领域,昇腾 AI 处理器致力于打造面向云边端一体化的全栈全场景解决方案,同时为了配合其应用目标,打造了异构计算架构 CANN(Computer Architecture for Nerual Network),为昇腾 AI 处理器进行加速计算。全栈指技术方面,包括 IP、芯片、加速计算、AI 框架、应用使能等的全栈式设计方案。全场景包括公有云、私有云、各种边缘计算、物联网行业终端及消费者终端设备。围绕全栈全场景,华为正以昇腾 AI 处理器为核心,以算力为驱动,以工具为抓手,全力突破 AI 发展的极限。
+
+自 2018 年伊始,如图所示昇腾 AI 处理器的训练和推理系列型号陆续推出。推理系列的处理器则是面向移动计算场景的强算力 AI 片上系统(SoC,System on Chip)。训练系列的处理器主要应用于云端,可以为深度学习的训练算法提供强大算力。
+
+![](./images/09AscendSOC01.png)
+
+在设计上,昇腾 AI 处理器意图突破目前 AI 芯片功耗、运算性能和效率的约束,目的是极大提升能效比。昇腾 AI 处理器采用了华为自研的达芬奇架构,专门针对神经网络运算特征而量身定做,以高性能的 3D Cube 矩阵计算单元为基础,实现针对张量计算的算力和能效比大幅度提升。每个矩阵计算单元可以由一条指令完成 4096 次乘加计算(如图所示),并且处理器内部还支持多维计算模式,如标量、矢量、矩阵等,打破了其它 AI 专用芯片的局现象,增加了计算的灵活度。同时支持多种类混合精度计算,在实现推理应用的同时也强力支持了训练的数据精度要求。
+
+![](./images/09AscendSOC02.png)
+
+达芬奇架构的统一性体现在多个应用场景的良好适配上,覆盖高、中、低全场景,一次开发可支持多场景部署、迁移和协同。从架构上提升了软件效率。功耗优势也是该架构的一个显著特点,统一的架构可以支持从几十毫瓦到几百瓦的芯片,可以进行多核灵活扩展,在不同应用场景下发挥出芯片的能耗优势。
+
+达芬奇架构指令集采用了 CISC 指令且具有高度灵活性,可以应对日新月异、变化多端的新算法和新模型。高效的运算密集型 CISC 指令含有特殊专用指令,专门为神经网络打造,助力 AI 领域新模型的研发,同时帮助开发者更快速的实现新业务的部署,实现在线升级,促进行业发展。昇腾 AI 处理器在全业务流程加速方面,采用场景化视角,系统性设计,内置多种硬件加速器。昇腾 AI 处理器拥有丰富的 IO 接口,支持灵活可扩展和多种形态下的加速卡设计组合,很好应对云端、终端的算力和能效挑战,可以为各场景的应用强劲赋能。
+
+## AI 处理器架构
+
+昇腾 AI 处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像、视频、语音、文字处理相关的应用场景。上图是早期昇腾其处理器的逻辑架构,其主要的架构组成部件包括特制的计算单元、大容量的存储单元和相应的控制单元。无论是训练还是推理的芯片以及上层的硬件型号,基于基于 DaVinci AI 技术架构如图所示。
+
+![](./images/09AscendSOC03.png)
+
+该处理器大致可以划为:芯片系统控制 CPU(Control CPU),AI 计算引擎(包括 AI Core 和 AI CPU),多层级的片上系统缓存(Cache)或缓冲区(Buffer),数字视觉预处理模块(Digital Vision Pre-Processing,DVPP)等。芯片可以采用 LPDDR4 高速主存控制器接口,价格较低。目前主流 SoC 芯片的主存一般由 DDR(Double Data Rate)或 HBM(High Bandwidth Memory)构成,用来存放大量的数据。HBM 相对于 DDR 存储带宽较高,是行业的发展方向。其它通用的外设接口模块包括 USB、磁盘、网卡、GPIO、I2C 和电源管理接口等。
+
+![昇腾 AI 处理器逻辑图](images/09AscendSOC04.png)
+
+当该处理器作为计算服务器的加速卡使用时,会通过 PCIe 总线接口和服务器其它单元实现数据互换。以上所有这些模块通过基于 CHI 协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。
+
+昇腾 AI 处理器集成了多个 ARM 架构的 CPU 核心,每个核心都有独立的 L1 和 L2 缓存,所有核心共享一个片上 L3 缓存。集成的 CPU 核心按照功能可以划分为专用于控制芯片整体运行的主控 CPU 和专用于承担非矩阵类复杂计算的 AI CPU。两类任务占用的 CPU 核数可由软件根据系统实际运行情况动态分配。
+
+除了 CPU 之外,该处理器真正的算力担当是采用了达芬奇架构的 AI Core。AI Core 通过特别设计的架构和电路实现了高通量、大算力和低功耗,特别适合处理深度学习中神经网络必须的常用计算如矩阵相乘等。目前该处理器能对整数或浮点数提供强大的乘加计算力。由于采用了模块化的设计,可以很方便的通过叠加模块的方法提高处理器的算力。
+
+针对神经网络参数量大、中间值多的特点,该处理器还特意为 AI 计算引擎配备了一定容量的片上缓冲区(On-Chip Buffer),提供高带宽、低延迟、高效率的数据交换和访问。能够快速访问到所需的数据对于提高神经网络算法的整体性能至关重要,同时将大量需要复用的中间数据缓存在片上对于降低系统整体功耗意义重大。为了能够实现计算任务在 AI Core 上的高效分配和调度,还特意配备了一个专用 CPU 作为任务调度器(Task Scheduler,TS)。该 CPU 专门服务于 AI Core 和 AI CPU,而不承担任何其他的事务和工作。
+
+数字视觉预处理模块(DVPP)主要完成图像视频的编解码,视频处理,对图像支持 JPEG 和 PNG 等格式的处理。来自主机端存储器或网络的视频和图像数据,在进入昇腾 AI 处理器的计算引擎处理之前,需要生成满足处理要求的输入格式、分辨率等,因此需要调用数字视觉预处理模块进行预处理以实现格式和精度转换等要求。数字视觉预处理模块主要实现视频解码(Video Decoder,VDEC),视频编码(Video Encoder,VENC),JPEG 编解码(JPEG Decoder/Encoder,JPEGD/E),PNG 解码(PNG Decoder,PNGD)和视觉预处理(Vision Pre-Processing Core,VPC)等功能。图像预处理可以完成对输入图像的上/下采样、裁剪、色调转换等多种功能。数字视觉预处理模块采用了专用定制电路的方式来实现高效率的图像处理功能,对应于每一种不同的功能都会设计一个相应的硬件电路模块来完成计算工作。在数字视觉预处理模块收到图像视频处理任务后,会读取需要处理的图像视频数据并分发到内部对应的处理模块进行处理,待处理完成后将数据写回到内存中等待后续步骤。
+
+### 昇腾 910
+
+昇腾 910 处理器的目标场景是云端的推理和训练,其架构如图所示,包含 Davinci Core、DVPP、HBM、DDR4 等组件。
+
+![昇腾 AI 处理器逻辑图](images/09AscendSOC05.png)
+
+昇腾 910 处理器采用了芯粒(chiplet)技术,包含六个 die: 1 个计算芯粒(包含 32 个 Davinci Core、16 个 CPU Core 和 4 个 DVDP),1 个 IO 芯粒,和 4 个 HBM 芯粒(总计 1.2TB/s 带宽)。针对云端训练和推理场景,昇腾 910 处理器做的优化包括:
+
+1. 高算力: 训练场景通常使用的 Batch Size 较大,因此采用最高规格的 Ascend-Max,每个 Core 每个周期可以完成 16*16*16=4096 次 FP16 乘累加。
+
+2. 高 Load/Store 带宽: 训练场景下计算反向 SGD 时,会有大量对 Last Level Cache 和片外缓存的访问,因此需要配备较高的 Load/Store 带宽,因此昇腾 910 除了 DDR 还采用了 HBM 技术。
+
+3. 100G NIC: 随着 DNN 的模型尺寸愈发庞大,单机单卡甚至单机多卡已经不能满足云端训练的需求,为了支持多卡多机组成集群,昇腾 910 集成了支持 ROCE V2 协议的 100G NIC 用于跨服务器传递数据,使得可以使用昇腾 910 组成万卡集群。
+
+4. 高吞吐率的数字视觉与处理器(DVPP): DVPP 用于 JPEG、PNG 格式图像编解码、图像预处理(对输入图像上下采样、裁剪、色调转换等)、视频编解码,为了适配云端推理场景,DVPP 最高支持 128 路 1080P 视频解码。
+
+### 昇腾 310
+
+昇腾 310 处理器的目标场景是边缘推理,比如智慧城市、智慧新零售、机器人、工业制造等,其架构如上图所示,主要包含 Davinci Core、DVPP、LPDDR4 等组件。
+
+![昇腾 AI 处理器逻辑图](images/09AscendSOC06.png)
+
+相比昇腾 910,昇腾 310 的定制化 IP 相对较少,但是提供了更多外设接口。由于在边缘推理场景下 batch size 通常只有 1,因此昇腾 310 选择了较小的矩阵计算维度(m = 4, n = 16, k = 16)以实现$C_{mn} = A_{mk}\times B_{kn}$。由于在矩阵运算中$M = batch\_size \times output\_hight \times output\_width$, 当 batch size = 1 时,将 m 设置成 4 可以提升乘累加利用率。
+
+## 计算加速原理
+
+在神经网络中,卷积计算一直扮演着至关重要的角色。在一个多层的卷积神经网络中,卷积计算的计算量往往是决定性的,将直接影响到系统运行的实际性能。昇腾 AI 处理器作为 AI 加速器自然也不会忽略这一点,并且从软硬件架构上都对卷积计算进行了深度的优化。
+
+### 卷积/矩阵计算
+
+下图展示的是一个典型的卷积层计算过程,其中**X**为输入特征矩阵,**W**为权重矩阵;**b**为偏置值;**Y**o 为中间输出;Y 为输出特征矩阵,GEMM 表示通用矩阵乘法。输入特征矩阵**X**和**W**先经过 Img2Col 展开处理后得到重构矩阵 XI2C 和 WI2C 通过矩阵**X**I2C 和矩阵**W**I2C 进行矩阵相乘运算后得到中间输出矩阵**Y**o;接着累加偏置**b**,得到最终输出特征矩阵**Y**,这就完成了一个卷积神经网络中的卷积层处理。
+
+![卷积计算过程](images/09AscendSOC07.png)
+
+### 计算数据通路
+
+利用 AI Core 来加速通用卷积计算,总线接口从核外 L2 缓冲区或者直接从内存中读取卷积程序编译后的指令,送入指令缓存中,完成指令预取等操作,等待标量指令处理队列进行译码。如果标量指令处理队列当前无正在执行的指令,就会即刻读入指令缓存中的指令,并进行地址和参数配置,之后再由指令发射模块按照指令类型分别送入相应的指令队列进行执行。在卷积计算中首先发射的指令是数据搬运指令,该指令会被发送到存储转换队列中,再最终转发到存储转换单元中。
+
+![典型卷积数据流](images/09AscendSOC08.png)
+
+卷积整个数据流如上图所示,如果所有数据都在 DDR 或 HBM 中,存储转换单元收到读取数据指令后,会将矩阵***X***和***W***由总线接口单元从核外存储器中由数据通路 1 读取到输入缓冲区中,并且经过数据通路 3 进入存储转换单元,由存储转换单元对***X***和***W***进行补零和 Img2Col 重组后得到***X***I2C 和***W***I2C 两个重构矩阵,从而完成卷积计算到矩阵计算的格式变换。
+
+在格式转换的过程中,存储转换队列可以发送下一个指令给存储转换单元,通知存储转换单元在矩阵转换结束后将***X***I2C 和***W***I2C 经过数据通路 5 送入矩阵计算单元中等待计算。
+
+根据数据的局部性特性,在卷积过程中如果权重***W***I2C 需要重复多次计算,可以将权重经过数据通路 17 固定在输入缓冲区中,在每次需要用到该组权重时再经过数据通路 18 传递到矩阵计算单元中。
+
+在格式转换过程中,存储转换单元还会同时将偏置数据从核外存储经由数据通路 4 读入到输出缓冲区中,经过数据通路 6 由存储转换单元将偏置数据从原始的向量格式重组成矩阵后,经过数据通路 7 转存入输出缓冲区中,再经过数据通路 9 存入累加器中的寄存器中,以便后续利用累加器进行偏置值累加。
+
+当左、右矩阵数据都准备好了以后,矩阵运算队列会将矩阵相乘指令通过数据通路 5 发送给矩阵计算单元。***X***I2C 和***W***I2C 矩阵会被分块组合成 16\*16 的矩阵,由矩阵计算单元进行矩阵乘法运算。如果输入矩阵较大则可能会重复以上步骤多次并累加得到***Y***o 中间结果矩阵,存放于矩阵计算单元中。
+
+矩阵相乘完成后如果还需要处理偏置值,累加器会收到偏置累加指令,并从输出缓冲区中通过数据通路 9 读入偏置值,同时经过数据通路 8 读入矩阵计算单元中的中间结果***Y***o 并累加,最终得到输出特征矩阵***Y***,经过数据通路 10 被转移到输出缓冲区中等待后续指令进行处理。
+
+AI Core 通过矩阵相乘完成了网络的卷积计算,之后向量执行单元会收到池化和激活指令,输出特征矩阵***Y***就会经过数据通路 12 进入向量计算单元进行池化和激活处理,得到的结果***Y***会经过数据通路 13 存入输出缓冲区中。向量计算单元能够处理激活函数等一些常见的特殊计算,并且可以高效实现降维的操作,特别适合做池化计算。在执行多层神经网络计算时,***Y***会被再次从输出缓冲区经过数据通路 14 转存到输入缓冲区中,作为输入重新开始下一层网络的计算。
+
+达芬奇架构针对通用卷积的计算特征和数据流规律,采用功能高度定制化的设计,将存储、计算和控制单元进行有效的结合,在每个模块完成独立功能的同时实现了整体的优化设计。AI Core 高效组合了矩阵计算单元与数据缓冲区,缩短了存储到计算的数据传输路径,降低延时。
+
+同时 AI Core 在片上集成了大容量的输入缓冲区和输出缓冲区,一次可以读取并缓存充足的数据,减少了对核外存储系统的访问频次,提升了数据搬移的效率。同时各类缓冲区相对于核外存储系统具有较高的访问速度,大量片上缓冲区的使用也极大提升了计算中实际可获得的数据带宽。
+
+同时针对神经网络的结构多样性,AI Core 采用了灵活的数据通路,使得数据在片上缓冲区、核外存储系统、存储转换单元以及计算单元之间可以快速流动和切换,从而满足不同结构的神经网络的计算要求,使得 AI Core 对各种类型的计算具有一定的通用性。
+
+## 小结与思考
+
+- 昇腾 AI 处理器的创新:华为推出的昇腾 AI 处理器基于达芬奇架构,专为 AI 领域设计,提供云边端一体化的全栈全场景解决方案,以高能效比和强大的 3D Cube 矩阵计算单元为特点,支持多种计算模式和混合精度计算。
+
+- 昇腾 AI 处理器架构:昇腾 AI 处理器是一个 SoC,集成了特制的计算单元、存储单元和控制单元,包括 AI Core、AI CPU、多层级片上缓存/缓冲区和数字视觉预处理模块 DVPP,通过 CHI 协议的环形总线实现模块间的数据共享和一致性。
+
+- 卷积加速原理:昇腾 AI 处理器针对卷积计算进行软硬件优化,利用 AI Core 的矩阵计算单元和数据缓冲区,缩短数据传输路径,降低延时,并通过灵活的数据通路满足不同神经网络的计算要求,实现高效能的卷积计算加速。
\ No newline at end of file
diff --git a/02Hardware/06Domestic/10AscendArch.md b/02Hardware/06Domestic/10AscendArch.md
deleted file mode 100644
index 7a3880d8..00000000
--- a/02Hardware/06Domestic/10AscendArch.md
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-# 昇腾 AI 全栈架构
-
-## 小结与思考
\ No newline at end of file
diff --git a/02Hardware/06Domestic/08AscendCube.md b/02Hardware/06Domestic/10AscendCube.md
similarity index 76%
rename from 02Hardware/06Domestic/08AscendCube.md
rename to 02Hardware/06Domestic/10AscendCube.md
index 30f29c05..e345df05 100644
--- a/02Hardware/06Domestic/08AscendCube.md
+++ b/02Hardware/06Domestic/10AscendCube.md
@@ -2,7 +2,7 @@
# 昇腾 AI 核心单元
-本节将深入介绍昇腾 AI 处理器的核心单元——AI Core,以及其背后的达芬奇架构。昇腾 AI 处理器是华为针对人工智能领域设计的专用处理器,其核心 AI Core 采用了特定域架构(Domain Specific Architecture,DSA),专门为深度学习算法中常见的计算模式进行优化。
+本节将深入介绍昇腾 AI 处理器的核心单元——AI Core,以及其背后的达芬奇架构。昇腾 AI 处理器是华为针对 AI 领域设计的专用处理器,其核心 AI Core 采用了特定域架构(Domain Specific Architecture,DSA),专门为深度学习算法中常见的计算模式进行优化。
通过本节内容的学习,读者将能够理解昇腾 AI 处理器的达芬奇架构如何通过其独特的设计,实现对深度学习算法的高效加速,以及如何通过优化数据通路和控制流程来提升整体的计算性能。
@@ -10,15 +10,19 @@
不同于传统的支持通用计算的 CPU 和 GPU,也不同于专用于某种特定算法的专用处理器 ASIC,达芬奇架构本质上是为了适应某个特定领域中的常见的应用和算法,通常称之为“特定域架构(Domain Specific Architecture,DSA)”处理器。
-![AI Core 架构图](images/ascendarch02.png)
+![AI Core 架构图](images/10AscendCube01.png)
-昇腾 AI 处理器的计算核心主要由 AI Core 构成,负责执行标量、向量和张量相关的计算密集型算子。AI Core 采用了达芬奇架构,其基本结构上图所示,从控制上可以看成是一个相对简化的现代微处理器的基本架构。它包括了三种基础计算资源:矩阵计算单元(Cube Unit)、向量计算单元(Vector Unit)和标量计算单元(Scalar Unit)。这三种计算单元分别对应了张量、向量和标量三种常见的计算模式,在实际的计算过程中各司其职,形成了三条独立的执行流水线,在系统软件的统一调度下互相配合达到优化的计算效率。此外在矩阵计算单元和向量计算单元内部还提供了不同精度、不同类型的计算模式。AI Core 中的矩阵计算单元目前可以支持 INT8 、 INT4 和 FP16 的计算; 向量计算单元目前可以支持 FP16 和 FP32 的计算。
+昇腾 AI 处理器的计算核心主要由 AI Core 构成,负责执行标量、向量和张量相关的计算密集型算子。AI Core 采用了达芬奇架构,其基本结构上图所示,从控制上可以看成是一个相对简化的现代微处理器的基本架构。它包括了三种基础计算资源:矩阵计算单元(Cube Unit)、向量计算单元(Vector Unit)和标量计算单元(Scalar Unit)。
+
+这三种计算单元分别对应了张量、向量和标量三种常见的计算模式,在实际的计算过程中各司其职,形成了三条独立的执行流水线,在系统软件的统一调度下互相配合达到优化的计算效率。此外在矩阵计算单元和向量计算单元内部还提供了不同精度、不同类型的计算模式。AI Core 中的矩阵计算单元目前可以支持 INT8 、 INT4 和 FP16 的计算; 向量计算单元目前可以支持 FP16 和 FP32 的计算。
为了配合 AI Core 中数据的传输和搬运,围绕着三种计算资源还分布式的设置了一系列的片上缓冲区,比如用来放置整体图像特征数据、网络参数以及中间结果的输入缓冲区和输出缓冲区,以及提供一些临时变量的高速寄存器单元,这些寄存器单元位于各个计算单元中。这些存储资源的设计架构和组织方式不尽相同,但目的都是为了更好的适应不同计算模式下格式、精度和数据排布的需求。这些存储资源和相关联的计算资源相连,或者和总线接口单元(Bus Interface Unit,BIU)相连从而可以获得外部总线上的数据。
-在 AI Core 中,输入缓冲区之后设置了一个存储转换单元(Memory Transfer Unit,MTE)。这是达芬奇架构的特色之一,主要的目的是为了以极高的效率实现数据格式的转换。比如要通过矩阵计算来实现卷积,首先要通过 Img2Col 的方法把输入的网络和特征数据重新以一定的格式排列起来。这一步在 GPU 当中是通过软件来实现的,效率比较低下。达芬奇架构采用了一个专用的存储转换单元来完成这一过程,将这一步完全固化在硬件电路中,可以在很短的时间之内完成整个转置过程。由于类似转置的计算在深度神经网络中出现的极为频繁,这样定制化电路模块的设计可以提升 AI Core 的执行效率,从而能够实现不间断的卷积计算。
+在 AI Core 中,输入缓冲区之后设置了一个存储转换单元(Memory Transfer Unit,MTE)。这是达芬奇架构的特色之一,主要的目的是为了以极高的效率实现数据格式的转换。比如要通过矩阵计算来实现卷积,首先要通过 Img2Col 的方法把输入的网络和特征数据重新以一定的格式排列起来。这一步在 GPU 当中是通过软件来实现的,效率比较低下。达芬奇架构采用了一个专用的存储转换单元来完成这一过程,将这一步完全固化在硬件电路中,可以在很短的时间之内完成整个转置过程。由于类似转置的计算在神经网络中出现的极为频繁,这样定制化电路模块的设计可以提升 AI Core 的执行效率,从而能够实现不间断的卷积计算。
+
+AI Core 中的控制单元主要包括系统控制模块、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列和事件同步模块。系统控制模块负责指挥和协调 AI Core 的整体运行模式,配置参数和实现功耗控制等。标量指令处理队列主要实现控制指令的译码。当指令被译码并通过指令发射模块顺次发射出去后,根据指令的不同类型,将会分别被发送到矩阵运算队列、向量运算队列和存储转换队列。
-AI Core 中的控制单元主要包括系统控制模块、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列和事件同步模块。系统控制模块负责指挥和协调 AI Core 的整体运行模式,配置参数和实现功耗控制等。标量指令处理队列主要实现控制指令的译码。当指令被译码并通过指令发射模块顺次发射出去后,根据指令的不同类型,将会分别被发送到矩阵运算队列、向量运算队列和存储转换队列。三个队列中的指令依据先进先出的方式分别输出到矩阵计算单元、向量计算单元和存储转换单元进行相应的计算。不同的指令阵列和计算资源构成了独立的流水线,可以并行执行以提高指令执行效率。如果指令执行过程中出现依赖关系或者有强制的时间先后顺序要求,则可以通过事件同步模块来调整和维护指令的执行顺序。事件同步模块完全由软件控制,在软件编写的过程中可以通过插入同步符的方式来指定每一条流水线的执行时序从而达到调整指令执行顺序的目的。
+三个队列中的指令依据先进先出的方式分别输出到矩阵计算单元、向量计算单元和存储转换单元进行相应的计算。不同的指令阵列和计算资源构成了独立的流水线,可以并行执行以提高指令执行效率。如果指令执行过程中出现依赖关系或者有强制的时间先后顺序要求,则可以通过事件同步模块来调整和维护指令的执行顺序。事件同步模块完全由软件控制,在软件编写的过程中可以通过插入同步符的方式来指定每一条流水线的执行时序从而达到调整指令执行顺序的目的。
在 AI Core 中,存储单元为各个计算单元提供转置过并符合要求的数据,计算单元返回运算的结果给存储单元,控制单元为计算单元和存储单元提供指令控制,三者相互协调合作完成计算任务。
@@ -26,15 +30,15 @@ AI Core 中的控制单元主要包括系统控制模块、标量指令处理队
计算单元是 AI Core 中提供强大算力的核心单元,相当于 AI Core 的主力军。AI Core 计算单元主要包含矩阵计算单元、向量计算单元、标量计算单元和累加器,如下图加粗所示。矩阵计算单元和累加器主要完成与矩阵相关的运算,向量计算单元负责执行向量运算,标量计算单元主要负责各类型的标量数据运算和程序的流程控制。
-![计算单元](images/ascendarch03.png)
+![计算单元](images/10AscendCube02.png)
### 矩阵计算单元
#### 矩阵乘法
-由于常见的深度神经网络算法中大量的使用了矩阵计算,达芬奇架构中特意对矩阵计算进行了深度的优化并定制了相应的矩阵计算单元来支持高吞吐量的矩阵处理。上图表示一个矩阵 A 和另一个矩阵 B 之间的乘法运算 C=A*B,其中 M 表示矩阵 A 的行数,K 表示矩阵 A 的列数以及矩阵 B 的行数,N 表示矩阵 B 的列数。在传统 CPU 中计算矩阵乘法的典型代码如下代码所示。
+由于常见的神经网络算法中大量的使用了矩阵计算,达芬奇架构中特意对矩阵计算进行了深度的优化并定制了相应的矩阵计算单元来支持高吞吐量的矩阵处理。上图表示一个矩阵 A 和另一个矩阵 B 之间的乘法运算 C=A*B,其中 M 表示矩阵 A 的行数,K 表示矩阵 A 的列数以及矩阵 B 的行数,N 表示矩阵 B 的列数。在传统 CPU 中计算矩阵乘法的典型代码如下代码所示。
-![矩阵乘法示意图](images/ascendarch04.png)
+![矩阵乘法示意图](images/10AscendCube03.png)
```C++
for(int m = 0; m < M; m++)
@@ -47,29 +51,31 @@ for(int m = 0; m < M; m++)
在 CPU 计算过程中,矩阵 A 是按照行的方式进行扫描,矩阵 B 以列的方式进行扫描。考虑到典型的矩阵存储方式,无论矩阵 A 还是矩阵 B 都会按照行的方式进行存放,也就是所谓的 Row-Major 的方式。而内存读取的方式是具有极强的数据局部性特征的,也就是说当读取内存中某个数的时候会打开内存中相应的一整行并且把同一行中所有的数都读取出来。这种内存的读取方式对矩阵 A 是非常高效的,但是对于矩阵 B 的读取却显得非常不友好,因为代码中矩阵 B 是需要一列一列读取的。为此需要将矩阵 B 的存储方式转成按列存储,也就是所谓的 Column-Major,如下图所示,这样才能够符合内存读取的高效率模式。因此,在矩阵计算中往往通过改变某个矩阵的存储方式来提升矩阵计算的效率。
-![矩阵 B 存储方式](images/ascendarch05.png)
+![矩阵 B 存储方式](images/10AscendCube04.png)
一般在矩阵较大时,由于芯片上计算和存储资源有限,往往需要对矩阵进行分块平铺处理(Tiling),如下图所示。受限于片上缓存的容量,当一次难以装下整个矩阵 B 时,可以将矩阵 B 划分成为 B0、B1、B2 和 B3 等多个子矩阵。而每一个子矩阵的大小都可以适合一次性存储到芯片上的缓存中并与矩阵 A 进行计算从而得到结果子矩阵。这样做的目的是充分利用数据的局部性原理,尽可能的把缓存中的子矩阵数据重复使用完毕并得到所有相关的子矩阵结果后再读入新的子矩阵开始新的周期。如此往复可以依次将所有的子矩阵都一一搬运到缓存中,并完成整个矩阵计算的全过程,最终得到结果矩阵 C。分块的优点是充分利用了缓存的容量,并最大程度利用了数据计算过程中的局部性特征,可以高效实现大规模的矩阵乘法计算,是一种常见的优化手段。
-![矩阵分块计算](images/ascendarch06.png)
+![矩阵分块计算](images/10AscendCube05.png)
#### 计算方式
-在深度神经网络中实现计算卷积过程,关键的步骤是将卷积运算转化为矩阵运算。在 CPU 中大规模的矩阵计算往往成为性能瓶颈,而矩阵计算在深度学习算法中又极为重要。为了解决这个矛盾, GPU 采用通用矩阵乘法(GEMM)的方法来实现矩阵乘法。例如要实现一个 16\*16 矩阵与另一个 16\*16 矩阵的乘法,需要安排 256 个并行的线程,并且每一个线程都可以独立计算完成结果矩阵中的一个输出点。假设每一个线程在一个时钟周期内可以完成一次乘加运算,则 GPU 完成整个矩阵计算需要 16 个指令周期,这个延时是 GPU 无法避免的瓶颈。而昇腾 AI 处理器针对这个问题做了深度的优化。因此 AI Core 对矩阵乘法运算的高效性为昇腾 AI 处理器作为深度神经网络的加速器提供了强大的性能保障。
+在神经网络中实现计算卷积过程,关键的步骤是将卷积运算转化为矩阵运算。在 CPU 中大规模的矩阵计算往往成为性能瓶颈,而矩阵计算在深度学习算法中又极为重要。为了解决这个矛盾, GPU 采用通用矩阵乘法(GEMM)的方法来实现矩阵乘法。例如要实现一个 16\*16 矩阵与另一个 16\*16 矩阵的乘法,需要安排 256 个并行的线程,并且每一个线程都可以独立计算完成结果矩阵中的一个输出点。假设每一个线程在一个时钟周期内可以完成一次乘加运算,则 GPU 完成整个矩阵计算需要 16 个指令周期,这个延时是 GPU 无法避免的瓶颈。而昇腾 AI 处理器针对这个问题做了深度的优化。因此 AI Core 对矩阵乘法运算的高效性为昇腾 AI 处理器作为神经网络的加速器提供了强大的性能保障。
+
+达芬奇架构在 AI Core 中特意设计了矩阵计算单元作为昇腾 AI 处理器的核心计算模块,意图高效解决矩阵计算的瓶颈问题。矩阵计算单元提供强大的并行乘加计算能力,使得 AI Core 能够高速处理矩阵计算问题。通过精巧设计的定制电路和极致的后端优化手段,矩阵计算单元可以用一条指令完成两个 16\*16 矩阵的相乘运算(标记为 16^3,也是 Cube 这一名称的来历),等同于在极短时间内进行了 16^3=4096 个乘加运算,并且可以实现 FP16 的运算精度。
-达芬奇架构在 AI Core 中特意设计了矩阵计算单元作为昇腾 AI 处理器的核心计算模块,意图高效解决矩阵计算的瓶颈问题。矩阵计算单元提供强大的并行乘加计算能力,使得 AI Core 能够高速处理矩阵计算问题。通过精巧设计的定制电路和极致的后端优化手段,矩阵计算单元可以用一条指令完成两个 16\*16 矩阵的相乘运算(标记为 16^3,也是 Cube 这一名称的来历),等同于在极短时间内进行了 16^3=4096 个乘加运算,并且可以实现 FP16 的运算精度。如下图所示,矩阵计算单元在完成**A**\* **B** =**C** 的矩阵运算时,会事先将矩阵**A**按行存放在输入缓冲区中,同时将矩阵 B 按列存放在输入缓冲区中,通过矩阵计算单元计算后得到的结果矩阵**C**按行存放在输出缓冲区中。在矩阵相乘运算中,如下图 所示,矩阵**C**的第一元素由矩阵 A 的第一行的 16 个元素和矩阵**B**的第一列的 16 个元素由矩阵计算单元子电路进行 16 次乘法和 15 次加法运算得出。矩阵计算单元中共有 256 个矩阵计算子电路组成,可以由一条指令并行完成矩阵**C**的 256 个元素计算。
+如下图所示,矩阵计算单元在完成**A**\* **B** =**C** 的矩阵运算时,会事先将矩阵**A**按行存放在输入缓冲区中,同时将矩阵 B 按列存放在输入缓冲区中,通过矩阵计算单元计算后得到的结果矩阵**C**按行存放在输出缓冲区中。在矩阵相乘运算中,如下图 所示,矩阵**C**的第一元素由矩阵 A 的第一行的 16 个元素和矩阵**B**的第一列的 16 个元素由矩阵计算单元子电路进行 16 次乘法和 15 次加法运算得出。矩阵计算单元中共有 256 个矩阵计算子电路组成,可以由一条指令并行完成矩阵**C**的 256 个元素计算。
-![矩阵计算单元计算示意图](images/ascendarch07.png)
+![矩阵计算单元计算示意图](images/10AscendCube06.png)
在有关矩阵的处理上,通常在进行完一次矩阵乘法后还需要和上一次的结果进行累加,以实现类似**C**=**A**\***B**+**C **的运算。矩阵计算单元的设计也考虑到了这种情况,为此专门在矩阵计算单元后面增加了一组累加器单元,可以实现将上一次的中间结果与当前的结果相累加,总共累加的次数可以由软件控制,并在累加完成之后将最终结果写入到输出缓冲区中。在卷积计算过程中,累加器可以完成加偏置的累加计算。
矩阵计算单元可以快速完成 16*16 的矩阵相乘。但当超过 16*16 大小的矩阵利用该单元进行计算时,则需要事先按照特定的数据格式进行矩阵的存储,并在计算的过程中以特定的分块方式进行数据的读取。如下图所示,矩阵**A**展示的切割和排序方式称作“大 **Z**小**z**”,直观的看就是矩阵**A **的各个分块之间按照行的顺序排序,称之为“大**Z**”方式;而每个块的内部数据也是按照行的方式排列,称为“小**z**”方式。与之形成对比的是矩阵**B**的各个分块之间按照行排序,而每个块的内部按照列排序,称为“大**Z**小**N**”的排序方式。按照矩阵计算的一般法则,如此排列的**A**、**B**矩阵相乘之后得到的结果矩阵**C**将会呈现出各个分块之间按照列排序,而每个块内部按照行排序的格式,称为“大**N** 小**Z**”的排列方式。
-![存储格式要求](images/ascendarch08.png)
+![存储格式要求](images/10AscendCube07.png)
在利用矩阵计算单元进行大规模的矩阵运算时,由于矩阵计算单元的容量有限,往往不能一次存放下整个矩阵,所以也需要对矩阵进行分块并采用分步计算的方式,如下图所示,将矩阵**A**和矩阵**B**都等分成同样大小的块,每一块都可以是一个 16\*16 的子矩阵,排不满的地方可以通过补零实现。首先求 C1 结果子矩阵,需要分两步计算:第一步将**A1**和**B1**搬移到矩阵计算单元中,并算出**A1**\***B1** 的中间结果;第二步将**A2**和**B2**搬移到矩阵计算单元中,再次计算**A2**\***B2**,并把计算结果累加到上一次**A1**\*B1 的中间结果,这样才完成结果子矩阵**C1**的计算,之后将**C1**写入输出缓冲区。由于输出缓冲区容量也有限,所以需要尽快将**C1**子矩阵写入内存中,便于留出空间接受下一个结果子矩阵**C2**。同理依次类推可以完成整个大规模矩阵乘法的运算。
-![矩阵分块计算](images/ascendarch09.png)
+![矩阵分块计算](images/10AscendCube08.png)
### 向量计算单元
@@ -77,9 +83,9 @@ AI Core 中的向量计算单元主要负责完成和向量相关的运算,能
如下图所示,向量计算单元可以快速完成两个 FP16 类型的向量运算。向量计算单元的源操作数和目的操作数通常都保存在输出缓冲区中。对向量计算单元而言,输入的数据可以不连续,这取决于输入数据的寻址模式。向量计算单元支持的寻址模式包括了向量连续寻址和固定间隔寻址;在特殊情形下,对于地址不规律的向量,向量计算单元也提供了向量地址寄存器寻址来实现向量的不规则寻址。
-![向量运算示例](images/ascendarch10.png)
+![向量运算示例](images/10AscendCube09.png)
-向量计算单元可以作为矩阵计算单元和输出缓冲区之间的数据通路和桥梁。矩阵运算完成后的结果在向输出缓冲区传递的过程中,向量计算单元可以顺便完成在深度神经网络尤其是卷积神经网络计算中常用的 ReLU 激活函数、池化等功能并实现数据格式的转换。经过向量计算单元处理后的数据可以被写回到输出缓冲区或者矩阵计算单元中,以等待下一次运算。所有的这些操作都可以通过软件配合相应的向量单元指令来实现。向量计算单元提供了丰富的计算功能,也可以实现很多特殊的计算函数,从而和矩阵计算单元形成功能互补,全面完善了 AI Core 对非矩阵类型数据计算的能力。
+向量计算单元可以作为矩阵计算单元和输出缓冲区之间的数据通路和桥梁。矩阵运算完成后的结果在向输出缓冲区传递的过程中,向量计算单元可以顺便完成在神经网络尤其是卷积神经网络计算中常用的 ReLU 激活函数、池化等功能并实现数据格式的转换。经过向量计算单元处理后的数据可以被写回到输出缓冲区或者矩阵计算单元中,以等待下一次运算。所有的这些操作都可以通过软件配合相应的向量单元指令来实现。向量计算单元提供了丰富的计算功能,也可以实现很多特殊的计算函数,从而和矩阵计算单元形成功能互补,全面完善了 AI Core 对非矩阵类型数据计算的能力。
## 标量计算单元
@@ -91,7 +97,7 @@ AI Core 中具有代表性的专用寄存器包括 CoreID(用于标识不同
### 存储系统
-AI Core 的片上存储单元和相应的数据通路构成了存储系统。众所周知,几乎所有的深度学习算法都是数据密集型的应用。对于昇腾 AI 处理器来说,合理设计的数据存储和传输结构对于最终系统运行的性能至关重要。不合理的设计往往成为性能瓶颈,从而白白浪费了片上海量的计算资源。AI Core 通过各种类型分布式缓冲区之间的相互配合,为深度神经网络计算提供了大容量和及时的数据供应,为整体计算性能消除了数据流传输的瓶颈,从而支撑了深度学习计算中所需要的大规模、高并发数据的快速有效提取和传输。
+AI Core 的片上存储单元和相应的数据通路构成了存储系统。众所周知,几乎所有的深度学习算法都是数据密集型的应用。对于昇腾 AI 处理器来说,合理设计的数据存储和传输结构对于最终系统运行的性能至关重要。不合理的设计往往成为性能瓶颈,从而白白浪费了片上海量的计算资源。AI Core 通过各种类型分布式缓冲区之间的相互配合,为神经网络计算提供了大容量和及时的数据供应,为整体计算性能消除了数据流传输的瓶颈,从而支撑了深度学习计算中所需要的大规模、高并发数据的快速有效提取和传输。
### 存储单元
@@ -99,13 +105,13 @@ AI Core 的片上存储单元和相应的数据通路构成了存储系统。众
所有的缓冲区和寄存器的读写都可以通过底层软件显式的控制,有经验的程序员可以通过巧妙的编程方式来防止存储单元中出现读写冲突而影响流水线的进程。对于类似卷积和矩阵这样规律性强的计算模式,高度优化的程序可以实现全程无阻塞的流水线执行。
-![存储单元结构](images/ascendarch11.png)
+![存储单元结构](images/10AscendCube10.png)
上图中的总线接口单元作为 AI Core 的“大门”,是一个与系统总线交互的窗口,并以此通向外部世界。AI Core 通过总线接口从外部 L2 缓冲区、DDR 或 HBM 中读取或者写回数据。总线接口在这个过程中可以将 AI Core 内部发出的读写请求转换为符合总线要求的外部读写请求,并完成协议的交互和转换等工作。
输入数据从总线接口读入后就会经由存储转换单元进行处理。存储转换单元作为 AI Core 内部数据通路的传输控制器,负责 AI Core 内部数据在不同缓冲区之间的读写管理,以及完成一系列的格式转换操作,如补零,Img2Col,转置、解压缩等。存储转换单元还可以控制 AI Core 内部的输入缓冲区,从而实现局部数据的缓存。
-在深度神经网络计算中,由于输入图像特征数据通道众多且数据量庞大,往往会采用输入缓冲区来暂时保留需要频繁重复使用的数据,以达到节省功耗、提高性能的效果。当输入缓冲区被用来暂存使用率较高的数据时,就不需要每次通过总线接口到 AI Core 的外部读取,从而在减少总线上数据访问频次的同时也降低了总线上产生拥堵的风险。另外,当存储转换单元进行数据的格式转换操作时,会产生巨大的带宽需求,达芬奇架构要求源数据必须被存放于输入缓冲区中,才能够进行格式转换,而输入缓冲控制器负责控制数据流入输入缓冲区中。输入缓冲区的存在有利于将大量用于矩阵计算的数据一次性的被搬移到 AI Core 内部,同时利用固化的硬件极高的提升了数据格式转换的速度,避免了矩阵计算单元的阻塞,消除了由于数据转换过程缓慢而带来的性能瓶颈。
+在神经网络计算中,由于输入图像特征数据通道众多且数据量庞大,往往会采用输入缓冲区来暂时保留需要频繁重复使用的数据,以达到节省功耗、提高性能的效果。当输入缓冲区被用来暂存使用率较高的数据时,就不需要每次通过总线接口到 AI Core 的外部读取,从而在减少总线上数据访问频次的同时也降低了总线上产生拥堵的风险。另外,当存储转换单元进行数据的格式转换操作时,会产生巨大的带宽需求,达芬奇架构要求源数据必须被存放于输入缓冲区中,才能够进行格式转换,而输入缓冲控制器负责控制数据流入输入缓冲区中。输入缓冲区的存在有利于将大量用于矩阵计算的数据一次性的被搬移到 AI Core 内部,同时利用固化的硬件极高的提升了数据格式转换的速度,避免了矩阵计算单元的阻塞,消除了由于数据转换过程缓慢而带来的性能瓶颈。
在神经网络中往往可以把每层计算的中间结果放在输出缓冲区中,从而在进入下一层计算时方便的获取数据。由于通过总线读取数据的带宽低,延迟大,通过充分利用输出缓冲区就可以大大提升计算效率。
@@ -119,7 +125,7 @@ AI Core 中的存储系统为计算单元提供源源不断的数据,高效适
数据通路指的是 AI Core 在完成一个计算任务时,数据在 AI Core 中的流通路径。前文已经以矩阵相乘为例简单介绍了数据的搬运路径。上图 展示了达芬奇架构中一个 AI Core 内完整的数据传输路径。这其中包含了 DDR 或 HBM,以及 L2 缓冲区,这些都属于 AI Core 核外的数据存储系统。图中其它各类型的数据缓冲区都属于核内存储系统。
-![基本数据通路图](images/ascendarch12.png)
+![基本数据通路图](images/10AscendCube11.png)
核外存储系统中的数据可以通过 LOAD 指令被直接搬运到矩阵计算单元中进行计算,输出的结果会被保存在输出缓冲区中。除了直接将数据通过 LOAD 指令发送到矩阵计算单元中,核外存储系统中的数据也可以通过 LOAD 指令先行传入输入缓冲区,再通过其它指令传输到矩阵计算单元中。这样做的好处是利用大容量的输入缓冲区来暂存需要被矩阵计算单元反复使用的数据。
@@ -129,7 +135,7 @@ AI Core 中的存储系统为计算单元提供源源不断的数据,高效适
达芬奇架构数据通路的特点是多进单出,数据流入 AI Core 可以通过多条数据通路,可以从外部直接流入矩阵计算单元、输入缓冲区和输出缓冲区中的任何一个,流入路径的方式比较灵活,在软件的控制下由不同数据流水线分别进行管理。而数据输出则必须通过输出缓冲区,最终才能输出到核外存储系统中。
-这样设计的理由主要是考虑到了深度神经网络计算的特征。神经网络在计算过程中,往往输入的数据种类繁多并且数量巨大,比如多个通道、多个卷积核的权重和偏置值以及多个通道的特征值等,而 AI Core 中对应这些数据的存储单元可以相对独立且固定,可以通过并行输入的方式来提高数据流入的效率,满足海量计算的需求。AI Core 中设计多个输入数据通路的好处是对输入数据流的限制少,能够为计算源源不断的输送源数据。与此相反,深度神经网络计算将多种输入数据处理完成后往往只生成输出特征矩阵,数据种类相对单一。根据神经网络输出数据的特点,在 AI Core 中设计了单输出的数据通路,一方面节约了芯片硬件资源,另一方面可以统一管理输出数据,将数据输出的控制硬件降到最低。
+这样设计的理由主要是考虑到了神经网络计算的特征。神经网络在计算过程中,往往输入的数据种类繁多并且数量巨大,比如多个通道、多个卷积核的权重和偏置值以及多个通道的特征值等,而 AI Core 中对应这些数据的存储单元可以相对独立且固定,可以通过并行输入的方式来提高数据流入的效率,满足海量计算的需求。AI Core 中设计多个输入数据通路的好处是对输入数据流的限制少,能够为计算源源不断的输送源数据。与此相反,神经网络计算将多种输入数据处理完成后往往只生成输出特征矩阵,数据种类相对单一。根据神经网络输出数据的特点,在 AI Core 中设计了单输出的数据通路,一方面节约了芯片硬件资源,另一方面可以统一管理输出数据,将数据输出的控制硬件降到最低。
综上,达芬奇架构中的各个存储单元之间的数据通路以及多进单出的核内外数据交换机制是在深入研究了以卷积神经网络为代表的主流深度学习算法后开发出来的,目的是在保障数据良好的流动性前提下,减少芯片成本、提升计算性能、降低控制复杂度。
@@ -137,7 +143,7 @@ AI Core 中的存储系统为计算单元提供源源不断的数据,高效适
在达芬奇架构下,控制单元为整个计算过程提供了指令控制,相当于 AI Core 的司令部,负责整个 AI Core 的运行,起到了至关重要的作用。控制单元的主要组成部分为系统控制模块、指令缓存、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列和事件同步模块,如上图中加粗所示。
-![控制单元逻辑图](images/ascendarch13.png)
+![控制单元逻辑图](images/10AscendCube12.png)
在指令执行过程中,可以提前预取后续指令,并一次读入多条指令进入缓存,提升指令执行效率。多条指令从系统内存通过总线接口进入到 AI Core 的指令缓存中并等待后续硬件快速自动解码或运算。指令被解码后便会被导入标量队列中,实现地址解码与运算控制。这些指令包括矩阵计算指令、向量计算指令以及存储转换指令等。在进入指令发射模块之前,所有指令都作为普通标量指令被逐条顺次处理。标量队列将这些指令的地址和参数解码配置好后,由指令发射模块根据指令的类型分别发送到对应的指令执行队列中,而标量指令会驻留在标量指令处理队列中进行后续执行,如上图所示。
@@ -147,7 +153,7 @@ AI Core 中的存储系统为计算单元提供源源不断的数据,高效适
对于指令流水线之间可能出现的数据依赖,达芬奇架构的解决方案是通过设置事件同步模块来统一协调各个流水线的进程。事件同步模块时刻控制每条流水线的执行状态,并分析不同流水线的依赖关系,从而解决数据依赖和同步的问题。比如矩阵运算队列的当前指令需要依赖向量计算单元的结果,在执行过程中,事件同步控制模块会暂停矩阵运算队列执行流程,要求其等待向量计算单元的结果。而当向量计算单元完成计算并输出结果后,此时事件同步模块则通知矩阵运算队列需要的数据已经准备好,可以继续执行。在事件同步模块准许放行之后矩阵运算队列才会发射当前指令。在达芬奇架构中,无论是流水线内部的同步还是流水线之间的同步,都是通过事件同步模块利用软件控制来实现的。
-![控制单元逻辑图](images/ascendarch14.png)
+![控制单元逻辑图](images/10AscendCube13.png)
如上图所示,示意了四条流水线的执行流程。标量指令处理队列首先执行标量指令 0、1 和 2 三条标量指令,由于向量运算队列中的指令 0 和存储转换队列中的指令 0 与标量指令 2 存在数据依赖性,需要等到标量指令 2 完成才能发射并启动。由于指令是被顺序发射的,因此只能等到时刻 4 时才能发射并启动矩阵运算指令 0 和标量指令 3,这时四条指令流水线可以并行执行。直到标量指令处理队列中的全局同步标量指令 7 生效后,由事件同步模块对矩阵流水线、向量流水线和存储转换流水线进行全局同步控制,需要等待矩阵运算指令 0、向量运算指令 1 和存储转换指令 1 都执行完成后,事件同步模块才会允许标量流水线继续执行标量指令 8。
diff --git a/03Compiler/03Frontend/05LayoutAlgo.md b/02Hardware/06Domestic/11AscendLayout.md
similarity index 88%
rename from 03Compiler/03Frontend/05LayoutAlgo.md
rename to 02Hardware/06Domestic/11AscendLayout.md
index 90910bd7..26310a7d 100644
--- a/03Compiler/03Frontend/05LayoutAlgo.md
+++ b/02Hardware/06Domestic/11AscendLayout.md
@@ -1,8 +1,8 @@
-# 布局转换算法
+# 昇腾数据布局转换
-接着上节中我们对卷积神经网络的特征图存储方式的讨论。 NHWC 的数据排布方式更适合多核 CPU 运算, NCHW 的数据排布方式更适合 GPU 并行运算。那么接下来让我们了解一下在华为昇腾的 NPU 中,这种特征图的存储方式。
+NHWC 的数据排布方式更适合多核 CPU 运算, NCHW 的数据排布方式更适合 GPU 并行运算。那么接下来让我们了解一下在华为昇腾的 NPU 中,这种特征图的存储方式。
> 截止到 2024 年,华为昇腾在私有格式的数据处理和特殊的数据形态越来越少,主要是得益于 AI 编译器和软件的迭代升级,更加合理地兼容业界主流的算子和数据排布格式。
@@ -10,21 +10,21 @@
### 昇腾数据排布格式
-我们在上半篇曾提到过,数据排布格式的转换主要是将内部数据布局转换为硬件设备友好的形式,实际在华为昇腾的 AI 处理器中,为了提高通用矩阵乘法运算和访存的效率,一般既不选择 NHWC,也不选择 NCHW 来对多维数据进行存储。
+数据排布格式的转换主要是将内部数据布局转换为硬件设备友好的形式,实际在华为昇腾的 AI 处理器中,为了提高通用矩阵乘法运算和访存的效率,一般既不选择 NHWC,也不选择 NCHW 来对多维数据进行存储。
这里我们将华为昇腾的数据排布作为一个案例,这种多维数据统一采用 NC1HWC0 的五维数据格式进行存储,具体的含义是将数据从 C 维度分割成 C1 份 C0。
如下图中所示,下图中将 N 这个维度进行了省略,原先的红色长方体展现的是 CHW 三个维度,将它在 C 维度分割成 C1 个长方体,每个长方体的三个维度为 C0HW,而后将这 C1 份长方体在内存中连续排列,此处的 C1=C/C0,如果不能除尽则向上取整,对应着上半篇中的内存对齐,也就是通道现在变成了 C0 个,其中 C0 对于 FP16 类型为 16,对于 INT8 类型则为 32,这部分数据需要连续存储。
-![NC1HWC0 示意图](images/05LayoutAlgo01.png)
+![NC1HWC0 示意图](images/11AscendLayout01.png)
这样子的数据排布我们从硬件的角度来进行分析,华为的达芬奇架构在 AI Core 中特意优化了矩阵乘法单元,矩阵计算单元可以快速完成两个 16x16 矩阵的相乘运算,等同于可以在极短时间内进行 $16^3=4096$ 个乘加运算,并且可以实现 FP16 的运算精度,也就是说其可以针对 16 个 FP16 类型的数据进行快速的计算。这也就是我们对 C0 在 FP16 类型取 16,INT8 类型取 32 的部分原因。
下面我们来介绍一下如何转换出 NC1HWC0 数据格式,即将 NHWC 转换为 NC1HWC0 数据格式。具体操作:
-1.将 NHWC 数据在 C 维度进行分割,变成 C1 份 NHWC0。
+1. 将 NHWC 数据在 C 维度进行分割,变成 C1 份 NHWC0。
-2.将 C1 份 NHWC0 在内存中连续排列,由此变成 NC1HWC0。
+2. 将 C1 份 NHWC0 在内存中连续排列,由此变成 NC1HWC0。
pytorch 中代码如下所示
@@ -44,11 +44,11 @@ ND 格式 (N-Dimension),是神经网络中最常见且最基本的张量
为了在达芬奇架构中更高效的搬运和进行矩阵计算,引入一种特殊的数据分形格式,NZ 格式。
如下图所示,我们以 4*4 的矩阵来进行举例,按照 NZ 格式数据在内存中的排布格式为[0,1,4,5,8,9,12,13,2,3,6,7,10,11,14,15],按照 ND 格式数据在内存中的排布格式为[0, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]。
-![NZ 示意图](images/05LayoutAlgo02.png)
+![NZ 示意图](images/11AscendLayout02.png)
如下图所示,NZ 分形操作中,整个矩阵被分为(H1 * W1)个分形,分形之间按照列主序排布,即类比行主序的存储方式,列主序是先存储一列再存储相邻的下一列,这样整体存储形状形如 N 字形;每个分形内部有(H0 * W0)个元素,按照行主序排布,形状如 Z 字形。
-![NZ 矩阵示意图](images/05LayoutAlgo03.png)
+![NZ 矩阵示意图](images/11AscendLayout03.png)
下面我们详细地对 NZ 格式(也被称为 NW1H1H0W0 格式)具体在内存中存储的维度优先顺序进行展开。先对一个分形内部进行行主序存储,再在一个完整矩阵中以分形宽度为划分,进行列主序存储,再依次对相邻的下一个矩阵进行存储。即此方式先按 W0 方向存储,再按 H0 方向存储,接着按照 H1 方向存储,随后按照 W1 方向存储,最后按 N 方向存储,直到所有数据存储完成。
@@ -57,7 +57,13 @@ ND 格式 (N-Dimension),是神经网络中最常见且最基本的张量
将 ND 转换为 NZ 数据格式
```
-1 (..., N,H, W )->pad->(..., N, H1*H0, W1*W0)->reshape->(..., N, H1, H0, W1, W0)->transpose->(..., N, W1, H1, H0, W0)
+(..., N,H, W )->
+pad->
+(..., N, H1*H0, W1*W0)->
+reshape->
+(..., N, H1, H0, W1, W0)->
+transpose->
+(..., N, W1, H1, H0, W0)
```
其中 pad 为平铺操作,reshape 将张量进行拆分,形状重塑,transpose 为转置操作。
@@ -66,7 +72,7 @@ ND 格式 (N-Dimension),是神经网络中最常见且最基本的张量
图中中间部分为小 n 大 Z,块内按照列排序,块间按照行排序,常用于权重的数据存储。图中右侧部分为小 z 大 N,即为 NZ 格式示意图,块内按照行排序,块间按照列排序,常用于卷积结果的输出。
-![众多数据格式示意图](images/05LayoutAlgo04.png)
+![众多数据格式示意图](images/11AscendLayout04.png)
## AI 编译器布局转换算法
@@ -84,7 +90,7 @@ ND 格式 (N-Dimension),是神经网络中最常见且最基本的张量
下面我们来看看数据转换具体是如何操作的。如下图所示,这两个都是数据转换的算子,数据转换我们在这里用 CASTDATA 算子来表示,左侧输入的数据格式为 NHWC,输出的数据格式为 NCHW,那么就需要一个数据转换算子节点来将数据格式由 NHWC 转换为 NCHW,右侧则相反过来,此处不再赘述。
-![数据转换节点示意图](images/05LayoutAlgo05.png)
+![数据转换节点示意图](images/11AscendLayout05.png)
接下来,我们来看略复杂一些的数据转换。如下图所示,首先像最左侧,此处我们两个算子使用的数据格式与输入输出时都相同,为 NCHW,那么此时 AI 编译器中就不需要加入数据转换节点。
@@ -92,7 +98,7 @@ ND 格式 (N-Dimension),是神经网络中最常见且最基本的张量
最右侧的图中,输入的数据格式为 NCHW,算子一需求的数据格式为 NHWC,需要在两者之间插入一个 CASTDATA NCHW TO NHWC 算子进行数据转换,算子二格式为 NCHW,需要在算子一到算子二之间插入一个 CASTDATA NHWC TO NCHW 算子进行数据转换。输出与算子二数据格式相同,不做额外处理。
-![复杂数据转换节点示意图](images/05LayoutAlgo06.png)
+![复杂数据转换节点示意图](images/11AscendLayout06.png)
首先我们来讲解一下训练场景下 AI 编译器的例子,例如 1×1 的卷积常常使用 NHWC 的数据格式,而如果到后面使用的是 3×3 的卷积常常使用 NCHW 的数据格式,AI 编译器此时能够感知上下文,得到这些存储格式的信息,这时候 AI 编译器就会根据具体的数据格式插入需要的转换算子,并且整个过程不会改变原先原计算图的其他内容。
diff --git a/02Hardware/06Domestic/images/08AscendBase01.png b/02Hardware/06Domestic/images/08AscendBase01.png
new file mode 100644
index 00000000..bbe15412
Binary files /dev/null and b/02Hardware/06Domestic/images/08AscendBase01.png differ
diff --git a/02Hardware/06Domestic/images/08AscendBase02.png b/02Hardware/06Domestic/images/08AscendBase02.png
new file mode 100644
index 00000000..17ab1fe6
Binary files /dev/null and b/02Hardware/06Domestic/images/08AscendBase02.png differ
diff --git a/02Hardware/06Domestic/images/08AscendBase03.png b/02Hardware/06Domestic/images/08AscendBase03.png
new file mode 100644
index 00000000..971091d2
Binary files /dev/null and b/02Hardware/06Domestic/images/08AscendBase03.png differ
diff --git a/02Hardware/06Domestic/images/08AscendBase04.png b/02Hardware/06Domestic/images/08AscendBase04.png
new file mode 100644
index 00000000..9205d312
Binary files /dev/null and b/02Hardware/06Domestic/images/08AscendBase04.png differ
diff --git a/02Hardware/06Domestic/images/08AscendBase05.png b/02Hardware/06Domestic/images/08AscendBase05.png
new file mode 100644
index 00000000..0bb2fdd4
Binary files /dev/null and b/02Hardware/06Domestic/images/08AscendBase05.png differ
diff --git a/02Hardware/06Domestic/images/09AscendSOC01.png b/02Hardware/06Domestic/images/09AscendSOC01.png
new file mode 100644
index 00000000..7c8419e5
Binary files /dev/null and b/02Hardware/06Domestic/images/09AscendSOC01.png differ
diff --git a/02Hardware/06Domestic/images/09AscendSOC02.png b/02Hardware/06Domestic/images/09AscendSOC02.png
new file mode 100644
index 00000000..45482dae
Binary files /dev/null and b/02Hardware/06Domestic/images/09AscendSOC02.png differ
diff --git a/02Hardware/06Domestic/images/09AscendSOC03.png b/02Hardware/06Domestic/images/09AscendSOC03.png
new file mode 100644
index 00000000..daa3b366
Binary files /dev/null and b/02Hardware/06Domestic/images/09AscendSOC03.png differ
diff --git a/02Hardware/06Domestic/images/ascendarch01.png b/02Hardware/06Domestic/images/09AscendSOC04.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch01.png
rename to 02Hardware/06Domestic/images/09AscendSOC04.png
diff --git a/02Hardware/06Domestic/images/09AscendSOC05.png b/02Hardware/06Domestic/images/09AscendSOC05.png
new file mode 100644
index 00000000..eabd676a
Binary files /dev/null and b/02Hardware/06Domestic/images/09AscendSOC05.png differ
diff --git a/02Hardware/06Domestic/images/09AscendSOC06.png b/02Hardware/06Domestic/images/09AscendSOC06.png
new file mode 100644
index 00000000..3c36505c
Binary files /dev/null and b/02Hardware/06Domestic/images/09AscendSOC06.png differ
diff --git a/02Hardware/06Domestic/images/09AscendSOC07.png b/02Hardware/06Domestic/images/09AscendSOC07.png
new file mode 100644
index 00000000..dff7708c
Binary files /dev/null and b/02Hardware/06Domestic/images/09AscendSOC07.png differ
diff --git a/02Hardware/06Domestic/images/09AscendSOC08.png b/02Hardware/06Domestic/images/09AscendSOC08.png
new file mode 100644
index 00000000..cfe68294
Binary files /dev/null and b/02Hardware/06Domestic/images/09AscendSOC08.png differ
diff --git a/02Hardware/06Domestic/images/ascendarch02.png b/02Hardware/06Domestic/images/10AscendCube01.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch02.png
rename to 02Hardware/06Domestic/images/10AscendCube01.png
diff --git a/02Hardware/06Domestic/images/ascendarch03.png b/02Hardware/06Domestic/images/10AscendCube02.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch03.png
rename to 02Hardware/06Domestic/images/10AscendCube02.png
diff --git a/02Hardware/06Domestic/images/ascendarch04.png b/02Hardware/06Domestic/images/10AscendCube03.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch04.png
rename to 02Hardware/06Domestic/images/10AscendCube03.png
diff --git a/02Hardware/06Domestic/images/ascendarch05.png b/02Hardware/06Domestic/images/10AscendCube04.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch05.png
rename to 02Hardware/06Domestic/images/10AscendCube04.png
diff --git a/02Hardware/06Domestic/images/ascendarch06.png b/02Hardware/06Domestic/images/10AscendCube05.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch06.png
rename to 02Hardware/06Domestic/images/10AscendCube05.png
diff --git a/02Hardware/06Domestic/images/ascendarch07.png b/02Hardware/06Domestic/images/10AscendCube06.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch07.png
rename to 02Hardware/06Domestic/images/10AscendCube06.png
diff --git a/02Hardware/06Domestic/images/ascendarch08.png b/02Hardware/06Domestic/images/10AscendCube07.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch08.png
rename to 02Hardware/06Domestic/images/10AscendCube07.png
diff --git a/02Hardware/06Domestic/images/ascendarch09.png b/02Hardware/06Domestic/images/10AscendCube08.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch09.png
rename to 02Hardware/06Domestic/images/10AscendCube08.png
diff --git a/02Hardware/06Domestic/images/ascendarch10.png b/02Hardware/06Domestic/images/10AscendCube09.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch10.png
rename to 02Hardware/06Domestic/images/10AscendCube09.png
diff --git a/02Hardware/06Domestic/images/ascendarch11.png b/02Hardware/06Domestic/images/10AscendCube10.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch11.png
rename to 02Hardware/06Domestic/images/10AscendCube10.png
diff --git a/02Hardware/06Domestic/images/ascendarch12.png b/02Hardware/06Domestic/images/10AscendCube11.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch12.png
rename to 02Hardware/06Domestic/images/10AscendCube11.png
diff --git a/02Hardware/06Domestic/images/ascendarch13.png b/02Hardware/06Domestic/images/10AscendCube12.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch13.png
rename to 02Hardware/06Domestic/images/10AscendCube12.png
diff --git a/02Hardware/06Domestic/images/ascendarch14.png b/02Hardware/06Domestic/images/10AscendCube13.png
similarity index 100%
rename from 02Hardware/06Domestic/images/ascendarch14.png
rename to 02Hardware/06Domestic/images/10AscendCube13.png
diff --git a/02Hardware/06Domestic/images/11AscendLayout01.png b/02Hardware/06Domestic/images/11AscendLayout01.png
new file mode 100644
index 00000000..240246b8
Binary files /dev/null and b/02Hardware/06Domestic/images/11AscendLayout01.png differ
diff --git a/02Hardware/06Domestic/images/11AscendLayout02.png b/02Hardware/06Domestic/images/11AscendLayout02.png
new file mode 100644
index 00000000..851e4829
Binary files /dev/null and b/02Hardware/06Domestic/images/11AscendLayout02.png differ
diff --git a/02Hardware/06Domestic/images/11AscendLayout03.png b/02Hardware/06Domestic/images/11AscendLayout03.png
new file mode 100644
index 00000000..09e383ea
Binary files /dev/null and b/02Hardware/06Domestic/images/11AscendLayout03.png differ
diff --git a/02Hardware/06Domestic/images/11AscendLayout04.png b/02Hardware/06Domestic/images/11AscendLayout04.png
new file mode 100644
index 00000000..5cadee2b
Binary files /dev/null and b/02Hardware/06Domestic/images/11AscendLayout04.png differ
diff --git a/02Hardware/06Domestic/images/11AscendLayout05.png b/02Hardware/06Domestic/images/11AscendLayout05.png
new file mode 100644
index 00000000..237c682e
Binary files /dev/null and b/02Hardware/06Domestic/images/11AscendLayout05.png differ
diff --git a/02Hardware/06Domestic/images/11AscendLayout06.png b/02Hardware/06Domestic/images/11AscendLayout06.png
new file mode 100644
index 00000000..fcf85680
Binary files /dev/null and b/02Hardware/06Domestic/images/11AscendLayout06.png differ
diff --git a/03Compiler/02AICompiler/01Appear.md b/03Compiler/02AICompiler/01Appear.md
index 3b902174..d2cc8495 100644
--- a/03Compiler/02AICompiler/01Appear.md
+++ b/03Compiler/02AICompiler/01Appear.md
@@ -8,9 +8,9 @@
图灵奖获得者 David Patterson 在 2019 年 5 月发表了一个名为“计算机架构新的黄金年代”的演讲,他通过回顾自 20 世纪 60 年代以来的计算机架构的发展,来介绍当前的难题与未来的机遇。他预测未来十年计算机架构领域将会迎来下一个黄金时代,就像 20 世纪 80 年代一样。
-> John Hennessy 和 David Patterson 是 2017 年图灵奖获得者,目前这两位学者都供职于谷歌,前者是谷歌母公司 Alphabet 的董事会主席,后者任谷歌杰出工程师,致力于研究机器学习和人工智能。他们更为人所知的就是共同完成的计算机系统结构学科「圣经」《计算机体系结构:量化研究方法》了。该讲座也是基于两人在 2019 年新发表的文章《计算机架构的新黄金时代》。
+> John Hennessy 和 David Patterson 是 2017 年图灵奖获得者,目前这两位学者都供职于谷歌,前者是谷歌母公司 Alphabet 的董事会主席,后者任谷歌杰出工程师,致力于研究机器学习和 AI 。他们更为人所知的就是共同完成的计算机系统结构学科「圣经」《计算机体系结构:量化研究方法》了。该讲座也是基于两人在 2019 年新发表的文章《计算机架构的新黄金时代》。
-David Patterson 介绍了从最初诞生的复杂指令计算机到精简指令计算机,再从单核处理器到多核处理器的发展,再到如今随着人工智能的飞速发展,DSA(Domain-specific architectures)迅速崛起,比如 AI 芯片、GPU 芯片以及 NPU 芯片,这些都是 DSA。他认为高级、特定于领域的语言和体系结构,将为计算机架构师带来一个新的黄金时代。
+David Patterson 介绍了从最初诞生的复杂指令计算机到精简指令计算机,再从单核处理器到多核处理器的发展,再到如今随着 AI 的飞速发展,DSA(Domain-specific architectures)迅速崛起,比如 AI 芯片、GPU 芯片以及 NPU 芯片,这些都是 DSA。他认为高级、特定于领域的语言和体系结构,将为计算机架构师带来一个新的黄金时代。
![](images/01Appear01.png)
@@ -18,9 +18,9 @@ David Patterson 介绍了从最初诞生的复杂指令计算机到精简指令
Chris 认为世界出现了越来越多的专属硬件,同时也出现了各种各样的应用。尽管现在硬件越来越多样,硬件生态迅速壮大,但软件还是很难充分利用它们来提高性能。而且如果软硬件协同不到位,性能就会受到巨大影响,那不止是 10%左右的浮动。
-> Chris Lattner,LLVM 课程的主要发起人与作者之一,Swift 语言的创始人,并于 2022 年 3 月离开 Swift 核心团队,Clang 编译器的作者。现为他共同创立的人工智能公司 Modular AI 的首席执行官
+> Chris Lattner,LLVM 课程的主要发起人与作者之一,Swift 语言的创始人,并于 2022 年 3 月离开 Swift 核心团队,Clang 编译器的作者。现为他共同创立的 AI 公司 Modular AI 的首席执行官
-人工智能领域正经历着硬件的爆发式增长,这为 AI 应用的创新和扩展提供了强大的动力。随着各种不同的 AI 硬件的快速涌现,我们正面临一个软件碎片化的时代。软件碎片化意味着需要为不同的 AI 硬件平台开发和维护多种版本的基础软件,这无疑增加了研发和运营的成本。
+ AI 领域正经历着硬件的爆发式增长,这为 AI 应用的创新和扩展提供了强大的动力。随着各种不同的 AI 硬件的快速涌现,我们正面临一个软件碎片化的时代。软件碎片化意味着需要为不同的 AI 硬件平台开发和维护多种版本的基础软件,这无疑增加了研发和运营的成本。
此外,AI 基础软件碎片化还可能导致用户体验的不一致,因为不同硬件上运行的基础软件可能在性能和功能上存在差异。这种不一致性不仅增加了用户的学习成本,也可能影响用户对品牌和产品的忠诚度。
@@ -88,7 +88,7 @@ Chris 预见,未来十年将是 AI 编译器快速发展的十年。随着技
上面是从**硬件角度**以及**底层软件**的角度来看待为什么需要 AI 编译器的,而现在我们可以换一个上层应用视角来看待这个问题。
-以深度神经网络为技术基础的人工智能领域在近些年发展十分迅速,从 10 年前,AI 技术可能只能解决图形分类等较为简单的任务,但如今无论是推荐系统、大语言模型、自动驾驶甚至 AI4S 等领域已经取得了十分显著的发展。
+以深度神经网络为技术基础的 AI 领域在近些年发展十分迅速,从 10 年前,AI 技术可能只能解决图形分类等较为简单的任务,但如今无论是推荐系统、大语言模型、自动驾驶甚至 AI4S 等领域已经取得了十分显著的发展。
如今,AI 算法已经在很多领域取得了显著成果,这直接促进了 AI 算法的爆发式增长。同时,当前越来越多的公司愿意投入人力物理去开发自己的 AI 框架,这却间接导致了 AI 框架的碎片化和多样化。还有因地缘政治等因素,AI 芯片也变得加多样性,而不同的 AI 芯片都有着自己的编译体系。
@@ -146,7 +146,7 @@ Chris 预见,未来十年将是 AI 编译器快速发展的十年。随着技
传统编译器的前端专注于对高级编程语言进行深入的语义分析、语法分析和词法分析,将源代码转化为中间表示(IR)。在中间阶段,编译器执行一系列优化 Pass,专门针对高级语言代码进行性能提升。而在后端,编译器负责处理代码的具体布局、寄存器分配等任务。
-相比之下,AI 编译器的架构则有显著的不同。它的前端主要负责将深度神经网络的 API 表达为计算图,这一过程涉及到模型的构建和转换。在中间优化阶段,AI 编译器专注于图算融合、算子融合、自动微分和并行切分等特定优化技术。后端则根据目标硬件平台,对 kernel 进行定制化优化,确保代码在不同硬件上都能高效运行。在某些情况下,如 CPU 或 TPU 等芯片,AI 编译器甚至可能利用类似 LLVM 这样的传统编译器技术。
+相比之下,AI 编译器的架构则有显著的不同。它的前端主要负责将神经网络的 API 表达为计算图,这一过程涉及到模型的构建和转换。在中间优化阶段,AI 编译器专注于图算融合、算子融合、自动微分和并行切分等特定优化技术。后端则根据目标硬件平台,对 kernel 进行定制化优化,确保代码在不同硬件上都能高效运行。在某些情况下,如 CPU 或 TPU 等芯片,AI 编译器甚至可能利用类似 LLVM 这样的传统编译器技术。
如下图所示,AI 编译器在很多方面是站在传统编译器的肩膀上,它们之间形成了一种互补和协同的关系。
diff --git a/03Compiler/02AICompiler/02Stage.md b/03Compiler/02AICompiler/02Stage.md
index 894ba593..3f48773f 100644
--- a/03Compiler/02AICompiler/02Stage.md
+++ b/03Compiler/02AICompiler/02Stage.md
@@ -10,11 +10,11 @@
### 什么是 AI 编译器
-AI 编译器是一种针对人工智能和机器学习应用特别优化的编译器,它能够满足推理场景和训练场景不同需求,将高级语言编写的程序或者训练好的模型文件转换成可以在特定硬件上高效执行的程序。结合当前人们对 AI 编译器的认识,大概可以分为以下四个特征:
+AI 编译器是一种针对 AI 和机器学习应用特别优化的编译器,它能够满足推理场景和训练场景不同需求,将高级语言编写的程序或者训练好的模型文件转换成可以在特定硬件上高效执行的程序。结合当前人们对 AI 编译器的认识,大概可以分为以下四个特征:
1. 以 Python 语言为前端
-AI 编译器拥有以 Python 为主的动态解释器语言前端,Python 是一种广泛用于人工智能领域的高级编程语言,因其简洁的语法和强大的库支持而受到欢迎。动态解释器语言前端指的是编译器在处理 Python 代码时,会进行动态类型检查和解释执行,这有助于在运行时捕获和处理类型错误。
+AI 编译器拥有以 Python 为主的动态解释器语言前端,Python 是一种广泛用于 AI 领域的高级编程语言,因其简洁的语法和强大的库支持而受到欢迎。动态解释器语言前端指的是编译器在处理 Python 代码时,会进行动态类型检查和解释执行,这有助于在运行时捕获和处理类型错误。
2. 拥有多层 IR 设计
@@ -22,7 +22,7 @@ AI 编译器拥有多层 IR 设计,包括图编译 IR、算子编译 IR、代
3. 面向神经网络深度优化
-既然 AI 编译器是一种针对人工智能和机器学习应用的编译器,那么它一定面向神经网络、深度学习进行了特定的优化,使其处理神经网络的计算任务拥有更好的效率。AI 编译器会针对神经网络和神经网络模型的特点进行优化,比如自动微分、梯度下降等操作。这些优化可能包括内存访问模式的优化、并行计算的调度、以及针对特定 AI 框架(如 TensorFlow、PyTorch)的定制化支持。编译器可能会集成高级优化技术,如模型剪枝、量化、混合精度计算等,以减少模型的计算复杂性和内存占用。
+既然 AI 编译器是一种针对 AI 和机器学习应用的编译器,那么它一定面向神经网络、深度学习进行了特定的优化,使其处理神经网络的计算任务拥有更好的效率。AI 编译器会针对神经网络和神经网络模型的特点进行优化,比如自动微分、梯度下降等操作。这些优化可能包括内存访问模式的优化、并行计算的调度、以及针对特定 AI 框架(如 TensorFlow、PyTorch)的定制化支持。编译器可能会集成高级优化技术,如模型剪枝、量化、混合精度计算等,以减少模型的计算复杂性和内存占用。
4. 针对 DSA 芯片架构
@@ -32,7 +32,7 @@ AI 编译器还应该针对 DSA 芯片架构进行支持。DSA(Domain-Specific
### AI 编译器设计目标
-AI 编译器在人工智能领域的应用主要分为两个场景:推理场景和训练场景。这两个场景分别对应了 AI 模型生命周期中的不同阶段,并且对编译器的要求也有所不同。
+AI 编译器在 AI 领域的应用主要分为两个场景:推理场景和训练场景。这两个场景分别对应了 AI 模型生命周期中的不同阶段,并且对编译器的要求也有所不同。
推理场景指的是 AI 模型已经训练完成,并且需要在实际应用中对新的数据进行预测的过程。在这个阶段,模型的权重和结构已经固定,编译器的任务是将训练好的模型文件转换成能够在特定硬件上高效执行的程序。推理场景的关键点包括:
@@ -175,7 +175,7 @@ Buffer Fusion 是一种优化技术,它通过合并多个连续的内存访问
## 小结与思考
-- AI 编译器的发展分为三个阶段:朴素 AI 编译器、专用 AI 编译器和通用 AI 编译器,每个阶段都针对提高人工智能和机器学习应用的效率和性能进行了特别优化。
+- AI 编译器的发展分为三个阶段:朴素 AI 编译器、专用 AI 编译器和通用 AI 编译器,每个阶段都针对提高 AI 和机器学习应用的效率和性能进行了特别优化。
- AI 编译器发展经历了从朴素 AI 编译器的静态图优化,到专用 AI 编译器的动态图执行和自动优化技术引入,再到未来通用 AI 编译器的统一表达和自动化优化。
diff --git a/03Compiler/03Frontend/04LayoutPrinc.md b/03Compiler/03Frontend/04LayoutPrinc.md
index de541c9b..3966117d 100644
--- a/03Compiler/03Frontend/04LayoutPrinc.md
+++ b/03Compiler/03Frontend/04LayoutPrinc.md
@@ -1,6 +1,6 @@
-# 布局转换原理
+# 布局转换原理与算法
数据布局转换目前已经越来越多地用于编译器的前端优化,将内部数据布局转换为后端设备友好的形式。数据布局转换主要影响程序的空间局部性,所谓空间局部性指的是如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用其附近的一个内存位置,它会影响到程序执行中的缓存及其他性能。目前已经有许多数据布局转换技术:数组维度的排列,数据分块等等。
diff --git a/03Compiler/04Backend/05OtherOpt.md b/03Compiler/04Backend/05OtherOpt.md
index cf574ce3..2dd6acc5 100644
--- a/03Compiler/04Backend/05OtherOpt.md
+++ b/03Compiler/04Backend/05OtherOpt.md
@@ -46,7 +46,7 @@ vmulq_f32:对两个单精度浮点向量执行乘法操作。
### 张量化
-在人工智能应用日益广泛的今天,程序运行的数据形式经历了显著的演变。特别是以神经网络为代表的神经网络模型,其内部数据形式为多维矩阵,通常称为张量。例如,在计算机视觉任务中,典型的输入数据具有 [N, C, H, W] 的维度,其中 N 代表批次大小,C 代表通道数,H 和 W 分别代表图像的高度和宽度。
+在 AI 应用日益广泛的今天,程序运行的数据形式经历了显著的演变。特别是以神经网络为代表的神经网络模型,其内部数据形式为多维矩阵,通常称为张量。例如,在计算机视觉任务中,典型的输入数据具有 [N, C, H, W] 的维度,其中 N 代表批次大小,C 代表通道数,H 和 W 分别代表图像的高度和宽度。
在神经网络的内部计算过程中,特征图和参与计算的权重(如卷积核)也以类似的 4 维张量形式存在。传统的计算方法,如使用多层循环嵌套逐个计算数据元素,对于神经网络模型而言,效率极其低下。由于神经网络的计算具有高度的数据并行性,同一层内的元素之间几乎没有依赖关系。在理想情况下,如果能在硬件负载允许的范围内一次性将大量数据送入运算单元,将显著提升数据并行性,从而加速计算过程。
diff --git a/03Compiler/07CANN/01CANN.md b/03Compiler/07CANN/01CANN.md
index 057d0be2..6daa5f31 100644
--- a/03Compiler/07CANN/01CANN.md
+++ b/03Compiler/07CANN/01CANN.md
@@ -2,7 +2,7 @@
# 昇腾异构计算架构 CANN
-本节将介绍昇腾 AI 异构计算架构 CANN(Compute Architecture for Neural Networks),这是一套为高性能深度神经网络计算需求专门设计和优化的架构。CANN 包括硬件层面的达·芬奇架构和软件层面的全栈支持,旨在提供强大的硬件基础和管理网络模型、计算流及数据流的软件栈,以支撑深度神经网络在异构处理器上的执行。
+本节将介绍昇腾 AI 异构计算架构 CANN(Compute Architecture for Neural Networks),这是一套为高性能神经网络计算需求专门设计和优化的架构。CANN 包括硬件层面的达·芬奇架构和软件层面的全栈支持,旨在提供强大的硬件基础和管理网络模型、计算流及数据流的软件栈,以支撑神经网络在异构处理器上的执行。
通过本节内容的学习,读者将能够理解 CANN 如何为深度学习提供全面的硬件和软件支持,以及如何通过其多层级架构实现高效的 AI 应用开发和性能优化。
@@ -10,7 +10,7 @@
本节参考文献:《Ascend C 异构并行程序设计》——苏统华,杜鹏,闫长江,2024
-昇腾 AI 异构计算架构(Compute Architecture for Neural Networks,CANN)是专门为高性能深度神经网络计算需求所设计和优化的一套架构。在硬件层面,昇腾 AI 处理器所包含的达·芬奇架构在硬件设计上进行计算资源的定制化设计,在功能实现上进行深度适配,为深度神经网络计算性能的提升提供了强大的硬件基础。在软件层面,CANN 所包含的软件栈则提供了管理网络模型、计算流以及数据流的功能,支撑起深度神经网络在异构处理器上的执行流程。
+昇腾 AI 异构计算架构(Compute Architecture for Neural Networks,CANN)是专门为高性能神经网络计算需求所设计和优化的一套架构。在硬件层面,昇腾 AI 处理器所包含的达·芬奇架构在硬件设计上进行计算资源的定制化设计,在功能实现上进行深度适配,为神经网络计算性能的提升提供了强大的硬件基础。在软件层面,CANN 所包含的软件栈则提供了管理网络模型、计算流以及数据流的功能,支撑起神经网络在异构处理器上的执行流程。
如下图所示,CANN 作为昇腾 AI 处理器的异构计算架构,支持业界多种主流的 AI 框架,包括 MindSpore、TensorFlow、PyTorch、Jittor 等。Ascend C 算子开发语言,开放全量低阶 API 接口使能开发者完成高性能自定义算子开发;开放高阶 API 接口,降低开发难度,开发者可快速实现复杂自定义算子开发。GE 图引擎(Graph Engine),包括图优化、图编译、图执行等,便于开发者使用,优化整网性能。HCCL 集合通信库(Huawei Collective Communication Library),可供开发者直接调用,改善网络拥塞,提升网络资源利用率和运维效率。AOL 算子加速库(Ascend Operator Library),提供基础算子和大模型融合算子 API 接口对外开放,供开发者直接调用,使能大模型极致性能优化。Runtime 运行时,将硬件资源(计算、通信、内存管理等)的 API 接口对外开放,满足开发者对模型开发、系统优化、第三方 AI 框架对接等不同场景诉求。
@@ -20,13 +20,13 @@ CANN 提供了功能强大、适配性好、可自定义开发的 AI 异构计
![CANN 逻辑架构](images/01CANN02.png)
-昇腾计算语言(Ascend Computing Language,简称 AscendCL):AscendCL 接口是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装。它提供设备(Device)管理、上下文(Context)管理、流(Stream)管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理、图(Graph)管理等 API 库,供用户开发人工智能应用。
+昇腾计算语言(Ascend Computing Language,简称 AscendCL):AscendCL 接口是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装。它提供设备(Device)管理、上下文(Context)管理、流(Stream)管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理、图(Graph)管理等 API 库,供用户开发 AI 应用。
昇腾计算服务层(Ascend Computing Service Layer): 主要提供昇腾算子库 AOL(Ascend Operator Library),通用神经网络(Neural Network,NN)库、线性代数计算库(Basic Linear Algebra Subprograms,BLAS)等高性能算子加速计算;昇腾调优引擎 AOE(Ascend Optimization Engine),通过算子调优 OPAT、子图调优 SGAT、梯度调优 GDAT、模型压缩 AMCT 提升模型端到端运行速度。同时提供 AI 框架适配器 Framework Adaptor 用于兼容 TensorFlow、PyTorch 等主流 AI 框架。
昇腾计算编译层(Ascend Computing Compilation Layer):昇腾计算编译层通过图编译器(Graph Compiler)将用户输入中间表达(Intermediate Representation,IR)的计算图编译成昇腾硬件可执行模型;同时借助张量加速引擎 TBE(Tensor Boost Engine)的自动调度机制,高效编译算子。
-昇腾计算执行层(Ascend Computing Execution Layer):负责模型和算子的执行,提供运行时库(Runtime)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、人工智能预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。
+昇腾计算执行层(Ascend Computing Execution Layer):负责模型和算子的执行,提供运行时库(Runtime)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、 AI 预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。
昇腾计算基础层(Ascend Computing Base Layer):主要为其上各层提供基础服务,如共享虚拟内存(Shared Virtual Memory,SVM)、设备虚拟化(Virtual Machine,VM)、主机-设备通信(Host Device Communication,HDC)等。
@@ -116,7 +116,7 @@ CANN 包含许多硬件无关的优化,但是到 Low Level 优化层面,由
## 小结与思考
-- 昇腾 AI 异构计算架构 CANN:专为深度神经网络设计的硬件和软件架构,提供定制化计算资源和深度适配,支持多种 AI 框架和算子开发。
+- 昇腾 AI 异构计算架构 CANN:专为神经网络设计的硬件和软件架构,提供定制化计算资源和深度适配,支持多种 AI 框架和算子开发。
- CANN 的多层级架构:包含 AscendCL、Ascend Computing Service Layer、Ascend Computing Compilation Layer、Ascend Computing Execution Layer 和 Ascend Computing Base Layer,提供从应用开发到硬件资源管理的全面支持。
diff --git a/03Compiler/07CANN/README.md b/03Compiler/07CANN/README.md
index 711905eb..4bbbbad9 100644
--- a/03Compiler/07CANN/README.md
+++ b/03Compiler/07CANN/README.md
@@ -2,7 +2,7 @@
# CANN & Ascend C
-CANN 是昇腾的计算架构(Compute Architecture for Neural Networks),这是一套为高性能深度神经网络计算需求专门设计和优化的架构。而 Ascend C 是构建在 CANN 之上的算子开发编程语言 Ascend C,专为昇腾 AI 处理器算子开发设计的编程语言。
+CANN 是昇腾的计算架构(Compute Architecture for Neural Networks),这是一套为高性能神经网络计算需求专门设计和优化的架构。而 Ascend C 是构建在 CANN 之上的算子开发编程语言 Ascend C,专为昇腾 AI 处理器算子开发设计的编程语言。
**内容大纲**
diff --git a/04Inference/01Inference/01Introduction.md b/04Inference/01Inference/01Introduction.md
index ec55e196..15bcd07a 100644
--- a/04Inference/01Inference/01Introduction.md
+++ b/04Inference/01Inference/01Introduction.md
@@ -10,7 +10,7 @@
在深入探讨推理系统与推理引擎之前,首先需要明确“推理”这一概念。推理,简单来说,就是在利用大量数据训练好模型的结构和参数后,使用小批量数据进行一次前向传播,从而得到模型输出的过程。在此过程中,并不涉及模型梯度和损失的优化。推理的最终目标,便是将训练好的模型部署到实际的生产环境中,使 AI 真正运行起来,服务于日常生活。
-**推理系统**,是一个专门用于部署神经网络模型,执行推理预测任务的人工智能系统。它类似于传统的 Web 服务或移动端应用系统,但专注于 AI 模型的部署与运行。推理系统会加载模型到内存,并进行版本管理,确保新版本能够顺利上线,旧版本能够安全回滚。此外,它还会对输入数据进行批量尺寸(Batch Size)的动态优化,以提高处理效率。通过提供服务接口(如 HTTP、gRPC 等),推理系统使得客户端能够方便地调用模型进行推理预测。同时,推理系统还可以作为一个微服务,在数据中心中与其他微服务协同工作,共同完成复杂的请求处理任务。
+**推理系统**,是一个专门用于部署神经网络模型,执行推理预测任务的 AI 系统。它类似于传统的 Web 服务或移动端应用系统,但专注于 AI 模型的部署与运行。推理系统会加载模型到内存,并进行版本管理,确保新版本能够顺利上线,旧版本能够安全回滚。此外,它还会对输入数据进行批量尺寸(Batch Size)的动态优化,以提高处理效率。通过提供服务接口(如 HTTP、gRPC 等),推理系统使得客户端能够方便地调用模型进行推理预测。同时,推理系统还可以作为一个微服务,在数据中心中与其他微服务协同工作,共同完成复杂的请求处理任务。
**推理引擎**,则是推理系统中的重要组成部分,它主要负责 AI 模型的加载与执行。推理引擎可分为调度与执行两层,聚焦于 Runtime 执行部分和 Kernel 算子内核层,为不同的硬件提供更加高效、快捷的执行引擎。它可以看作是一个基础软件,提供了一组 API,使得开发者能够在特定的加速器平台(如 CPU、GPU 和 TPU)上轻松地进行推理任务。目前市场上已有多种推理引擎,如字节跳动的 LightSeq、Meta AI 的 AITemplate、英伟达的 TensorRT,以及华为的 MindSpore Lite 和腾讯的 NCNN 等。
@@ -88,11 +88,11 @@ s
### 人工客服应用
-推理引擎或推理系统在人工客服和人工智能对话方面有广泛的应用。以下是一些相关的内容:
+推理引擎或推理系统在人工客服和 AI 对话方面有广泛的应用。以下是一些相关的内容:
智能客服:推理引擎可以用于实现智能客服系统,能够理解用户的问题并提供准确的答案。通过对大量的语料库和知识库进行训练,推理引擎可以学习到不同的问题模式和解决方案,从而能够快速准确地回答用户的问题。
-对话管理:在人工智能对话中,推理引擎可以帮助系统理解用户的意图和需求,并根据这些信息来引导对话的流向。它可以根据用户的输入和历史对话记录,预测用户可能的问题和需求,并提供相应的回答和建议。
+对话管理:在 AI 对话中,推理引擎可以帮助系统理解用户的意图和需求,并根据这些信息来引导对话的流向。它可以根据用户的输入和历史对话记录,预测用户可能的问题和需求,并提供相应的回答和建议。
情感分析:推理引擎可以对用户的语言进行情感分析,判断用户的情绪状态。这对于人工客服来说非常重要,因为它可以帮助客服人员更好地理解用户的需求和问题,并提供更合适的解决方案。
diff --git a/04Inference/01Inference/02Constraints.md b/04Inference/01Inference/02Constraints.md
index 86edfebc..35fc1f34 100644
--- a/04Inference/01Inference/02Constraints.md
+++ b/04Inference/01Inference/02Constraints.md
@@ -2,7 +2,7 @@
# 推理系统介绍
-推理系统是一个专门用于部署神经网络模型,执行推理预测任务的人工智能系统。它类似于传统的 Web 服务或移动端应用系统,但专注于 AI 模型的部署与运行。通过推理系统,可以将神经网络模型部署到云端或者边缘端,并服务和处理用户的请求。因此,推理系统也需要应对模型部署和服务生命周期中遇到的挑战和问题。
+推理系统是一个专门用于部署神经网络模型,执行推理预测任务的 AI 系统。它类似于传统的 Web 服务或移动端应用系统,但专注于 AI 模型的部署与运行。通过推理系统,可以将神经网络模型部署到云端或者边缘端,并服务和处理用户的请求。因此,推理系统也需要应对模型部署和服务生命周期中遇到的挑战和问题。
在本节中,将首先概述训练和推理的基本流程,随后深入分析训练阶段与推理阶段之间的差异。接着,将深入探讨推理系统的优化目标以及面临的挑战。最后,通过比较推理系统与推理引擎的流程结构,将进一步揭示两者在设计和实施时需考虑的关键要素。
diff --git a/04Inference/01Inference/03Workflow.md b/04Inference/01Inference/03Workflow.md
index 88d43c7a..4e26f0e8 100644
--- a/04Inference/01Inference/03Workflow.md
+++ b/04Inference/01Inference/03Workflow.md
@@ -24,7 +24,7 @@
4. 移动设备:如智能手机、平板电脑、智能穿戴设备等,它们内置处理器、内存和操作系统,能够运行轻量级推理应用,实现基于 AI 的个性化服务、实时分析或设备自主决策。
-5. 专用硬件加速器:如 AI 加速卡(如 Intel Movidius、NVIDIA Jetson 系列)、视觉处理单元(VPU)、现场可编程门阵列(FPGA)等,用于在边缘设备上高效执行特定的 AI 算法,如深度神经网络推理。
+5. 专用硬件加速器:如 AI 加速卡(如 Intel Movidius、NVIDIA Jetson 系列)、视觉处理单元(VPU)、现场可编程门阵列(FPGA)等,用于在边缘设备上高效执行特定的 AI 算法,如神经网络推理。
6. 网络设备:在边缘场景中,可能还包括无线接入点(WAP)、LoRa 网关、NB-IoT 基站等,提供无线连接,支持物联网设备接入和数据传输。
@@ -49,7 +49,7 @@
云端部署推理系统的确具备诸多显著优点,使其成为众多企业和课程首选的部署方式。然而,云端部署并非万能解决方案,也伴随着一些特定的挑战。
-- 人工智能的服务成本非常高昂。因为需要云端的服务你就需要大量的机器,大量的容灾,大量的各种设备维护机房,所以它整体的成本是很高的。
+- AI 的服务成本非常高昂。因为需要云端的服务你就需要大量的机器,大量的容灾,大量的各种设备维护机房,所以它整体的成本是很高的。
- 推理服务对网络的依赖高。用户请求需要通过网络传输到云端进行处理,再返回结果,可能导致一定延迟。对于对实时性要求极高的应用(如实时语音识别、远程操控),网络延迟可能成为关键瓶颈。
diff --git a/04Inference/01Inference/04System.md b/04Inference/01Inference/04System.md
index f65a3399..a11d3c0b 100644
--- a/04Inference/01Inference/04System.md
+++ b/04Inference/01Inference/04System.md
@@ -2,7 +2,7 @@
# 推理系统架构
-推理系统架构是人工智能领域中的一个关键组成部分,它负责将训练好的模型应用于实际问题,从而实现智能决策和自动化。在构建一个高效的推理系统时,我们不仅需要考虑其性能和准确性,还需要确保系统的可扩展性、灵活性以及对不同业务需求的适应性。在本节中,我们将主要以 NVIDIA Triton Inference Server 为基础深入探讨推理系统架构的各个方面。
+推理系统架构是 AI 领域中的一个关键组成部分,它负责将训练好的模型应用于实际问题,从而实现智能决策和自动化。在构建一个高效的推理系统时,我们不仅需要考虑其性能和准确性,还需要确保系统的可扩展性、灵活性以及对不同业务需求的适应性。在本节中,我们将主要以 NVIDIA Triton Inference Server 为基础深入探讨推理系统架构的各个方面。
## 推理、部署、服务化
diff --git a/04Inference/01Inference/05Inference.md b/04Inference/01Inference/05Inference.md
index e215f5e3..275770e0 100644
--- a/04Inference/01Inference/05Inference.md
+++ b/04Inference/01Inference/05Inference.md
@@ -2,13 +2,13 @@
# 推理引擎架构
-在深入探讨推理引擎的架构之前,让我们先来概述一下推理引擎的基本概念。推理引擎作为人工智能系统中的关键组件,负责将训练好的模型部署到实际应用中,执行推理任务,从而实现智能决策和自动化处理。随着 AI 技术的快速发展,推理引擎的设计和实现面临着诸多挑战,同时也展现出独特的优势。
+在深入探讨推理引擎的架构之前,让我们先来概述一下推理引擎的基本概念。推理引擎作为 AI 系统中的关键组件,负责将训练好的模型部署到实际应用中,执行推理任务,从而实现智能决策和自动化处理。随着 AI 技术的快速发展,推理引擎的设计和实现面临着诸多挑战,同时也展现出独特的优势。
本节将详细阐述推理引擎的特点、技术挑战以及如何应对这些挑战,为读者提供一个较为全面的视角。同时,我们将深入探讨推理引擎的架构设计,从模型转换工具到端侧学习,再到性能优化和算子层的高效实现,通过对这些关键技术点的一一解析,以期为构建高效、可靠的推理引擎提供理论支持和实践指导。
## 推理引擎特点
-推理引擎,作为人工智能和机器学习领域的重要组成部分,其设计目标在于提供一个灵活、高效且易于使用的平台,用于部署和运行已经训练好的模型,完成从数据输入到预测输出的全过程。推理引擎拥有轻量、通用、易用和高效四个特点:
+推理引擎,作为 AI 和机器学习领域的重要组成部分,其设计目标在于提供一个灵活、高效且易于使用的平台,用于部署和运行已经训练好的模型,完成从数据输入到预测输出的全过程。推理引擎拥有轻量、通用、易用和高效四个特点:
- **轻量**:
@@ -192,7 +192,7 @@ AI 模型的运行离不开强大的计算资源支持,尤其是面对诸如
## 整体架构
-推理引擎作为人工智能应用的核心组件,其架构设计直接关系到模型在实际部署环境中的效率、灵活性和资源利用率。整体架构可以细分为优化阶段和运行阶段,每个阶段都包含了一系列关键技术以确保模型能够高效、准确地运行于目标设备上。
+推理引擎作为 AI 应用的核心组件,其架构设计直接关系到模型在实际部署环境中的效率、灵活性和资源利用率。整体架构可以细分为优化阶段和运行阶段,每个阶段都包含了一系列关键技术以确保模型能够高效、准确地运行于目标设备上。
![推理引擎架构](images/05Inference07.png)
@@ -287,7 +287,7 @@ NCHW 布局下,由于同一通道的数据连续存储,GPU 可以一次性
### 端侧学习
-端侧学习,作为人工智能领域的一个前沿分支,致力于克服传统云中心化模型训练的局限,通过将学习能力直接赋予边缘设备,如手机、物联网传感器等,实现数据处理的本地化和即时性。这一范式的两大核心概念——增量学习和联邦学习,正在重新定义 AI 模型的训练和应用方式,为解决数据隐私、网络延迟和计算资源分配等问题提供了创新途径。
+端侧学习,作为 AI 领域的一个前沿分支,致力于克服传统云中心化模型训练的局限,通过将学习能力直接赋予边缘设备,如手机、物联网传感器等,实现数据处理的本地化和即时性。这一范式的两大核心概念——增量学习和联邦学习,正在重新定义 AI 模型的训练和应用方式,为解决数据隐私、网络延迟和计算资源分配等问题提供了创新途径。
![端侧学习模块](images/05Inference10.png)
diff --git a/04Inference/01Inference/07MindIEIntro.md b/04Inference/01Inference/07MindIEIntro.md
index 399ec2a2..c65b68bb 100644
--- a/04Inference/01Inference/07MindIEIntro.md
+++ b/04Inference/01Inference/07MindIEIntro.md
@@ -94,7 +94,7 @@ MindIE-RT 专注于为用户提供快速迁移、稳定精度以及极致性能
- 支持多语言 API(C++, Python):详情参见 C++编程模型和 Python 编程模型。
-- 提供 parser,支持直接导入人工智能框架 ONNX 模型,详情参见解析框架模型。
+- 提供 parser,支持直接导入 AI 框架 ONNX 模型,详情参见解析框架模型。
- 支持 Transformer 算子加速库,集成基础高性能算子,详情可见 ATB 高性能加速库使用。
diff --git a/04Inference/01Inference/08AscendCL.md b/04Inference/01Inference/08AscendCL.md
index 52b1ef92..33bf1054 100644
--- a/04Inference/01Inference/08AscendCL.md
+++ b/04Inference/01Inference/08AscendCL.md
@@ -8,9 +8,9 @@ AscendCL 作为华为 Ascend 系列 AI 处理器的软件开发框架,为用
## AscendCL 基本介绍
-AscendCL(Ascend Computing Language)是一套用于在昇腾平台上开发深度神经网络应用的 C 语言 API 库,提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 API,能够实现利用昇腾硬件计算资源、在昇腾 CANN 平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。
+AscendCL(Ascend Computing Language)是一套用于在昇腾平台上开发神经网络应用的 C 语言 API 库,提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 API,能够实现利用昇腾硬件计算资源、在昇腾 CANN 平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。
-简单来说,就是统一的 API 框架,实现对所有资源的调用。其中,计算资源层是昇腾 AI 处理器的硬件算力基础,主要完成神经网络的矩阵相关计算、完成控制算子/标量/向量等通用计算和执行控制功能、完成图像和视频数据的预处理,为深度神经网络计算提供了执行上的保障。
+简单来说,就是统一的 API 框架,实现对所有资源的调用。其中,计算资源层是昇腾 AI 处理器的硬件算力基础,主要完成神经网络的矩阵相关计算、完成控制算子/标量/向量等通用计算和执行控制功能、完成图像和视频数据的预处理,为神经网络计算提供了执行上的保障。
### AscendCL 优势
diff --git a/04Inference/01Inference/srt/03.srt b/04Inference/01Inference/srt/03.srt
index 54e0a74a..201c0c90 100644
--- a/04Inference/01Inference/srt/03.srt
+++ b/04Inference/01Inference/srt/03.srt
@@ -300,7 +300,7 @@
76
00:03:13,240 --> 00:03:17,520
-云端的问题就是人工智能的服务成本非常高昂
+云端的问题就是 AI 的服务成本非常高昂
77
00:03:17,720 --> 00:03:19,840
diff --git a/04Inference/02Mobilenet/01Introduction.md b/04Inference/02Mobilenet/01Introduction.md
index 56e3ab9f..3b94b44e 100644
--- a/04Inference/02Mobilenet/01Introduction.md
+++ b/04Inference/02Mobilenet/01Introduction.md
@@ -4,7 +4,7 @@
本节将介绍 AI 模型网络参数方面的一些基本概念,以及硬件相关的性能指标,为后面让大家更了解模型轻量化做初步准备。值得让人思考的是,随着深度学习的发展,神经网络被广泛应用于各种领域,模型性能的提高同时也引入了巨大的参数量和计算量(如下图右所示),一般来说模型参数量越大,精度越高,性能越好(如下图左所示)。
-但由于大部分的深度神经网络模型的参数量很大,无法满足直接部署到移动端的条件,因此在不严重影响模型性能的前提下对模型进行重新设计,来减少网络参数量和计算复杂度,提升运算能力是目前相当热门的研究方向。同时也希望在后续的章节中,让大家更了解模型轻量化的一些经典网络结构。
+但由于大部分的神经网络模型的参数量很大,无法满足直接部署到移动端的条件,因此在不严重影响模型性能的前提下对模型进行重新设计,来减少网络参数量和计算复杂度,提升运算能力是目前相当热门的研究方向。同时也希望在后续的章节中,让大家更了解模型轻量化的一些经典网络结构。
![Introduction](images/01Introduction01.png)
diff --git a/04Inference/02Mobilenet/02CNN.md b/04Inference/02Mobilenet/02CNN.md
index 12e2d2b1..36d54818 100644
--- a/04Inference/02Mobilenet/02CNN.md
+++ b/04Inference/02Mobilenet/02CNN.md
@@ -2,7 +2,7 @@
# CNN 模型小型化(上)
-深度神经网络模型被广泛的应用于工业领域,并取得了巨大成功。然而,由于存储空间以及算力的限制,大而复杂的神经网络模型是难以被应用的。首先由于模型过于庞大,计算参数多(如下图所示),面临内存不足的问题。其次某些场景要求低延迟,或者响应要快。所以,研究小而高效的 CNN 模型至关重要。
+神经网络模型被广泛的应用于工业领域,并取得了巨大成功。然而,由于存储空间以及算力的限制,大而复杂的神经网络模型是难以被应用的。首先由于模型过于庞大,计算参数多(如下图所示),面临内存不足的问题。其次某些场景要求低延迟,或者响应要快。所以,研究小而高效的 CNN 模型至关重要。
本章将介绍一些常见的 CNN 小型化结构,如:SqueezeNet 系列(2016),ShuffleNet 系列(2017),MobileNet 系列(2017),ESPNet 系列(2018),FBNet 系列(2018),EfficientNet 系列(2019),GhostNet 系列(2019)。
diff --git a/04Inference/02Mobilenet/02Cnn.md b/04Inference/02Mobilenet/02Cnn.md
index 12e2d2b1..36d54818 100644
--- a/04Inference/02Mobilenet/02Cnn.md
+++ b/04Inference/02Mobilenet/02Cnn.md
@@ -2,7 +2,7 @@
# CNN 模型小型化(上)
-深度神经网络模型被广泛的应用于工业领域,并取得了巨大成功。然而,由于存储空间以及算力的限制,大而复杂的神经网络模型是难以被应用的。首先由于模型过于庞大,计算参数多(如下图所示),面临内存不足的问题。其次某些场景要求低延迟,或者响应要快。所以,研究小而高效的 CNN 模型至关重要。
+神经网络模型被广泛的应用于工业领域,并取得了巨大成功。然而,由于存储空间以及算力的限制,大而复杂的神经网络模型是难以被应用的。首先由于模型过于庞大,计算参数多(如下图所示),面临内存不足的问题。其次某些场景要求低延迟,或者响应要快。所以,研究小而高效的 CNN 模型至关重要。
本章将介绍一些常见的 CNN 小型化结构,如:SqueezeNet 系列(2016),ShuffleNet 系列(2017),MobileNet 系列(2017),ESPNet 系列(2018),FBNet 系列(2018),EfficientNet 系列(2019),GhostNet 系列(2019)。
diff --git a/04Inference/03Slim/02Quant.md b/04Inference/03Slim/02Quant.md
index c42fbc1d..364b90c7 100644
--- a/04Inference/03Slim/02Quant.md
+++ b/04Inference/03Slim/02Quant.md
@@ -14,9 +14,9 @@
低比特量化主要用在推理的场景,因此以量化和推理的视角来看,神经网络一般具有以下特点:
-1. **模型参数量大**:神经网络模型通常具有大量的参数,特别是在深度神经网络中,参数数量可能非常庞大。这导致了存储这些参数所需的空间也很大。
+1. **模型参数量大**:神经网络模型通常具有大量的参数,特别是在神经网络中,参数数量可能非常庞大。这导致了存储这些参数所需的空间也很大。
-2. **计算量大**:神经网络的推理阶段通常需要大量的计算资源,尤其是在深度神经网络中,包含大量的矩阵乘法和非线性激活函数等操作。这些计算量大大增加了模型在实际部署和执行过程中的成本。
+2. **计算量大**:神经网络的推理阶段通常需要大量的计算资源,尤其是在神经网络中,包含大量的矩阵乘法和非线性激活函数等操作。这些计算量大大增加了模型在实际部署和执行过程中的成本。
3. **内存占用大**:由于神经网络模型的参数量大、计算量大,因此在推理过程中需要大量的 NPU 内存来存储模型参数、中间计算结果等。这对于嵌入式设备、移动设备等资源受限的环境来说可能是一个挑战。
diff --git a/04Inference/03Slim/05Pruning.md b/04Inference/03Slim/05Pruning.md
index 01852adf..c1b9d6bd 100644
--- a/04Inference/03Slim/05Pruning.md
+++ b/04Inference/03Slim/05Pruning.md
@@ -8,7 +8,7 @@
## 模型剪枝概述
-为了从海量的数据中学到更多“知识”,深度神经网络的规模变得越来越大。这些大型神经网络拥有庞大的参数,远远超出了人类能够直观理解和处理的范畴。这种规模的增加带来了模型训练和推理时巨大的计算和存储压力。为了减少神经网络模型对存储、带宽和计算等硬件资源的需求,将模型更好地应用到实际环境中,一些模型压缩方法被提出。
+为了从海量的数据中学到更多“知识”,神经网络的规模变得越来越大。这些大型神经网络拥有庞大的参数,远远超出了人类能够直观理解和处理的范畴。这种规模的增加带来了模型训练和推理时巨大的计算和存储压力。为了减少神经网络模型对存储、带宽和计算等硬件资源的需求,将模型更好地应用到实际环境中,一些模型压缩方法被提出。
模型压缩将一个庞大而复杂的预训练模型转化为一个更精简的小模型,尽可能在不牺牲模型精确度的情况下,减少模型的存储和计算负载,从而使得模型更高效在各种硬件平台上部署和运行。模型压缩方法主要分为这几类:**量化(Quantization)**,**剪枝(Pruning)**,**知识蒸馏(Knowledge Distillation)** 和 **二值化网络(Binary Neural Network)** 等等。
diff --git a/04Inference/03Slim/06Distillation.md b/04Inference/03Slim/06Distillation.md
index db8aba70..ebdae5a4 100644
--- a/04Inference/03Slim/06Distillation.md
+++ b/04Inference/03Slim/06Distillation.md
@@ -30,7 +30,7 @@
## 知识类型
-大型深度神经网络中的知识来源非常丰富,不仅仅局限于模型在训练过程中学习到的权重(weights)和偏置(biases),还包括其他多种形式的信息。
+大型神经网络中的知识来源非常丰富,不仅仅局限于模型在训练过程中学习到的权重(weights)和偏置(biases),还包括其他多种形式的信息。
知识的类型可以分为四类,主要有 Response-based、Feature-based、Relation-based 三种,另外还有一种较少提及的类型,即 Architecture-based 的知识。
@@ -54,9 +54,9 @@ $$L_{ResD}(z_t,z_s)=L_{R}(z_t,z_s)$$
### feature-based knowledge
-上面一种方法学习目标非常直接,学生模型直接学习教师模型的最后预测结果,然而输出层提供的信息是有限的。在深度神经网络中,数据通过多个层次的神经元进行传递和处理,每一层都可以看作是对数据的一种特征提取和变换。
+上面一种方法学习目标非常直接,学生模型直接学习教师模型的最后预测结果,然而输出层提供的信息是有限的。在神经网络中,数据通过多个层次的神经元进行传递和处理,每一层都可以看作是对数据的一种特征提取和变换。
-随着网络的深度增加,每一层提取的特征都越来越抽象和高级,可以捕捉到数据中更加复杂和抽象的模式和结构。考虑到深度神经网络擅长学习不同抽象级别的多层特征表示,因此模型中间层的输出,即特征图,也可以作为指导学生模型学习的知识。
+随着网络的深度增加,每一层提取的特征都越来越抽象和高级,可以捕捉到数据中更加复杂和抽象的模式和结构。考虑到神经网络擅长学习不同抽象级别的多层特征表示,因此模型中间层的输出,即特征图,也可以作为指导学生模型学习的知识。
![Feature-based knowledge](images/06Distillation05.png)
diff --git a/04Inference/04Converter/02Principle.md b/04Inference/04Converter/02Principle.md
index b552c5c4..f45cf4e9 100644
--- a/04Inference/04Converter/02Principle.md
+++ b/04Inference/04Converter/02Principle.md
@@ -315,7 +315,7 @@ root_type Monster;
很多 AI 推理框架都是用的 FlatBuffers,最主要的有以下两个:
-**[MNN](https://github.com/alibaba/MNN/blob/master/README_CN.md):** 阿里巴巴的深度神经网络推理引擎,是一个轻量级的深度神经网络引擎,支持深度学习的推理与训练。适用于服务器/个人电脑/手机/嵌入式各类设备。目前,MNN 已经在阿里巴巴的手机淘宝、手机天猫、优酷等 30 多个 App 中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。MNN 模型文件采用的存储结构是 FlatBuffers。
+**[MNN](https://github.com/alibaba/MNN/blob/master/README_CN.md):** 阿里巴巴的神经网络推理引擎,是一个轻量级的神经网络引擎,支持深度学习的推理与训练。适用于服务器/个人电脑/手机/嵌入式各类设备。目前,MNN 已经在阿里巴巴的手机淘宝、手机天猫、优酷等 30 多个 App 中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。MNN 模型文件采用的存储结构是 FlatBuffers。
**[MindSpore Lite](https://www.mindspore.cn/lite/en):** 一种适用于端边云场景的新型开源深度学习训练/推理框架,提供离线转换模型功能的工具,支持多种类型的模型转换,转换后的模型可用于推理。除了基本的模型转换功能之外,还支持用户对模型进行自定义的优化与构建,生成用户自定义算子的模型。
diff --git a/04Inference/04Converter/04Detail.md b/04Inference/04Converter/04Detail.md
index be5d4ec2..75b14a43 100644
--- a/04Inference/04Converter/04Detail.md
+++ b/04Inference/04Converter/04Detail.md
@@ -116,7 +116,7 @@ torch.save(pytorch_model.state_dict(), 'pytorch_model.pth')
### ONNX 概述
-ONNX(Open Neural Network Exchange)是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如 Pytorch、MXNet)可以采用相同格式存储模型数据并交互。
+ONNX(Open Neural Network Exchange)是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的 AI 框架(如 Pytorch、MXNet)可以采用相同格式存储模型数据并交互。
ONNX 的规范及代码主要由微软,亚马逊,Meta 和 IBM 等公司共同开发,以开放源代码的方式托管在 Github 上。目前官方支持加载 ONNX 模型并进行推理的 AI 框架有:Caffe2、PyTorch、MXNet、ML.NET、TensorRT 和 Microsoft CNTK,并且 TensorFlow 也非官方的支持 ONNX。
diff --git a/04Inference/05Optimize/02Basic.md b/04Inference/05Optimize/02Basic.md
index 9e6fa782..3d758e20 100644
--- a/04Inference/05Optimize/02Basic.md
+++ b/04Inference/05Optimize/02Basic.md
@@ -160,7 +160,7 @@ Concat Slice Elimination: 合并后又进行同样的拆分,可同时删除这
### 公共子图优化
-在一个深度神经网络中,如果几个子图的类型、参数和输入均相同, 则将他们称做公共子图。对于公共子图, 只需要计算其中一个子图的值, 其他子图的值可以通过赋值得到。这个过程就称作公共子图消除, 它是一种传统编译器中常用的优化手段, 经过迁移也可以应用到深度学习编译器中。
+在一个神经网络中,如果几个子图的类型、参数和输入均相同, 则将他们称做公共子图。对于公共子图, 只需要计算其中一个子图的值, 其他子图的值可以通过赋值得到。这个过程就称作公共子图消除, 它是一种传统编译器中常用的优化手段, 经过迁移也可以应用到深度学习编译器中。
Common Subexpression Elimination:当模型当中出现了公共子图,如一个输出是另外两个同类型同参数的 Op 的输入,则可进行删除其中一个 Op。
diff --git a/04Inference/06Kernel/01Introduction.md b/04Inference/06Kernel/01Introduction.md
index 3f717796..54f905e9 100644
--- a/04Inference/06Kernel/01Introduction.md
+++ b/04Inference/06Kernel/01Introduction.md
@@ -48,9 +48,9 @@ GPU 优化:
此外,封装的高性能算子库有:
-1. **cuDNN(CUDA Deep Neural Network Library)**:由英伟达开发,为 GPU 优化的深度神经网络算子库,包括卷积、池化、归一化、激活函数等;
+1. **cuDNN(CUDA Deep Neural Network Library)**:由英伟达开发,为 GPU 优化的神经网络算子库,包括卷积、池化、归一化、激活函数等;
-2. **MKL-DNN(Intel Math Kernel Library for Deep Neural Networks)**:由 Intel 开发,为 CPU 优化的深度神经网络算子库,现在发展成为 oneDNN,支持多种 Intel 处理器;
+2. **MKL-DNN(Intel Math Kernel Library for Deep Neural Networks)**:由 Intel 开发,为 CPU 优化的神经网络算子库,现在发展成为 oneDNN,支持多种 Intel 处理器;
3. **MIOpen**:由 AMD 开发,为 GPU 优化的深度学习算子库,特别针对 AMD 的 GPU 架构进行了优化;
diff --git a/04Inference/06Kernel/06Memory.md b/04Inference/06Kernel/06Memory.md
index a7e3201c..726eebc1 100644
--- a/04Inference/06Kernel/06Memory.md
+++ b/04Inference/06Kernel/06Memory.md
@@ -36,7 +36,7 @@ GPU 互相之间一般是通过 PCIe 桥直接传输数据,或者是通过 NVL
## MNN
-MNN 是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。
+MNN 是一个轻量级的深度学习端侧推理引擎,核心解决神经网络模型在端侧推理运行问题,涵盖神经网络模型的优化、转换和推理。
其对 WinoGrad 卷积计算进行内核优化,重新排布了其数据格式,下面我们来进行详细介绍。
diff --git a/05Framework/01Foundation/01Introduction.md b/05Framework/01Foundation/01Introduction.md
index b9fdd80f..a17f04ce 100644
--- a/05Framework/01Foundation/01Introduction.md
+++ b/05Framework/01Foundation/01Introduction.md
@@ -6,17 +6,17 @@
上面的几个问题其实还挺有挑战的,也是本节需要回答的一个问题。下面来对一些基础概念进程澄清:首先深度学习是机器学习研究领域中的一种范式,而深度学习的概念源于对人工神经网络的研究,很多深度学习算法都使用神经网络进行表示,因为神经网络的性能精度和通用效果都非常好,于是业界习惯性地把深度学习算法等同于 AI。
-![人工智能发展路线](images/01Introduction01.png)
+![ AI 发展路线](images/01Introduction01.png)
## AI 框架基础介绍
-在 AI 框架基础系列里面,将会先介绍神经网络和深度学习的基本概念,了解深度学习、神经网络、人工智能多个新名词和新概念之间的种种关联关系。简单而言,而深度学习是通过函数逼近来解析神经网络的数学原理,通过反向求导算法来求解神经网络中参数的偏导,从而迭代地求解神经网络中的最优值。不过上面的叙述还是有点难以理解复杂的数学原理,因此在 AI 框架作用中的深度学习基础,将会深入浅出地介绍介绍深度学习的基础。
+在 AI 框架基础系列里面,将会先介绍神经网络和深度学习的基本概念,了解深度学习、神经网络、 AI 多个新名词和新概念之间的种种关联关系。简单而言,而深度学习是通过函数逼近来解析神经网络的数学原理,通过反向求导算法来求解神经网络中参数的偏导,从而迭代地求解神经网络中的最优值。不过上面的叙述还是有点难以理解复杂的数学原理,因此在 AI 框架作用中的深度学习基础,将会深入浅出地介绍介绍深度学习的基础。
有了深度学习的基础之后,就能够比较好地理解 AI 框架的实际作用,即作为 AI 算法(深度学习算法)的模型设计、训练和验证的一套标准接口、特性库和工具包,集成了算法的封装、数据的调用以及计算资源的使用,同时面向开发者提供了开发界面和高效的执行平台,是现阶段 AI 算法开发的必备工具。
有了对深度学习的认识、对 AI 框架作用的认识,自然就理解 AI 框架的目的和为什么目前国内厂商,无论是华为昇腾构建 MindSpore、百度打造飞桨 PaddlePaddle、之江实验室联合一流科技开发的 OneFlow,包括商汤、旷视都推出自己的自研 AI 框架了。
-可是 AI 的框架发展并不顺利,从萌芽阶段(2000 年初期)、 成长阶段(2012~2014 年)、稳定阶段(2015 年~2019 年)、深化阶段(2020 年以后)。其发展脉络与人工智能,特别是神经网络技术的异峰突起有非常紧密的联系。中间又经历了三代框架,这里面提到的 AI 框架三代并不是以时间为维度,更多的是以技术为区分维度,通过不同的技术手段走过三代技术框架,从而使得 AI 框架慢慢走向成熟。
+可是 AI 的框架发展并不顺利,从萌芽阶段(2000 年初期)、 成长阶段(2012~2014 年)、稳定阶段(2015 年~2019 年)、深化阶段(2020 年以后)。其发展脉络与 AI ,特别是神经网络技术的异峰突起有非常紧密的联系。中间又经历了三代框架,这里面提到的 AI 框架三代并不是以时间为维度,更多的是以技术为区分维度,通过不同的技术手段走过三代技术框架,从而使得 AI 框架慢慢走向成熟。
截至目前为止,国际主流的 AI 框架(PyTorch、TensorFlow 等)基本均已经实现动态图开发、静态图部署的编程范式,具备动静态图转换的能力,不过基于开发效率考虑,动态图与静态图的转换与统一需要持续迭代优化。
diff --git a/05Framework/01Foundation/02Fundamentals.md b/05Framework/01Foundation/02Fundamentals.md
index b137c818..a34dc0db 100644
--- a/05Framework/01Foundation/02Fundamentals.md
+++ b/05Framework/01Foundation/02Fundamentals.md
@@ -26,7 +26,7 @@
实际上,一个神经网络由多个神经元结构组成,每一层的神经元都拥有多个输入和输出,一层可以由多个神经元组成。例如,第 2 层神经网络的神经元输出是第 3 层神经元的输入,输入的数据通过神经元上的激活函数(非线性函数如 tanh、sigmod 等),来控制输出的数值。
-数学上简单地理解,单个神经元其实就是一个 $X·W$ 的矩阵乘,然后加一个激活函数 $fun(X·W)$,通过复合函数组合神经元,就变成一个神经网络的层。这种模拟生物神经元的数学计算,能够很好地对大规模独立同分布的数据进行非线性映射和处理,使得其能够应对到人工智能的不同任务。
+数学上简单地理解,单个神经元其实就是一个 $X·W$ 的矩阵乘,然后加一个激活函数 $fun(X·W)$,通过复合函数组合神经元,就变成一个神经网络的层。这种模拟生物神经元的数学计算,能够很好地对大规模独立同分布的数据进行非线性映射和处理,使得其能够应对到 AI 的不同任务。
![神经网络与神经元关系](images/02Fundamentals01.png)
@@ -132,7 +132,7 @@ $$ \frac{\partial loss}{\partial w_1} = {Loss}'(L_3, y) {sigmoid}'(w_3,L_2) {sig
- AI 框架作为实现深度学习的关键工具,其核心功能是自动微分,它利用计算图和链式法则高效地计算神经网络参数的梯度。
-- AI 框架通过封装训练过程,使得算法研究人员可以专注于网络结构设计和优化算法研究,从而加速神经网络模型的训练和精度提升,广泛应用于分类、回归、拟合等人工智能任务。
+- AI 框架通过封装训练过程,使得算法研究人员可以专注于网络结构设计和优化算法研究,从而加速神经网络模型的训练和精度提升,广泛应用于分类、回归、拟合等 AI 任务。
## 本节视频
diff --git a/05Framework/01Foundation/03History.md b/05Framework/01Foundation/03History.md
index 9fd26328..9f21f4d0 100644
--- a/05Framework/01Foundation/03History.md
+++ b/05Framework/01Foundation/03History.md
@@ -26,9 +26,9 @@
相比之下,神经网络方法能够通过调节构成网络使用的处理单元,处理单元之间的堆叠方式,以及网络的学习算法,用一种较为统一的算法设计视角解决各类应用任务,很大程度上减轻了机器学习算法设计的选择困难。同时,神经网络能够拟合海量数据,深度学习方法在图像分类,语音识别以及自然语言处理任务中取得的突破性进展,揭示了构建更大规模的神经网络对大规模数据进行学习,是一种有效的学习策略。
-然而,深度神经网络应用的开发需要对软件栈的各个抽象层进行编程,这对新算法的开发效率和算力都提出了很高的要求,进而催生了 AI 框架的发展。AI 框架可以让开发者更加专注于应用程序的业务逻辑,而不需要关注底层的数学和计算细节。同时 AI 框架通常还提供可视化的界面,使得开发者可以更加方便地设计、训练和优化自己的模型。在 AI 框架之上,还会提供了一些预训练的网络模型,可以直接用于一些常见的应用场景,例如图像识别、语音识别和自然语言处理等。
+然而,神经网络应用的开发需要对软件栈的各个抽象层进行编程,这对新算法的开发效率和算力都提出了很高的要求,进而催生了 AI 框架的发展。AI 框架可以让开发者更加专注于应用程序的业务逻辑,而不需要关注底层的数学和计算细节。同时 AI 框架通常还提供可视化的界面,使得开发者可以更加方便地设计、训练和优化自己的模型。在 AI 框架之上,还会提供了一些预训练的网络模型,可以直接用于一些常见的应用场景,例如图像识别、语音识别和自然语言处理等。
-AI 框架的目的是为了在计算加速硬件(GPU/NPU)和 AI 集群上高效训练深度神经网络而设计的可编程系统,需要同时兼顾以下互相制约设计目标可编程性与性能。
+AI 框架的目的是为了在计算加速硬件(GPU/NPU)和 AI 集群上高效训练神经网络而设计的可编程系统,需要同时兼顾以下互相制约设计目标可编程性与性能。
1. **提供灵活的编程模型和编程接口**
@@ -68,9 +68,9 @@ AI 框架作为智能经济时代的中枢,是 AI 开发环节中的基础工
- **成长阶段**
-2012 年,Alex Krizhevsky 等人提出了 AlexNet 一种深度神经网络架构,在 ImageNet 数据集上达到了最佳精度,并碾压第二名提升 15%以上的准确率,引爆了深度神经网络的热潮。
+2012 年,Alex Krizhevsky 等人提出了 AlexNet 一种神经网络架构,在 ImageNet 数据集上达到了最佳精度,并碾压第二名提升 15%以上的准确率,引爆了神经网络的热潮。
-自此极大地推动了 AI 框架的发展,出现了 Caffe、Chainer 和 Theano 等具有代表性的早期 AI 框架,帮助开发者方便地建立复杂的深度神经网络模型(如 CNN、RNN、LSTM 等)。不仅如此,这些框架还支持多 GPU 训练,让开展更大、更深的模型训练成为可能。在这一阶段,AI 框架体系已经初步形成,声明式编程和命令式编程为下一阶段的 AI 框架发展的两条截然不同的道路做了铺垫。
+自此极大地推动了 AI 框架的发展,出现了 Caffe、Chainer 和 Theano 等具有代表性的早期 AI 框架,帮助开发者方便地建立复杂的神经网络模型(如 CNN、RNN、LSTM 等)。不仅如此,这些框架还支持多 GPU 训练,让开展更大、更深的模型训练成为可能。在这一阶段,AI 框架体系已经初步形成,声明式编程和命令式编程为下一阶段的 AI 框架发展的两条截然不同的道路做了铺垫。
- **爆发阶段**
@@ -118,7 +118,7 @@ AI 框架作为智能经济时代的中枢,是 AI 开发环节中的基础工
第二代 AI 框架在技术上,统一称为**基于数据流图(DAG)的计算框架**:将复杂的神经网络模型,根据数据流拆解为若干处理环节,构建数据流图,数据流图中的处理环节相互独立,支持混合编排控制流与计算,以任务流为最终导向,AI 框架将数据流图转换为计算机可以执行或者识别的任务流图,通过执行引擎(Runtime)解析任务流进行处理环节的分发调度、监控与结果回传,最终实现神经网络模型的构建与运行。
-以数据流图描述深度神经网络,前期实践最终催生出了工业级 AI 框架,如 TensorFlow 和 PyTorch,这一时期同时伴随着如 Chainer,DyNet 等激发了 AI 框架设计灵感的诸多实验课程。TensorFlow 和 PyTorch 代表了现今 AI 框架框架的两种不同的设计路径:系统性能优先改善灵活性,和灵活性易用性优先改善系统性能。
+以数据流图描述神经网络,前期实践最终催生出了工业级 AI 框架,如 TensorFlow 和 PyTorch,这一时期同时伴随着如 Chainer,DyNet 等激发了 AI 框架设计灵感的诸多实验课程。TensorFlow 和 PyTorch 代表了现今 AI 框架框架的两种不同的设计路径:系统性能优先改善灵活性,和灵活性易用性优先改善系统性能。
这两种选择,随着神经网络算法研究和应用的更进一步发展,又逐步造成了 AI 框架在具体技术实现方案的分裂。
@@ -140,7 +140,7 @@ AI 框架作为智能经济时代的中枢,是 AI 开发环节中的基础工
**AI 框架将支持端边云全场景跨平台设备部署**
-网络模型需要适配部署到端边云全场景设备,对 AI 框架提出了多样化、复杂化、碎片化的挑战。随着云服务器、边缘设备、终端设备等人工智能硬件运算设备的不断涌现,以及各类人工智能运算库、中间表示工具以及编程框架的快速发展,人工智能软硬件生态呈现多样化发展趋势。
+网络模型需要适配部署到端边云全场景设备,对 AI 框架提出了多样化、复杂化、碎片化的挑战。随着云服务器、边缘设备、终端设备等 AI 硬件运算设备的不断涌现,以及各类 AI 运算库、中间表示工具以及编程框架的快速发展, AI 软硬件生态呈现多样化发展趋势。
但目前主流 AI 框架仍然分为训练部分和推理部分,两者不完全兼容。训练出来的模型也不能通用,学术科研课程间难以合作延伸,造成了 AI 框架的碎片化。目前业界并没有统一的中间表示层标准,导致各硬件厂商解决方案存在一定差异,以致应用模型迁移不畅,增加了应用部署难度。因此,基于 AI 框架训练出来的模型进行标准化互通将是未来的挑战。
@@ -186,7 +186,7 @@ OpenAI 于 2020 年 5 月发布 GPT-3 模型,包含 1750 亿参数,数据集
- AI 框架作为智能经济时代的基础设施,其发展经历了从萌芽到成长、爆发和深化的四个阶段,目前正向着全场景支持、大模型、分布式 AI、超大规模 AI、安全可信 AI 等技术特性深化探索。
-- AI 框架的核心目标是提供灵活易用的编程模型和高效可扩展的计算能力,以支持深度神经网络的训练和推理,同时兼顾可编程性和性能。
+- AI 框架的核心目标是提供灵活易用的编程模型和高效可扩展的计算能力,以支持神经网络的训练和推理,同时兼顾可编程性和性能。
- 随着 AI 应用场景的扩展和新趋势的出现,AI 框架正面临支持全场景跨平台设备部署、强化大规模分布式 AI 支持、与科学计算深度融合交叉等多样化挑战。
diff --git a/05Framework/01Foundation/05MindSpore.md b/05Framework/01Foundation/05MindSpore.md
index 0c5d3675..603eef21 100644
--- a/05Framework/01Foundation/05MindSpore.md
+++ b/05Framework/01Foundation/05MindSpore.md
@@ -62,7 +62,7 @@ class Sample: #class declaration
- Tensor操作(Operation)
- 权重(Weights)
-此二者恰好与类的Methods和Attributes一一对应,同时权重本身就是神经网络层的内部状态,因此使用类来构造Layer天然符合其定义。此外,我们在编程时希望使用神经网络层进行堆叠,构造深度神经网络,使用OOP编程可以很容易地通过Layer对象组合构造新的Layer类。
+此二者恰好与类的Methods和Attributes一一对应,同时权重本身就是神经网络层的内部状态,因此使用类来构造Layer天然符合其定义。此外,我们在编程时希望使用神经网络层进行堆叠,构造神经网络,使用OOP编程可以很容易地通过Layer对象组合构造新的Layer类。
下面为使用昇思MindSpore构造神经网络类的示例:
@@ -275,7 +275,7 @@ JIT Fallback特性主要作用于MindCompiler编译器的实现,应用于图
#### 联邦学习
-随着人工智能的飞速发展,大规模和高质量的数据对模型的效果和用户的体验都变得越来越重要。与此同时,数据的利用率成为了制约了人工智能的进一步发展的瓶颈。隐私、监管和工程等问题造成了设备与设备之间的数据不能共享,进而导致了数据孤岛问题的出现。为了解决这一难题,联邦学习(Federated Learning,FL)应运而生。联邦学习的概念最早在2016年被提了出来。在满足用户隐私保护、数据安全和政府法规的要求下,联邦学习能有效地使用多方机构的数据进行机器学习建模。
+随着 AI 的飞速发展,大规模和高质量的数据对模型的效果和用户的体验都变得越来越重要。与此同时,数据的利用率成为了制约了 AI 的进一步发展的瓶颈。隐私、监管和工程等问题造成了设备与设备之间的数据不能共享,进而导致了数据孤岛问题的出现。为了解决这一难题,联邦学习(Federated Learning,FL)应运而生。联邦学习的概念最早在2016年被提了出来。在满足用户隐私保护、数据安全和政府法规的要求下,联邦学习能有效地使用多方机构的数据进行机器学习建模。
MindSpore Federated是华为昇思MindSpore提出的一款开源联邦学习框架,支持千万级无状态终端设备商用化部署,在用户数据留存在本地的情况下,使能全场景智能应用。MindSpore Federated专注于大规模参与方的横向联邦的应用场景,使参与联邦学习的各用户在不共享本地数据的前提下共建AI模型。MindSpore Federated主要解决隐私安全、大规模联邦聚合、半监督联邦学习、通信压缩和跨平台部署等联邦学习在工业场景部署的难点。
diff --git a/05Framework/02AutoDiff/07Challenge.md b/05Framework/02AutoDiff/07Challenge.md
index 2bad1b99..946cfaaa 100644
--- a/05Framework/02AutoDiff/07Challenge.md
+++ b/05Framework/02AutoDiff/07Challenge.md
@@ -169,7 +169,7 @@ $$ \frac{\partial^{2} y }{\partial x^{2}} = \frac{\mathrm{d}}{\mathrm{d} y}\left
可微编程是将自动微分技术与语言设计、编译器 / 解释器甚至 IDE 等工具链等深度融合,将微分作为高级编程语言中第一特性(first-class feature)。
-而可微分编程是一种编程范型,在其中数值计算程序始终可通过自动微分来求导数。这允许了对程序中的参数的基于梯度优化(Gradient method),通常使用梯度下降或其他基于高阶微分信息的学习方法。可微分编程用于各个领域,尤其是科学计算和人工智能。
+而可微分编程是一种编程范型,在其中数值计算程序始终可通过自动微分来求导数。这允许了对程序中的参数的基于梯度优化(Gradient method),通常使用梯度下降或其他基于高阶微分信息的学习方法。可微分编程用于各个领域,尤其是科学计算和 AI 。
目前大多数可微编程框架,通过构建包含程序中的控制流和数据结构的图来工作。尝试通常分为两组:基于静态和编译图的方法,例如 TensorFlow、Theano、MXNet 和 PaddlePaddle。这些往往有助于良好的编译器优化和扩展到大型系统,但它们的静态特性使它们交互性较差,并且更易于编写程序类型(例如包含循环和递归的程序)。不仅有限,而且用户也难以推理、有效地解释他们的程序。
diff --git a/05Framework/03DataFlow/01Introduction.md b/05Framework/03DataFlow/01Introduction.md
index 07ab47a9..d4cb4e3d 100644
--- a/05Framework/03DataFlow/01Introduction.md
+++ b/05Framework/03DataFlow/01Introduction.md
@@ -2,7 +2,7 @@
# 基本介绍
-在 AI 框架发展的最近一个阶段,技术上主要以计算图来描述深度神经网络。前期实践最终催生出了工业级 AI:TensorFlow 和 PyTorch,这一时期同时伴随着如 Chainer、DyNet、CNTK、PaddlePaddle、JAX 等激发了框架设计灵感的诸多实验课程。
+在 AI 框架发展的最近一个阶段,技术上主要以计算图来描述神经网络。前期实践最终催生出了工业级 AI:TensorFlow 和 PyTorch,这一时期同时伴随着如 Chainer、DyNet、CNTK、PaddlePaddle、JAX 等激发了框架设计灵感的诸多实验课程。
TensorFlow 和 PyTorch,特别是 PyTorch 代表了今天 AI 框架两种不同的设计路径:系统性能优先改善灵活性和灵活性易用性优先改善系统性能。这两种选择,随着神经网络算法研究和应用的更进一步发展,使得 AI 框架在技术实现方案的巨大差异。
diff --git a/05Framework/03DataFlow/03Atuodiff.md b/05Framework/03DataFlow/03Atuodiff.md
index 4a02103d..fa43e9d9 100644
--- a/05Framework/03DataFlow/03Atuodiff.md
+++ b/05Framework/03DataFlow/03Atuodiff.md
@@ -52,7 +52,7 @@ $$ L(w)=Loss(f(w, x_i),y_i) \Rightarrow \frac{\partial L(w)}{\partial w} $$
神经网络模型的训练流程中,主要包含网络模型的 1)前向计算,2)计算损失,3)更新权重参数三个最主要的计算阶段。
-当开发者使用 AI 框架提供的 Python API 构造完成一个深度神经网络时,在数学上这个网络模型对应了一个复杂的带参数的高度非凸函数,求解其中的可学习参数依赖于基于一阶梯度的迭代更新法。
+当开发者使用 AI 框架提供的 Python API 构造完成一个神经网络时,在数学上这个网络模型对应了一个复杂的带参数的高度非凸函数,求解其中的可学习参数依赖于基于一阶梯度的迭代更新法。
```Python
class LeNet(nn.Module):
diff --git a/05Framework/03DataFlow/07Future.md b/05Framework/03DataFlow/07Future.md
index 919f1c86..64841091 100644
--- a/05Framework/03DataFlow/07Future.md
+++ b/05Framework/03DataFlow/07Future.md
@@ -67,7 +67,7 @@ AI 框架的设计很自然地沿用了张量和张量操作,将其作为构
- **科学计算**
-自然界中诸多现象如材料损伤与破坏、流体湍流、核爆炸过程、生物大分子等均呈现出巨大的尺度效应, 并伴随着不同尺度上的物理多样性和强耦合性以及多个时间与空间尺度的强关联。这些典型的多尺度问题的求解一直是非常有挑战性的课题。科学计算曾经并正在为求解多尺度问题发挥重要作用,但目前也碰到了瓶颈。人工智能为解决多尺度问题提出了新的思路。
+自然界中诸多现象如材料损伤与破坏、流体湍流、核爆炸过程、生物大分子等均呈现出巨大的尺度效应, 并伴随着不同尺度上的物理多样性和强耦合性以及多个时间与空间尺度的强关联。这些典型的多尺度问题的求解一直是非常有挑战性的课题。科学计算曾经并正在为求解多尺度问题发挥重要作用,但目前也碰到了瓶颈。 AI 为解决多尺度问题提出了新的思路。
未来 AI 和科学计算融合,计算图能否足够表示?针对科学计算的特殊数学范式,如何更好地融合到计算图中?
diff --git a/05Framework/04Parallel/03ZeRODP.md b/05Framework/04Parallel/03ZeRODP.md
index 5c5e1c38..ce7328ab 100644
--- a/05Framework/04Parallel/03ZeRODP.md
+++ b/05Framework/04Parallel/03ZeRODP.md
@@ -16,13 +16,13 @@
- **FP16**:同样是 IEEE 754 标准下的半精度浮点格式。随着深度学习的发展,FP16 逐渐取代了 FP32 的地位。因为相较于 FP32,更低的精度并不会对神经网络的性能产生重大影响。额外的精度不会带来任何好处,反而会更慢、占用更多内存并降低通信速度。FP16 通常用于混合精度训练(MindSpore/PyTorch)。也用于训练后量化,以加快推理速度。其他用于量化的格式还有整数 INT8(8 位整数)、INT4(4 位)甚至 INT1(二进制值)。
-- **BF16**:谷歌最初开发的另一种 16 位格式被称为 "Brain Floating Point Format",简称 "bfloat16"。这个名字源于 "谷歌大脑"(谷歌 Brain),谷歌大脑是谷歌的一个人工智能研究小组,这种格式就是在这个小组构思出来的。最开始是被使用在谷歌芯片 TPU 中,后被广泛使用在 GPU、NPU 等 AI 芯片中。由于具有更多的指数位,常被用于处理 FP16 的溢出问题。
+- **BF16**:谷歌最初开发的另一种 16 位格式被称为 "Brain Floating Point Format",简称 "bfloat16"。这个名字源于 "谷歌大脑"(谷歌 Brain),谷歌大脑是谷歌的一个 AI 研究小组,这种格式就是在这个小组构思出来的。最开始是被使用在谷歌芯片 TPU 中,后被广泛使用在 GPU、NPU 等 AI 芯片中。由于具有更多的指数位,常被用于处理 FP16 的溢出问题。
- **FP32**:这种格式在很长一段时间内都是深度学习的主力,它是 IEEE 754 标准下的单精度浮点数。长期以来,它一直是神经网络计算的标准类型。长期以来,神经网络中的权重、激活和其他值都默认用 FP32 表示。
- **TF32**:这是一种十分特殊的格式(无需显示设置,而是自动执行),它将 FP32 数据截断为 TF32 进行计算,然后再转换回 FP32。这一创新的最大优势在于编译器只需在 AI 编译层提供支持。其他代码部分则可以继续使用动态范围相同但精度较高的 FP32,无需进行修改。TF32 的快速插入性使得利用 AI 计算加速核心的速度成为可能,而无需过多修改现有代码。
-TF32 采用与 FP16 相同的 10 位尾数,这满足了人工智能工作负载的精度要求,并且使用了与 FP32 相同的 8 位指数,因此具有相同的数值范围。从技术上讲,它可以视为一种 19 位格式,也可以视为扩展精度的 BF16。
+TF32 采用与 FP16 相同的 10 位尾数,这满足了 AI 工作负载的精度要求,并且使用了与 FP32 相同的 8 位指数,因此具有相同的数值范围。从技术上讲,它可以视为一种 19 位格式,也可以视为扩展精度的 BF16。
TF32 的优势在于其格式与 FP32 相同。当使用 TF32 进行计算时,输入 FP32 操作数的尾数从 23 位舍入到 10 位,然后进行精确乘法运算,最后以正常的 FP32 格式进行累加。相比之下,FP16 和 BF16 等格式需要更多工作,因为它们涉及不同的位布局。尽管如此,也值得使用这些不同搞得精度格式,因为它们可以减少内存带宽、存储和计算位数,从而提升执行速度。
diff --git a/05Framework/04Parallel/07MSParallel.md b/05Framework/04Parallel/07MSParallel.md
index 7cf0284c..3767ca35 100644
--- a/05Framework/04Parallel/07MSParallel.md
+++ b/05Framework/04Parallel/07MSParallel.md
@@ -4,7 +4,7 @@
## 大模型的带来
-随着深度学习的发展,为了实现更高的准确率和更丰富的应用场景,训练数据集和深度神经网络模型的规模日益增大。特别是自然语言处理(Natural Language Processing,NLP)领域,数据集的范围从200MB到541TB不等。模型的尺寸也从BERT的3.4亿个参数,Transformer-xl的8亿个参数,GPT-2的150亿个参数,到SwitchTransformer的万亿参数,单独存储万亿模型的参数则需要占用TB级别空间。
+随着深度学习的发展,为了实现更高的准确率和更丰富的应用场景,训练数据集和神经网络模型的规模日益增大。特别是自然语言处理(Natural Language Processing,NLP)领域,数据集的范围从200MB到541TB不等。模型的尺寸也从BERT的3.4亿个参数,Transformer-xl的8亿个参数,GPT-2的150亿个参数,到SwitchTransformer的万亿参数,单独存储万亿模型的参数则需要占用TB级别空间。
主流的用于训练的加速器(GPU、TPU和Ascend)的内存仍然只有几十GB,因此,为了能够且高效地完成大模型训练,深度学习框架需要提供丰富的并行训练的能力,支持数据并行、模型并行、混合并行、流水线并行、异构训练和专家并行等技术。
@@ -12,7 +12,7 @@
当前的主流框架(如TensorFlow、Caffe和MXNet)提供了一些基本的并行技术,其中大多数框架提供了算子级别切分、流水线并行或者优化器切分的功能,支持的并行维度和功能的完整度欠佳。
-- 第一,这些框架通过手动的切分来切分深度神经网络模型来实现模型并行,配置难度非常大,对开发者的要求非常高,需要有丰富经验的专家来操作。实现混合并行(数据并行和模型并行同时进行)又极大增加了开发的复杂度。最近的研究成果提出了简化混合并行的方法,但这些方法在几个方面都存在局限性。
+- 第一,这些框架通过手动的切分来切分神经网络模型来实现模型并行,配置难度非常大,对开发者的要求非常高,需要有丰富经验的专家来操作。实现混合并行(数据并行和模型并行同时进行)又极大增加了开发的复杂度。最近的研究成果提出了简化混合并行的方法,但这些方法在几个方面都存在局限性。
- 第二,随着目前模型规模拓展到了万亿级别,训练卡数的规模也上升到了千级,以往的算子级别切分的并行不能满足目前大模型的需求。在大集群训练中,由于模型切分导致的通信占比在整个迭代耗时中升高,需要引入流水线并行等计算来降低通信占比,提升模型训练效率。另外,混合专家(MoE)技术能够在提升模型规模的同时,较少的提升计算量,是目前的一种主流技术。
diff --git a/build_books/sphinx_index.md b/build_books/sphinx_index.md
index fd03fc11..71ec0e2c 100644
--- a/build_books/sphinx_index.md
+++ b/build_books/sphinx_index.md
@@ -16,7 +16,7 @@ title: AISystem & AIInfra
:::
::::
-本开源项目主要是跟大家一起探讨和学习人工智能、深度学习的系统设计,而整个系统是围绕着在 NVIDIA、ASCEND 等芯片厂商构建算力层面,所用到的、积累、梳理得到 AI 系统全栈的内容。希望跟所有关注 AI 开源项目的好朋友一起探讨研究,共同促进学习讨论。
+本开源项目主要是跟大家一起探讨和学习 AI 、深度学习的系统设计,而整个系统是围绕着在 NVIDIA、ASCEND 等芯片厂商构建算力层面,所用到的、积累、梳理得到 AI 系统全栈的内容。希望跟所有关注 AI 开源项目的好朋友一起探讨研究,共同促进学习讨论。
![AI 系统全栈架构图](images/01Introduction/03Architecture03.png)