半岛彩票当提起芯片时,人们首先想到的是Intel公司,因为这家公司生产的桌面端CPU实在是太出名了,以至于大家下意识的认为芯片就是它。做为AIoT产品的产品经理,当工程师提起芯片时,也许大家首先想到的是海思、高通、瑞芯微、全志、联发科等公司。一旦工程师提起AI芯片,大部分产品经理就懵了,因为这里面涉及到算法AI+硬件芯片,两个陌生的领域叠加在一起,直接是懵圈的平方。
对于人工智能、机器学习、深度学习三者之间的关系,也是让很多人摸不着头脑,以为是同一个东西,只是叫法不同。实际上他们三者之间是包含与被包含的关系:
目前关于AI 芯片并没有一个严格的定义。比较宽泛的定义是面向人工智能应用的芯片都可以称为AI 芯片。
2. 专门为特定的 AI 产品或者服务而设计的芯片,称之为ASIC(Application-Specific Integrated Circuit),主要是侧重加速机器学习(尤其是神经网络、深度学习),这也是目前AI 芯片中最多的形式;
3. 受生物脑启发设计的神经形态计算芯片,这类芯片不采用经典的冯·诺依曼架构,而是基于神经形态架构设计,以 IBM Truenorth为代表。
在AI应用还没有得到市场验证之前,通常使用已有的通用芯片进行并行加速计算,可以避免专门研发ASIC芯片的高投入和高风险。但是这类通用芯片设计初衷并非专门针对深度学习,因而存在性能、功耗等方面的局限性。随着人工智能应用规模持续扩大,这类问题日益突显,待深度学习算法稳定后, AI 芯片可采用 ASIC 设计方法进行全定制, 使性能、功耗和面积等指标面向深度学习算法做到最优。
很多AI应用厂商经常宣称自己做出了全球第一款XXX的SoC芯片,那么SoC芯片又时什么AI芯片呢?
如果将MPU、MCU、DSP、储存系统(或片外存储控制接口)、以及其他外围器件集成在单一芯片上,那么这类ASIC芯片就称为片上系统SoC,也称为系统级芯片。
ASSP和ASIC之间的唯一区别是:ASSP是更通用的设备,适用于多个系统,如独立的USB接口芯片可以归类为ASSP,而ASIC通常是客户定制的,或是面向特定用途的产品。
AI 计算既不脱离传统计算,也具有新的计算特质,如处理的内容往往是非结构化数据(视频、图片等)。处理的过程通常需要很大的计算量,基本的计算主要是线性代数运算(如张量处理),而控制流程则相对简单。处理的过程参数量大。
AI 系统通常涉及训练(Training)和推断(Inference)过程。简单来说,训 练过程是指在已有数据中学习,获得某些能力的过程;而推断过程则是指对新的数据,使用这些能力完成特定任务(比如分类、识别等)。
人工智能的发展高度依赖海量的数据。满足高效能机器学习的数据处理要求是AI 芯片需要考虑的最重要因素。
低精度设计是AI 芯片的一个趋势,在针对推断的芯片中更加明显。对一些应用来说,降低精度的设计不仅加速了机器学习算法的推断(也可能是训练),甚至可能更符合神经形态计算的特征。
针对特定领域(包括具有类似需求的多种应用)而不针对特定应用的设计,将是AI 芯片设计的一个指导原则,具有可重构能力的AI 芯片可以在更多应用中大显身手,并且可以通过重新配置,适应新的AI 算法、架构和任务。
就像传统的CPU 需要编译工具的支持, AI 芯片也需要软件工具链的支持,才能将不同的机器学习任务和神经网络转换为可以在AI 芯片上高效执行的指令代码,如NVIDIA GPU 通过CUDA 工具获得成功。
很多技术创新都是需求驱动和技术瓶颈同时存在的情况下产生的,AI 芯片和它背后的各种技术也不例外。首先是巨大需求,一方面体现在AI 应用的需求,需求的驱动要求能够提供更加高效地处理AI 运算的硬件,另一方面在目前的技术框架下遇到一些瓶颈,特别是冯·诺伊曼瓶颈和CMOS 工艺和器件瓶颈。
提高AI 芯片性能和能效的关键之一在于支持高效的数据访问。如图所示,在传统冯·诺伊曼体系结构中,数据从处理单元外的存储器提取,处理完之后在写回存储器。在AI 芯片实现中,基于冯·诺伊曼体系结构,提供运算能力相对是比较简单易行的,但由于运算部件和存储部件存在速度差异,当运算能力达到一定程度,由于访问存储器的速度无法跟上运算部件消耗数据的速度,再增加运算部件也无法得到充分利用,即形成所谓的冯·诺伊曼“瓶颈”,或“内存墙”问题,是长期困扰计算机体系结构的难题。目前常见的方法是利用高速缓存(Cache)等层次化存储技术尽量缓解运算和存储的速度差异。
目前针对AI而提出的硬件架构创新都是在和这个问题做斗争。概括来说,在架构层面解决这一问题的基本思路有:
1)减少访问存储器的数量,比如减少神经网络的存储需求(参数数量,数据精度,中间结果)、数据压缩和以运算换存储等;
2)降低访问存储器的代价,尽量拉近存储设备和运算单元的“距离”,甚至直接在存储设备中进行运算。
人工智能,特别是机器学习的发展将需要更加强有力的,超过每秒百亿次(10^{18}) 运算能力的计算系统,而构建这些系统的基础是CMOS 技术的芯片,CMOS 工艺能够不断提高系统性能主要得益于集成尺寸的缩小。由于基础物理原理限制和经济的原因,持续提高集成密度将变得越来越困难。目前CMOS 器件的横向尺寸接近几纳米,层厚度只有几个原子层,这会导致显著的电流泄漏,降低工艺尺寸缩小的效果。此外这些纳米级晶体管的能量消耗非常高,很难实现密集封装。
在计算架构和器件层面,我们需要一种新的方法来打破目前的困境。大脑可以看作一个可以处理大量(通常是模糊的)信息,且具有超高密度、错误恢复能力和高能效的计算模型。神经元和大脑突触的能量消耗比最先进的CMOS 器件还低几个数量级。近年来,可以存储模拟数值的非易失性存储器发展迅猛,它可以同时具有存储和处理数据能力,可以破解传统计算体系结构的一些基本限制,有望实现类脑突触功能。
存储的需求(容量和访问速度)越来越高,处理能力推向每秒千万亿次(Peta FLOPS),并支持灵活伸缩和部署。随着AI 应用的爆发,对推断计算的需求会越来越多,一个训练好的算法会不断复用。推断和训练相比有其特殊性,更强调吞吐率、能效和实时性,未来在云端很可能会有专门针对推断的ASIC 芯片(如Google 的第一代TPU ),提供更好的能耗效率并实现更低的延时。
相对云端应用,边缘设备的应用需求和场景约束要复杂很多,针对不同的情况可能需要专门的架构设计。抛开需求的复杂性,目前的边缘设备主要是执行“推断”。在这个目标下,AI 芯片最重要的就是提高“推断”效率。目前,衡量AI 芯片实现效率的一个重要指标是能耗效率——TOPs/W,这也成为很多技术创新竞争的焦点。未来,越来越多的边缘设备将需要具备一定的“学习”能力,能够根据收集到的新数据在本地训练、优化和更新模型。这也会对边缘设备以及整个AI 实现系统提出一些新的要求。最后,在边缘设备中的AI 芯片往往是SoC 形式的产品,AI 部分只是实现功能的一个环节,而最终要通过完整的芯片功能来体现硬件的效率。这种情况下,需要从整个系统的角度考虑架构的优化。因此,终端设备AI 芯片往往呈现为一个异构系统,专门的AI 加速器和CPU,GPU,ISP,DSP 等其它部件协同工作以达到最佳的效率。
在AI 计算中,芯片是承载计算功能的基础部件,软件是实现AI 的核心。这里的软件即是为了实现不同目标的AI 任务,所需要的AI 算法。对于复杂的AI 任务,甚至需要将多种不同类型的AI 算法组合在一起。即使是同一类型的AI 算法,也会因为具体任务的计算精度、性能和能效等需求不同,具有不同计算参数。因此,AI 芯片必须具备一个重要特性:能够实时动态改变功能,满足软件不断变化的计算需求,即“软件定义芯片”。
从2015 年开始,AI 芯片的相关研发逐渐成为学术界和工业界研发的热点。到目前为止,在云端和终端已经有很多专门为 AI 应用设计的芯片和硬件系统。同时,针对目标应用是“ 训练”还是“推断”,可以把AI 芯片的目标领域分成4 个象限,如图所示:
在云端,通用GPU,特别是NVIDIA 系列GPU 芯片,被广泛应用于深度神经网络训练和推理。与CPU 相比,拥有数千个计算内核的GPU 可以实现10-100 倍的吞吐量。面向云端AI 应用,很多公司开始尝试设计专用芯片以达到更高的效率,其中最著名的例子是Google TPU,可以支持搜索查询、翻译等应用,也是Alpha Go 的幕后英雄。此外,FPGA 在云端的推断也逐渐在应用中占有一席之地。一方面,FPGA 可以支持大规模并行的硬件设计,和GPU 相比可以降低推断的延时和功耗。另一方面,FPGA 可以很好地支持不同的数值精度,非常适合低精度推断的实现。进一步地,FPGA 的可编程能力也使它可以相对更快地支持新的算法和应用。
随着人工智能应用生态的爆发,越来越多的AI 应用开始在端设备上开发和部署。对于某些应用,由于各种原因(如延迟,带宽和隐私问题),必须在边缘节点上执行推断。比如,自动驾驶汽车的推断就不能交由云端完成,如果出现网络延时,则会发生灾难性后果。再比如,大型城市动辄百万的高清摄像头,其人脸识别如果全交由云端完成,高清录像的数据传输会让通信网络不堪重负。
总的来说,云端AI 处理主要强调精度、处理能力、内存容量和带宽,同时追求低延时和低功耗;边缘设备中的AI 处理则主要关注功耗、响应时间、体积、成本和隐私安全等问题。目前云和边缘设备在各种AI 应用中往往是配合工作。最普遍的方式是在云端训练神经网络,然后在云端(由边缘设备采集数据)或者边缘设备进行推断。随着边缘设备能力的不断增强,越来越多的计算工作负载将在边缘设备上执行,甚至可能会有训练或者学习的功能在边缘设备上执行。另一方面,云的边界也逐渐向数据的源头推进,未来很可能在传统的终端设备和云端设备直接出现更多的边缘设备,它们会把AI处理分布在各种网络设备(比如5G 的基站)中,让数据尽量实现本地处理。
它是一个 SoC,还是一个专门的 NPU?这个芯片能够独立工作,还是需要其他的硬件设备来共同完成一项工作。
AI 芯片必然是要进行 AI 处理,速度怎么样,能够达到多少,不同模型的算法对算力的要求也不一样,对芯片本身的设计也不一样。
产品预算是多少,在满足需求的条件下,该芯片成本与产品总成本的关系。功耗跟应用场景有关,用在终端设备,还是云端,功耗完全不一样。