1.4 人工智能的软硬件设施
1.4.1 人工智能的软件
近几年来,随着深度学习在人工智能领域的快速流行,相关研究理论和基础框架得到了巨大突破,涌现出一大批成熟便捷的深度学习开发框架。深度学习开发框架主要是为人工智能算法的模型设计、模型训练、模型验证等操作提供标准化接口、工具包和第三方库,缩短算法开发与部署的周期,优化算法内部的数据调用、计算资源分配等工作。目前,比较主流的开发框架主要有Google的TensorFlow与Kears、Facebook的PyTorch与Caffe、Amazon的MXNet等。我国的深度学习框架主要有百度的PaddlePaddle、华为的MindSpore等。
1)TensorFlow
TensorFlow是谷歌于2015年正式开源的计算框架,是目前最受欢迎的深度学习框架之一。TensorFlow是用C++编写的,同时也提供了Python、Javascript、Go、R等接口,适用于编写各类机器学习、深度学习等人工智能算法。
根据名称,TensorFlow可分成两部分:Tensor(张量)和Flow(流)。Tensor用来表示N维数据,在TensorFlow中所有的数据均以张量的形式存储。Flow表示张量的流动和计算。TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统。图1-4为TensorFlow的数据流图。在数据流图中存在“节点”(nodes)和“线”(edges)构成的有向图,TensorFlow的计算主要用有向图来描述。节点可以是张量或者某种操作,如简单的加减乘除、复杂的矩阵运算等。一个节点允许有零个或者多个输入或输出,叶子节点一般为常量或者变量,非叶子节点表示具体操作。线是有方向的,表示张量的流动方向,它连接着两个或多个节点,表示前后节点的输出或输入。
图1-4 TensorFlow的数据流图
2)PyTorch
PyTorch是Facebook人工智能研究院于2017年在Torch的基础上推出的开源Python深度学习库,因为PyTorch是专门用于Python项目的,所以PyTorch与Python的第三方库一样简单易学,在学术界为更多的人使用。PyTorch最大的亮点是方便使用GPU加速运算,这主要归功于它的底层大多是使用C++和CUDA写的。CUDA是英伟达提供的一种类似于C++的语言,可以被编译在GPU上以并行的方式运行,所以在PyToch中将张量的运算从CPU调用至GPU上不需要额外的复杂操作,只需用简单的命令就可实现。图1-5为调用PyTorch命令实现数据在CPU与GPU之间的迁移。
图1-5 数据在CPU与GPU之间的迁移
3)Kears
Keras是由谷歌工程师开发的、使用Python编写的开源高级神经网络接口,能够以 TensorFlow、CNTK或者 Theano 作为后端运行,完成神经网络模型的训练、推理、评估、部署等功能。Keras设计的初衷是便于使用者快速将自己的想法转化为实验结果。
目前,Kears正慢慢地被谷歌并入TensorFlow中,但如果想完成简单快速的模型设计、使用卷积神经网络(convolutional neural network, CNN)和循环神经网络、希望在CPU与GPU之间无缝运行模型,可以继续使用Keras。图1-6为Keras的各个模块。
图1-6 Keras的各个模块
4)PaddlePaddle
PaddlePaddle俗称飞桨,由百度公司于2016首次推出,是我国首个自主研发的深度学习框架。它提供了类似于TensorFlow的静态图和PyTorch的动态图两种计算图模式,并且集成了多个深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件,适用于工业级大规模深度学习应用场景。PaddlePaddle提供了多种开发套件,主要包括PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR、PaddleGAN等,可以用于完成图像分类、目标检测、目标跟踪、图像分割、文字识别、生成对抗网络等多个研究领域。此外,PaddlePaddle还采用了一系列高效的算法和技术,包括自动微分、异步计算、模型压缩、模型优化等,能够提高计算效率和模型性能。图1-7展示了飞桨平台的各个组成部分。
5)MindSpore
MindSpore是华为公司于2019年推出的一款开源AI计算框架,旨在为在各种场景下的AI应用提供高效、易用、全场景的解决方案。MindSpore支持多种硬件设备,包括CPU、GPU、Ascend等,同时还提供了分布式训练和推理的能力,可以满足大规模AI计算的需求。图1-8为MindSpore的架构,可以看出MindSpore总体可以分为MindSpore前端表示层、MindSpore计算图引擎和MindSpore后端运行时三层,其中MindSpore前端表示层主要负责深度学习模型的构建和描述,MindSpore计算图引擎主要负责深度学习模型的计算图生成和优化,MindSpore后端运行时主要负责深度学习模型的运行和执行。
图1-7 飞桨平台的组成
① 语言模型。
② 情感分类。
③ 自然语言处理,natural language processing。
④ 光学字符识别。
⑤ 计算机视觉。
图1-8 MindSpore的架构