智能计算系统实验教程
上QQ阅读APP看书,第一时间看更新

1.1 智能计算系统简介

人工智能是人制造的机器所表现出来的智能。人工智能通常分为两大类:弱人工智能和强人工智能。弱人工智能是能够完成某种特定具体任务的人工智能,而强人工智能是具备与人类同等智慧或超越人类智慧的人工智能[1]。目前广泛应用于图像识别、语音识别、自然语言处理、博弈游戏等应用上的深度学习技术就属于弱人工智能。本实验教程重点关注面向弱人工智能的智能计算系统。

一个完整的智能体需要能够从外界获取输入,并将智能处理结果输出给外界。而人工智能算法或代码本身并不能构成一个完整的智能体,必须要在一个具体的物质载体上运行起来才能与之共同作为一个完整的智能体作用于物质世界,展现出智能。因此,智能计算系统是人工智能的物质载体[1]

以通用CPU为中心的传统计算系统的速度和能效难以满足智能应用的需求,因此现阶段的智能计算系统通常是集成通用CPU和智能芯片的硬件异构系统,同时包括一套面向开发者的智能计算编程环境(包括编程框架和编程语言),该编程环境可以帮助程序员快速便捷地开发高能效的智能应用程序。现阶段的智能计算系统主要是面向深度学习处理的智能计算系统,为此智能芯片主要是深度学习处理器(Deep Learning Processor,DLP)。因此,智能计算系统覆盖深度学习算法、编程框架、智能编程语言、深度学习处理器等软硬件技术栈,如图1.1所示。

图1.1 智能计算系统的软硬件技术栈及实验内容

深度学习(多层大规模神经网络)算法是当前智能计算系统的核心人工智能算法。自2012年深度卷积神经网络(Convolutional Neural Network,CNN)AlexNet获得ImageNet大规模视觉识别比赛冠军,深度学习得到了业界的广泛关注。随着数据集和模型规模的快速发展,深度学习的识别精度越来越高,已经广泛用于语音识别、人脸识别、机器翻译等领域,甚至在围棋和《星际争霸》等游戏中战胜了人类顶级高手,并形成了图像风格迁移等有意思的应用。面向不同应用领域,已经演化并不断迭代出不同种类的新的深度学习算法,例如用于图像分类的CNN(如VGG、ResNet等)、用于图像目标检测的CNN(如R-CNN系列、YOLO等)、用于序列信息处理的循环神经网络(Recurrent Neural Network,RNN)及长短期记忆网络(Long Short-Term Memory,LSTM)、生成对抗网络(Generative Adversarial Network,GAN)等。

将种类繁多且快速迭代的深度学习算法高效地运行在多种智能芯片上,需要编程框架的支持。编程框架是智能计算系统中非常关键的核心枢纽,发挥着承上启下的作用。对于程序员,编程框架将智能算法中的常用操作(如卷积、池化等)封装成算子供程序员直接调用,以降低智能应用的开发难度,提高智能应用的开发效率;对于智能芯片,编程框架将智能算法拆分出的一系列具体算子分配到智能芯片(或CPU)上运行,以达到更优的运行性能。2014年加州大学伯克利分校发布的深度学习编程框架Caffe是最早出现的框架之一,由于其易用、稳健、高效的特点,被广泛用于深度学习的训练(training)和推断(inference)[1]。2015年年底谷歌发布的编程框架TensorFlow是目前最受欢迎的框架之一,它支持自动求导,训练好的模型可以部署到不同的硬件/操作系统平台上。此后,出现了MXNet、PyTorch、PaddlePaddle等编程框架。编程框架的易用性极大地推动了深度学习算法的发展。

智能编程语言是智能计算系统中连接智能编程框架和智能计算硬件的桥梁。由于深度学习处理器架构与传统通用CPU在控制、存储及计算等逻辑上都有较大区别,传统编程语言(如C/C++、Java、Python、汇编语言等)在面向智能计算系统编程时难以同时满足高开发效率、高性能和高可移植性的需求,因此需要有新的高级智能编程语言。为适应人工智能算法和深度学习处理器的快速演进,智能编程语言需要对不同规模、不同尺度及不同形态的智能计算系统进行层次化的硬件架构抽象,并在此基础上为用户提供简洁、统一的编程接口。例如,《智能计算系统》教材介绍的智能编程语言BANG C Language(BCL)不仅可以提升智能算法的开发效率,还可以利用深度学习处理器的结构特点来有效应对不断演进的深度学习算法。此外,面向图像处理的Halide、面向深度学习的RELAY/TVM等领域专用语言也对特定领域的应用和硬件进行了一定的抽象。

深度学习处理器是智能计算系统的核心,近年来得到了快速发展。2013年,中科院计算所和法国国家信息与自动化研究所(INRIA)共同设计了国际上首个深度学习处理器架构——DianNao。它可以灵活、高效地处理拥有上百层、千万神经元、上亿突触(甚至更大)的各种深度学习神经网络;且相对于传统通用CPU,它可以取得两个数量级(甚至更高)的能效优势。随后,中科院计算所和INRIA又设计了国际上首个多核深度学习处理器架构DaDianNao和首个机器学习处理器架构PuDianNao。进一步,中科院计算所提出了国际上首个深度学习指令集Cambricon。中科院计算所还研制了国际上首款深度学习处理器芯片“寒武纪1号”。目前寒武纪系列处理器已实际用于近亿台智能手机和服务器中,推动了深度学习处理器从理论走向实际,普惠大众。此外,近年来,Google、NVIDIA、Intel、IBM、MIT、Stanford等公司和研究机构都在引用中科院计算所的DianNao系列论文,开展深度学习处理器方面的研制工作。

得益于深度学习算法、编程框架、智能编程语言、深度学习处理器等方面的技术进步,智能计算系统已成为计算机的一类主流形态。今天,大量的超级计算机、数据中心计算机、智能手机、智能物端等都是以深度学习类应用为核心负载,因此都在朝智能计算系统方向演进。例如,IBM将其研制的2018年世界上最快的超级计算机SUMMIT称为智能超算,在SUMMIT上利用深度学习方法做天气分析的工作甚至获得了2018年超算应用最高奖——戈登·贝尔奖。数据中心计算机利用深度学习做广告推荐、自动翻译、智能在线教育、智慧医疗等应用,是典型的智能计算系统。智能手机更是因其要用深度学习处理大量的图像识别、语音识别、自动翻译等任务,被广泛看作一种典型的小型智能计算系统,仅集成寒武纪深度学习处理器的手机就已有近亿台。智能物端(包括机器人、自动驾驶、手表、监控等)也广泛使用深度学习进行相关任务的处理。因此,未来如果人类社会真的进入智能时代,可能绝大部分计算机都是智能计算系统。


[1] 在不同文献中可能被称为推断、推理、测试或预测,即深度学习的前向/正向计算。