AI芯片的历史和现状

640?wx_fmt=jpeg


AI的历史发展和概括


人的思维活动是否能用计算机来替代,从图灵的论文《计算机器与智能》和图灵测试,到最初级的神经元模拟单元——感知机,到现在多达上百层的深度神经网络,对人工智能的探索就没有停止过。在八十年代,多层神经网络和反向传播算法的出现给人工智能行业点燃了新的火花。反向传播的主要创新在于能将信息输出和目标输出之间的误差通过多层网络往前一级迭代反馈,主要目的是通过逐层的反馈调节系统参数来将最终的输出收敛到某一个目标范围内。

1989年贝尔实验室成功利用反向传播算法应用在多层神经网络开发了一个手写邮编识别器。1998年Yann LeCun和Yoshua Bengio发表了手写识别神经网络和反向传播优化相关的论文《Gradient-based learning applied to document recognition》,开创了卷积神经网络的时代。

从最初的概念到最近 AI 的爆发式增长,人工智能产业经过了多次的起伏和波折。到1997年 IBM 的深蓝战胜国际象棋大师和2011年 IBM 的沃森智能系统在 Jeopardy 节目中胜出,人工智能才又一次为人所关注。2016年  Alpha Go 击败韩国围棋九段职业选手,则标志着人工智能的又一波高潮。从基础算法,底层硬件,工具框架到实际应用场景,目前人工智能已经全面开花。


基础算法:从目标设定及性质上可以分为有监督算法,无监督算法和深度学习算法。从应用领域来说,主要有机器视觉,语音识别,自然语言处理等几个方面。前几十年的 AI 探索主要集中在有监督算法的发展。在机器视觉和语音识别方面,有监督算法已经被验证为可行有效。而最近的 AlphaGo 则是运用了无监督算法和深度学习算法的精髓。算法是源头,芯片和硬件加速器的发展都会根据算法的走向而变动(AlphaGo 从某种意义上来说加快了 Google TPU 的研发进程)。最近10年的 AI 算法最大的突破主要在深度神经网络,其表现是模型层数高/更复杂/参数多,数据维度多/样本量大。


底层硬件:传统的 CPU 主要有 control, cache/ram, computation 等部分组成,为了保持通用性CPU的计算模块只占其中很小一块。很快人们就发现单纯的用CPU计算已经远远不能支持人工智能系统需要的算力需求。在2010年,当时Andrew Ng和Jeff Dean开发的Google Brain在语音识别深度神经网络中(参数量是1.5亿左右),光是训练模型就需要76天。其使用的平台是一个包含16000个CPU单元的并行计算平台。相比之下,GPU没有cache单元,也没有复杂的逻辑控制电路和优化电路,计算单元占到的比例非常大,在单纯的浮点数计算能力方面比CPU拥有更多的优势。目前GPU以其有针对性的高速计算能力被广泛应用在深度神经网络系统中,Nvidia也凭借着GPU市场的火爆在AI领域崭露头角。除了GPU,市场还有其他各种各样的XPU芯片,从移动端到云端,从FPGA到ASIC。后面文中会着重介绍。


工具框架:目前主要流行的有Tensorflow, Caffe, Torch, MXNet等。框架的出现对于深度学习易用性提升了一个量级,使用者可以把更多精力放到模型的参数调节及应用实现上,而不是模型实施的细节。对于初学者来说还有更容易使用的Keras。Keras是以theano/tensorflow为底层的成熟封装,内置了许多成熟的网络结构如VGG16卷积神经网络。


AI芯片分类


从三个维度看懂AI芯片种类:


技术架构

从技术架构来看,人工智能芯片分为通用性芯片(GPU)、半定制化芯片(FPGA)、全定制化芯片(ASIC)、类脑芯片四大类。

640?wx_fmt=jpeg

GPU是单指令、多数据处理,采用数量众多的计算单元和超长的流水线,主要处理图像领域的运算加速。但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。


FPGA适用于多指令,单数据流的分析,与GPU相反,因此常用于预测阶段,如云端。FPGA是用硬件实现软件算法,因此在实现复杂算法方面有一定的难度,缺点是价格比较高。对比FPGA和GPU可以发现,一是缺少内存和控制所带来的存储和读取部分,速度更快。二是因为缺少读取的作用,所以功耗低,劣势是运算量并不是很大。结合CPU和GPU各自的优势,有一种解决方案就是异构。


ASIC是为实现特定要求而定制的专用AI芯片。除了不能扩展以外,在功耗、可靠性、体积方面都有优势,尤其在高性能、低功耗的移动端。


类脑芯片架构是一款模拟人脑的新型芯片编程架构,这一系统可以模拟人脑功能进行感知、行为和思考,简单来讲,就是复制人类大脑。


应用场景

从应用场景来看,人工智能芯片应用于云端和设备端。

640?wx_fmt=jpeg在深度学习的训练阶段需要极大的数据量和大运算量,单一处理器无法独立完成,因此训练环节只能在云端实现。云AI芯片的特点是性能强大、能够同时支持大量运算、并且能够灵活地支持图片、语音、视频等不同AI应用。我们现在使用的各种互联网AI能力(比如在线翻译、人证比对),背后都有云AI芯片在发挥作用或提供算力。英特尔、IBM等老牌云服务器芯片厂商同样在积极布局这一市场,各自通过并购、投资、研发等方式不断切入云AI芯片市场。

在设备端,智能终端的数量庞大,而且需求差异较大,推理环节无法在云端完成,要求设备有独立的推理计算能力。这便需要有嵌入到设备内部的端AI芯片,让设备不需要联网就能具备AI能力。它们的特点是体积小、耗电少,而且性能不需要特别强大,通常只需要支持一两种AI能力。现在手机里的芯片、摄像头里的芯片、甚至你家电饭煲里的芯片都开始陆续AI化。云端格局应该变化不大,但是在终端方面变数未定,边缘计算值得关注。云端市场已被巨头瓜分殆尽,创业公司生存空间几乎消失。倒是终端市场群雄割据,机会尚存。

功能

从功能上来说,目前 AI 芯片主要有两个领域,一个是 AI 系统的 training 训练模型(主要是对深度神经网络的前期训练),另外一个是模型训练部署后,模型对新数据的 inference 推断。理论上来说 training 和 inference 有类似的特征,但是以目前的情况来说,在运算量差别大,精度差别大,能耗条件不同和算法也有差别的情况下,training 和 inference 还是分开的状态。


training 领域,需要将海量的参数进行迭代训练,所以芯片设计导向基本都是超高性能,高灵活性,高精度这几个方向。面向 training 的芯片一般都是在云端或者数据中心进行部署,成本大,能耗高。目前在 training 领域, Nvidia 的GPU在市场上独占鳌头,大部分的深度神经网络及项目实施都是采用 Nvidia 的GPU加速方案。同样深度学习加速市场的爆发也吸引了竞争者的入局。Google在2015年发布了第一代TPU芯片,在2017年5月发布了基于ASIC的TPU芯片2.0版本,二代版本采用了systolic array脉动阵列技术,每秒峰值运算能力达到45TFlops。并且二代版本完善了初代TPU只能做 inference 无法 training 的问题。根据Google的披露,在自然语言处理深度学习网络中,八分之一的TPU Pod(Google自建的基于64个TPU2.0的处理单元)花费六个小时就能完成32块顶级GPU一整天的训练任务。除了Google外,AMD也发布了基于Radeon Instinct的加速器方案,Intel则推出了 Xeon Phi+Nervana方案。在training领域,资金投入量大,研发成本高,目前竞争者主要是Nvidia GPU, Google TPU和新进入的AMD Radeon Instinct(基于GPU)和Intel Xeon Phi+Nervana(基于ASIC)等。目前来看,不管是Google的TPU+tensorfow,还是其他巨头新的解决方案,想要在training端市场撼动Nvidia的地位非常困难。


相比 training 而言 inference 在计算量(更小),精度要求(更低)和算法部署(多种evaluation方法)上都有一定的差别,通常只需要用 training 阶段训练好的模型来对新输入的数据输出模型结果,或者在输出结果的基础上做一些调整。比如摄像头拍到的新的人像直接输出人脸识别模型的结果,就是利用 training 好的模型做一次 inference 操作。相对 training,inference比较适合在终端部署。如iphoneX搭载的新的A11处理器内置了双核神经网络引擎,还有类似的在自动驾驶,监控摄像头,机器人等终端设备上的 inference 芯片。从CPU到GPU,再到FPGA和最后的ASIC,计算效率依次递增,但灵活性也是依次递减的。在inference方面,除了GPU之外,ASIC和FPGA都有比较大的潜力。目前业界在 inference 方面也越来越多地开始使用专用性更强的FPGA和ASIC平台。FPGA全称“可编程门阵列”,通过在芯片内集成大量基本的门电路,允许用户后期烧写配置文件来更改芯片功能实现可更改半定制化。FPGA在延迟和功耗方面都有显著优势,在延迟需求较高比如语音识别和图像识别方面相比GPU而言是一个更好的选择。ASIC是专用的定制化集成电路,能在开发阶段就针对特定的算法做优化,效率很高。ASIC虽然初期成本高,但是在大规模量产的情况下有规模经济效应,反而能在总体成本上占优。因为设计完成后无法更改,故ASIC的通用性比较差,市场风险高。FPGA因为可以半定制化并且内容可更改,在通用性/兼容性方面占有优势,但是在成本,性能,能效上比,ASIC更有优势。


轻轻一扫  欢迎关注~

640?wx_fmt=jpeg

如果觉得好,请

转发

转发

转发

猜你喜欢

转载自blog.csdn.net/p23onzq/article/details/80796599