2、人工智能、机器学习、深度学习的关系是什么
2、监督学习、无监督学习、半监督学习和强化学习是什么
3、什么是模型和网络
4、什么是训练和推理
5、什么是算子
6、什么是计算图、动态图和静态图
7、什么是AI框架
8、通用计算和AI计算的主要区别是什么
9、CPU、GPU、NPU的区别是什么
二、华为人工智能
1、什么是Atlas
2、什么是CANN
3、什么是MindSpore
4、什么是MindX
5、什么是MindStudio
6、华为的AI战略是什么?
三、人工智能与安平行业
1、AI在安平行业有哪些主要场景
2、AI在安平行业有哪些主要算法
3、人脸识别在安平行业中如何应用
人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。简单来说人工智能探寻的是如何用机器来模拟延伸和扩展人类的智能。比如说让机器会听、会看、会说、会想、会思考、会行动、会决策,就像我们人类一样。
人工智能有很多种方法,比如专家系统、机器学习、进化计算、模糊逻辑等等,所以机器学习是实现人工智能的一种方法。随着时代的变迁,机器学习的定义也是演变的,比如大家都能接受的一种定义:“机器学习是一类算法,能让计算机基于它的观察数据,不断的改进它对于某件工作的绩效”
深度学习是机器学习的一种,深度学习从统计学的角度来说,就是在预测数据的分布,从数据中学得一个模型然后再通过这个模型去预测新的数据,这一点就要求测试数据和训练数据必须是同分布。深度二字的本质特征是利用了深度神经网络的方法,深度神经网络可以简单理解为层数很多的神经网络。也就是说,从输入到输出包含了很多隐含层。
简单说来,监督学习就是指使用已知正确答案的样本或示例来训练模型,比如训练图像分类模型,把训练数据的每一张图都打上了分类标签,那么AI就等于知道了每一张图片的分类答案,这就叫监督学习。当前大多数的深度学习都是属于监督学习。
无监督学习适用于你具有数据集但无标签的情况。无监督学习采用输入集,并尝试查找数据中的模式。比如,将其组织成群(聚类)或查找异常值(异常检测)。比如,你是一个T恤制造商,拥有一堆人的身体测量值。那么你可能就会想要有一个聚类算法,以便将这些测量组合成一组集群,从而决定你生产的XS,S,M,L和XL号衬衫该有多大。
半监督学习在训练阶段结合了大量未标记的数据和少量标签数据。与使用所有标签数据的模型相比,使用训练集的训练模型在训练时可以更为准确,而且训练成本更低。
强化学习是针对你再次没有标注数据集的情况而言的,但你还是有办法来区分是否越来越接近目标(回报函数(rewardfunction))。经典的儿童游戏——“hotterorcolder”。是这个概念的一个很好的例证。你的任务是找到一个隐藏的目标物件,然后你的朋友会喊出你是否越来越hotter(更接近)或colder(远离)目标物件。“Hotter/colder”就是回报函数,而算法的目标就是最大化回报函数。著名的围棋AIAlphaGo也是使用强化学习的方法,每一步的胜率就是它的回报函数输出的结果。
简单来说,模型可以理解成为一个复杂的函数,也是人工智能理解世界的方式。给定一个输入,通过模型的推理,可以得到一个输出。例如,图像分类模型可以把输入的图片(比如猫的图片)经过推理得出该图片中物体的类别(猫的文字)。
深度学习的模型是包含很多层的,也包含非常多的参数,例如著名的GPT-3模型包含1750亿个参数,看起来就像一个复杂的网络一样。所以,深度学习的模型也可以称为网络。
深度学习中有很多模型,这些模型是按照应用场景来划分的,比如机器视觉类有图像分类、目标检测、图像分割等模型,自然语言处理有文本分类、语义理解、机器分类等模型。
上述模型只是基础模型,模型里的参数需要根据实际的使用场景去定义出来的,而把里面的参数计算出来的过程就是训练。
举例说明,训练一个识别猫的图像分类的模型,就需要把标注好的猫的图片喂给这个模型,采用暴力计算的方式把里面的每一个参数都调到最优。那么什么是最优呢?标注好的数据分为训练集和验证集,用训练集训练完了再用验证集去验证,验证准确率最高的一组参数就是最优的参数。
得到这组最优参数之后,模型就可以说训练好了。用训练好的模型去实际使用,比如再输入一张新的猫的图片,模型也可以识别出来了。那么模型识别新的猫的图片这个过程就叫做推理。
简单说来,模型就是一个复杂的函数,尤其是包含了很多隐含层的深度学习模型都是非常复杂的。而算子,就是构成这个复杂函数的运算符。比如加减乘除、三角函数、Sigmoid、Relu、矩阵加、矩阵乘、卷积等等。
计算图就是将计算过程图形化表示出来。是一种描述方程的“语言”,既然是图,则有节点(变量),边(操作(简单函数))。
例如,这里有一个简单的数学公式p=x+y,我们可以绘制上述方程的计算图如下:
当然,实际AI模型中的计算图远比这个复杂得多。
动态图的意思是,计算图的构建和计算同时发生。也就是说,调试人员可以一边构建图一边得到中间计算的结果,使得调试更加容易,同时也将大脑的想法转变为代码方案也变得更容易。Pytorch使用的就是动态图机制,所以它更容易上手,更受科研人员的喜爱。
静态图的意思是,计算图的构建和计算是分开的。在静态图中,会事先了解和定义好整个运算流,这样之后再次运行的时候就不需要重新构建计算图了。因此静态图的速度会比动态图更快,从性能上来说更高效。但这也意味着无法像动态图一样随时拿到中间结果,代码的错误将难以发现。Tensorflow默认的是静态图机制,先定义好整个计算流然后再对数据进行计算。
华为的MindSpore有一大优势就是动静结合,意思是同时支持两种图模式,并能够进行相互切换,这样就可以在调试阶段使用动态图模式,调试完毕再切换成静态图模式以节省存储空间和提升计算效率。
本质上来说,AI框架就是把训练过程所涉及的环节数据统一抽象,形成可使用框架。全世界最为流行的AI框架有谷歌的Tensorflow和Facebook的Pytorch。Tensorflow在工业界排名第一,而Pytorch在学术届排名第一。在国产的AI框架中,以百度的PaddlePaddle和华为的MindSpore为主。
通用计算以CPU为代表,面向的是通用软件应用,有着复杂的逻辑。其计算模型主要是逻辑运算(if/else),有着不规则的数据结构、不可预测的存取模式、递归算法以及分支密集型算法。其硬件结构中70%以上晶体管用于构建控制单元和缓存,计算单元从几个到几十个。
AI计算以NPU/TPU/GPU为代表,面向的是特定的场景,比如基于AI的图像识别、语音识别等,其逻辑简单、计算密集、并发任务高。其计算模型主要是并行数据计算,面向规则的数据结构(数组、矩阵类型的数值),具有可预测的存取模式。其硬件结构中70%以上晶体管用于构建计算单元,计算单元从几千到几万个。
CPU(CentralProcessingUnit)中央处理器,是一块超大规模的集成电路,主要逻辑架构包括控制单元Control,运算单元ALU和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。简单说,就是计算单元、控制单元和存储单元。
架构图如下所示:
CPU遵循的是冯诺依曼架构,其核心是存储程序、顺序执行。CPU的架构中需要大量的空间去放置存储单元(Cache)和控制单元(Control),相比之下计算单元(ALU)只占据了很小的一部分,所以它在大规模并行计算能力上极受限制,而更擅长于逻辑控制。
GPU(GraphicsProcessingUnit),即图形处理器,是一种由大量运算单元组成的大规模并行计算架构,专为同时处理多重任务而设计。
为什么GPU可以做到并行计算的能力?GPU中也包含基本的计算单元、控制单元和存储单元,但GPU的架构与CPU有所不同,如下图所示:
与CPU相比,CPU芯片空间的不到20%是ALU,而GPU芯片空间的80%以上是ALU。即GPU拥有更多的ALU用于数据并行处理。
GPU虽然在并行计算能力上尽显优势,但并不能单独工作,需要CPU的协同处理,对于神经网络模型的构建和数据流的传递还是在CPU上进行。同时存在功耗高,体积大的问题。性能越高的GPU体积越大,功耗越高,价格也昂贵,对于一些小型设备、移动设备来说将无法使用。因此,一种体积小、功耗低、计算性能高、计算效率高的专用芯片NPU诞生了。
NPU(NeuralNetworksProcessUnits)神经网络处理单元。NPU工作原理是在电路层模拟人类神经元和突触,并且用深度学习指令集直接处理大规模的神经元和突触,一条指令完成一组神经元的处理。相比于CPU和GPU,NPU通过突触权重实现存储和计算一体化,从而提高运行效率。
NPU是模仿生物神经网络而构建的,CPU、GPU处理器需要用数千条指令完成的神经元处理,NPU只要一条或几条就能完成,因此在深度学习的处理效率方面优势明显。
实验结果显示,同等功耗下NPU的性能是GPU的118倍。
GPU当前只是单纯的并行矩阵的乘法和加法运算,对于神经网络模型的构建和数据流的传递还是在CPU上进行。CPU加载权重数据,按照代码构建神经网络模型,将每层的矩阵运算通过CUDA或OpenCL等类库接口传送到GPU上实现并行计算,输出结果;CPU接着调度下层神经元组矩阵数据计算,直至神经网络输出层计算完成,得到最终结果。
NPU与GPU加速不同,主要体现为每层神经元计算结果不用输出到主内存,而是按照神经网络的连接传递到下层神经元继续计算,因此其在运算性能和功耗上都有很大的提升。CPU将编译好的神经网络模型文件和权重文件交由专用芯片加载,完成硬件编程。
Atlas是华为昇腾AI计算硬件系列的品牌名,覆盖端边云等场景,Atlas系列产品主要包含:
Atlas200AI加速模块
Atlas300AI推理卡
Atlas300AI训练卡
Atlas500智能小站
Atlas500Pro智能边缘服务器
Atlas800AI推理服务器
Atlas800AI训练服务器
Atlas900AI集群
Atlas900PoDAI集群单元
CANN的全名叫神经网络计算架构ComputeArchitectureforNeuralNetworks,是一种异构计算架构。
简单说来,CANN可以理解为Atlas硬件的一种驱动,无论是推理场景还是应用场景,上层的AI应用需要调用Atlas的算力就必须通过CANN这一层。如果是推理场景,那么上层的应用就需要通过CANN提供的AscendCL(ACL)编程语言来调用昇腾处理器的能力,做出加载AI模型、运行AI模型等操作。如果是训练场景,那么上层的AI框架也需要调用ACL接口来使用昇腾训练处理器的能力。
CANN在南向能支持14+操作系统和10+形态的硬件设备、北向能够适配多种AI框架,实现端边云全场景协同。AI计算是不能脱离通用计算独立存在的,所以Atlas系列硬件都是需要以鲲鹏或者X86服务器作为宿主(Host)的,那么就势必要和多种操作系统做适配,比如Ubuntu、CentOS、Windows等等。
CANN的第二大功能就是提供用Python语言开发算子的编程语言TBE,前面解释过了算子是构成AI模型的最基本单元,算子的性能决定了整个模型的性能。通过极致的图编译技术、丰富的高性能算子,CANN能够助力释放硬件设备最大计算能力。
同时,CANN还提供HCCL华为集合通信库,实现多昇腾AI处理器的collectivecommunication通信库。并在集群训练中能够提供多机多卡间集合通信功能、梯度聚合功能和hcom集群通信算子,在分布式训练中不同昇腾AI处理器之间提供高效的数据传输能力。
CANN还有一大功能是DVPP,可实现视频解码(VDEC)、视频编码(VENC)、JPEG解码(JPEGD)、JPEG编码(JPEGE)、PNG解码(PNGD)、VPC(预处理)。通过硬件加速进行图像预处理,能够降低对CPU的使用,提升图像预处理并行处理能力。
MindSpore是华为2019年8月发布的支持端、边、云独立的和协同的统一训练和推理框架,提供全场景统一API,为全场景AI的模型开发、模型运行、模型部署提供端到端能力。
MindX是昇腾应用使能,提供清晰简洁的API接口,合作伙伴可以基于MindX快速构建自己的深度学习平台。例如,中科弘云、伊瞳科技以及第四范式就基于华为的MindSpore以及MindXDL打造了自己的深度学习平台。
包括深度学习MindXDL和智能边缘MindXEdge两个组件,一个模型优选库ModelZoo,以及面向各个行业的开发套件SDK。MindXSDK是面向同一类行业场景的开发工具包和行业知识库,把开发经验和行业知识积淀下来,实现水平复制,以此大幅度降低开发门槛,提升开发效率。面对大量的行业应用开发需求,MindXSDK可以让应用开发者只需极少量代码甚至不直接写代码就可以实现AI功能。
MindStudio的是一套基于华为自研昇腾AI处理器开发的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。通过MindStudio能够进行工程管理、编译、调试、运行、性能分析等全流程开发,提高开发效率。
模型训练:提供训练加速工具、训练可视化工具、模型调优工具,支持构图接口、训练Benchmark标准及工具等多种功能特性。同时在ModelZoo中为您提供了大量预训练好的AI模型、模型训练脚本以及模型开发案例。
模型推理:提供模型压缩工具、模型转换工具和模型可视化工具。模型转换工具将开源框架的网络模型(如Caffe、TensorFlow等)转换成昇腾AI处理器支持的离线模型,模型转换过程中可以实现算子调度的优化、权值数据重排、内存使用优化等。
算子开发:支持自定义TBE(TensorBoostEngine)算子开发,提供TBE-DSL和TBE-TIK两种算子开发方式。并且提供Cube算子自动调优,仿真调试调优以及提供最优算子的搜索工具,帮助您从获取最优算子配置,开发算子到实时调试调优算子的全流程算子开发过程。同时支持MindSpore、TensorFlow、PyTorch等主流框架算子。
性能调优:提供高效、易用、可灵活扩展的系统化性能分析工具,便于快速识别产品的关键性能瓶颈并提出针对性能优化的建议,实现产品的极致性能。
应用开发:MindStudio支持AI应用开发,通过ACL昇腾统一编程语言,系统级调优,调试传输,异常分析等多种AI应用开发工具,可以使用开放的模型/算子加载与执行、多种C++的API接口,实时性能调优等功能,还可提供代码样例。
华为重点投资AI基础研究,打造AI基础能力和全栈方案,支持云、边和端的AI协同应用,以统一的高效架构提供更充裕和更经济的算力资源。坚持开放合作,和学术界、产业界一起持续推动AI的发展。
投资AI基础研究:在计算视觉、自然语言处理、决策推理等领域构筑数据高效(更少的数据需求)、能耗高效(更低的算力和能耗),安全可信、自动自治的机器学习基础能力;
打造全栈方案:打造面向云、边缘和端等全场景的、独立的以及协同的、全栈解决方案,提供充裕的、经济的算力资源,简单易用、高效率、全流程的AI平台;
投资开放生态和人才培养:面向全球,持续与学术界、产业界和行业伙伴广泛合作;
解决方案增强:把AI思维和技术引入现有产品和服务,实现更大价值、更强竞争力;
内部效率提升:应用AI优化内部管理,对准海量作业场景,大幅度提升内部运营效率和质量。