当提起晶元时,人们首先想到的是Intel公司,因为这家公司生产的桌面端CPU实在是太出名了,以至于大家下意识的认为晶元就是它。做为AIoT产品的产品经理,当工程师提起晶元时,也许大家首先想到的是海思、高通、瑞芯微、全志、联发科等公司。一旦工程师提起AI晶元,大部分产品经理就懵了,因为这里面涉及到演算法AI+硬体晶元,两个陌生的领域叠加在一起,直接是懵圈的平方。

AI晶元基础知识

什么是人工智慧,百度百科是这样解释的:

人工智慧 (Artificial Intelligence, AI)是研究或者开发用于模拟、延伸和扩展人类智能的理论、方法、技术及应用系统的一门科学技术。

对于人工智慧、机器学习、深度学习三者之间的关系,也是让很多人摸不著头脑,以为是同一个东西,只是叫法不同。实际上他们三者之间是包含与被包含的关系:

目前关于AI 晶元并没有一个严格的定义。比较宽泛的定义是面向人工智慧应用的晶元都可以称为AI 晶元。

AI 晶元主要包括三类:

  1. 经过软硬体优化可以高效支持AI 应用的通用晶元,例如GPU,FPGA;

2. 专门为特定的 AI 产品或者服务而设计的晶元,称之为ASIC(Application-Specific Integrated Circuit),主要是侧重加速机器学习(尤其是神经网路、深度学习),这也是目前AI 晶元中最多的形式;

3. 受生物脑启发设计的神经形态计算晶元,这类晶元不采用经典的冯·诺依曼架构,而是基于神经形态架构设计,以 IBM Truenorth为代表。

在AI应用还没有得到市场验证之前,通常使用已有的通用晶元进行并行加速计算,可以避免专门研发ASIC晶元的高投入和高风险。但是这类通用晶元设计初衷并非专门针对深度学习,因而存在性能、功耗等方面的局限性。随著人工智慧应用规模持续扩大,这类问题日益突显,待深度学习演算法稳定后, AI 晶元可采用 ASIC 设计方法进行全定制, 使性能、功耗和面积等指标面向深度学习演算法做到最优。

很多AI应用厂商经常宣称自己做出了全球第一款XXX的SoC晶元,那么SoC晶元又时什么AI晶元呢?

从上图不难发现,SoC就是ASIC晶元,只不过进行了细分。

A System-on-Chip (SoC) is a silicon chip that contains one or more processor cores -- microprocessors (MPUs) and/or microcontrollers (MCUs) and/or digital signal processors (DSPs) -- along with on-chip memory, hardware accelerator functions, peripheral functions, and (potentially) all sorts of other "stuff." One way to look at this is that if an ASIC contains one or more processor cores then its an SoC. Similarly, if an ASSP contains one or more processor cores then its an SoC.

如果将MPU、MCU、DSP、储存系统(或片外存储控制介面)、以及其他外围器件集成在单一晶元上,那么这类ASIC晶元就称为片上系统SoC,也称为系统级晶元。

ASSP和ASIC之间的唯一区别是:ASSP是更通用的设备,适用于多个系统,如独立的USB介面晶元可以归类为ASSP,而ASIC通常是客户定制的,或是面向特定用途的产品。

AI晶元的关键特征

  1. 新型的计算范式

AI 计算既不脱离传统计算,也具有新的计算特质,如处理的内容往往是非结构化数据(视频、图片等)。处理的过程通常需要很大的计算量,基本的计算主要是线性代数运算(如张量处理),而控制流程则相对简单。处理的过程参数量大。

2. 训练和推断

AI 系统通常涉及训练(Training)和推断(Inference)过程。简单来说,训 练过程是指在已有数据中学习,获得某些能力的过程;而推断过程则是指对新的数据,使用这些能力完成特定任务(比如分类、识别等)。

3. 大数据处理能力

人工智慧的发展高度依赖海量的数据。满足高效能机器学习的数据处理要求是AI 晶元需要考虑的最重要因素。

4. 数据精度

低精度设计是AI 晶元的一个趋势,在针对推断的晶元中更加明显。对一些应用来说,降低精度的设计不仅加速了机器学习演算法的推断(也可能是训练),甚至可能更符合神经形态计算的特征。

5. 可重构的能力

针对特定领域(包括具有类似需求的多种应用)而不针对特定应用的设计,将是AI 晶元设计的一个指导原则,具有可重构能力的AI 晶元可以在更多应用中大显身手,并且可以通过重新配置,适应新的AI 演算法、架构和任务。

6. 开发工具

就像传统的CPU 需要编译工具的支持, AI 晶元也需要软体工具链的支持,才能将不同的机器学习任务和神经网路转换为可以在AI 晶元上高效执行的指令代码,如NVIDIA GPU 通过CUDA 工具获得成功。

AI晶元的技术挑战

很多技术创新都是需求驱动和技术瓶颈同时存在的情况下产生的,AI 晶元和它背后的各种技术也不例外。首先是巨大需求,一方面体现在AI 应用的需求,需求的驱动要求能够提供更加高效地处理AI 运算的硬体,另一方面在目前的技术框架下遇到一些瓶颈,特别是冯·诺伊曼瓶颈和CMOS 工艺和器件瓶颈。

提高AI 晶元性能和能效的关键之一在于支持高效的数据访问。如图所示,在传统冯·诺伊曼体系结构中,数据从处理单元外的存储器提取,处理完之后在写回存储器。在AI 晶元实现中,基于冯·诺伊曼体系结构,提供运算能力相对是比较简单易行的,但由于运算部件和存储部件存在速度差异,当运算能力达到一定程度,由于访问存储器的速度无法跟上运算部件消耗数据的速度,再增加运算部件也无法得到充分利用,即形成所谓的冯·诺伊曼「瓶颈」,或「内存墙」问题,是长期困扰计算机体系结构的难题。目前常见的方法是利用高速缓存(Cache)等层次化存储技术尽量缓解运算和存储的速度差异。

目前针对AI而提出的硬体架构创新都是在和这个问题做斗争。概括来说,在架构层面解决这一问题的基本思路有:

1)减少访问存储器的数量,比如减少神经网路的存储需求(参数数量,数据精度,中间结果)、数据压缩和以运算换存储等;

2)降低访问存储器的代价,尽量拉近存储设备和运算单元的「距离」,甚至直接在存储设备中进行运算。

人工智慧,特别是机器学习的发展将需要更加强有力的,超过每秒百亿次( 10^{18} ) 运算能力的计算系统,而构建这些系统的基础是CMOS 技术的晶元,CMOS 工艺能够不断提高系统性能主要得益于集成尺寸的缩小。由于基础物理原理限制和经济的原因,持续提高集成密度将变得越来越困难。目前CMOS 器件的横向尺寸接近几纳米,层厚度只有几个原子层,这会导致显著的电流泄漏,降低工艺尺寸缩小的效果。此外这些纳米级晶体管的能量消耗非常高,很难实现密集封装。

在计算架构和器件层面,我们需要一种新的方法来打破目前的困境。大脑可以看作一个可以处理大量(通常是模糊的)信息,且具有超高密度、错误恢复能力和高能效的计算模型。神经元和大脑突触的能量消耗比最先进的CMOS 器件还低几个数量级。近年来,可以存储模拟数值的非易失性存储器发展迅猛,它可以同时具有存储和处理数据能力,可以破解传统计算体系结构的一些基本限制,有望实现类脑突触功能。

AI晶元设计趋势

  1. 云端训练和推断:大存储、高性能、可伸缩

存储的需求(容量和访问速度)越来越高,处理能力推向每秒千万亿次(Peta FLOPS),并支持灵活伸缩和部署。随著AI 应用的爆发,对推断计算的需求会越来越多,一个训练好的演算法会不断复用。推断和训练相比有其特殊性,更强调吞吐率、能效和实时性,未来在云端很可能会有专门针对推断的ASIC 晶元(如Google 的第一代TPU ),提供更好的能耗效率并实现更低的延时。

2. 边缘设备:把效率推向极致。

相对云端应用,边缘设备的应用需求和场景约束要复杂很多,针对不同的情况可能需要专门的架构设计。抛开需求的复杂性,目前的边缘设备主要是执行「推断」。在这个目标下,AI 晶元最重要的就是提高「推断」效率。目前,衡量AI 晶元实现效率的一个重要指标是能耗效率——TOPs/W,这也成为很多技术创新竞争的焦点。未来,越来越多的边缘设备将需要具备一定的「学习」能力,能够根据收集到的新数据在本地训练、优化和更新模型。这也会对边缘设备以及整个AI 实现系统提出一些新的要求。最后,在边缘设备中的AI 晶元往往是SoC 形式的产品,AI 部分只是实现功能的一个环节,而最终要通过完整的晶元功能来体现硬体的效率。这种情况下,需要从整个系统的角度考虑架构的优化。因此,终端设备AI 晶元往往呈现为一个异构系统,专门的AI 加速器和CPU,GPU,ISP,DSP 等其它部件协同工作以达到最佳的效率。

3. 软体定义晶元。

在AI 计算中,晶元是承载计算功能的基础部件,软体是实现AI 的核心。这里的软体即是为了实现不同目标的AI 任务,所需要的AI 演算法。对于复杂的AI 任务,甚至需要将多种不同类型的AI 演算法组合在一起。即使是同一类型的AI 演算法,也会因为具体任务的计算精度、性能和能效等需求不同,具有不同计算参数。因此,AI 晶元必须具备一个重要特性:能够实时动态改变功能,满足软体不断变化的计算需求,即「软体定义晶元」。

AI晶元发展现状

从2015 年开始,AI 晶元的相关研发逐渐成为学术界和工业界研发的热点。到目前为止,在云端和终端已经有很多专门为 AI 应用设计的晶元和硬体系统。同时,针对目标应用是「 训练」还是「推断」,可以把AI 晶元的目标领域分成4 个象限,如图所示:

1.云端AI计算

在云端,通用GPU,特别是NVIDIA 系列GPU 晶元,被广泛应用于深度神经网路训练和推理。与CPU 相比,拥有数千个计算内核的GPU 可以实现10-100 倍的吞吐量。面向云端AI 应用,很多公司开始尝试设计专用晶元以达到更高的效率,其中最著名的例子是Google TPU,可以支持搜索查询、翻译等应用,也是Alpha Go 的幕后英雄。此外,FPGA 在云端的推断也逐渐在应用中占有一席之地。一方面,FPGA 可以支持大规模并行的硬体设计,和GPU 相比可以降低推断的延时和功耗。另一方面,FPGA 可以很好地支持不同的数值精度,非常适合低精度推断的实现。进一步地,FPGA 的可编程能力也使它可以相对更快地支持新的演算法和应用。

2.边缘AI计算

随著人工智慧应用生态的爆发,越来越多的AI 应用开始在端设备上开发和部署。对于某些应用,由于各种原因(如延迟,带宽和隐私问题),必须在边缘节点上执行推断。比如,自动驾驶汽车的推断就不能交由云端完成,如果出现网路延时,则会发生灾难性后果。再比如,大型城市动辄百万的高清摄像头,其人脸识别如果全交由云端完成,高清录像的数据传输会让通信网路不堪重负。

3.云和端的结合

总的来说,云端AI 处理主要强调精度、处理能力、内存容量和带宽,同时追求低延时和低功耗;边缘设备中的AI 处理则主要关注功耗、响应时间、体积、成本和隐私安全等问题。目前云和边缘设备在各种AI 应用中往往是配合工作。最普遍的方式是在云端训练神经网路,然后在云端(由边缘设备采集数据)或者边缘设备进行推断。随著边缘设备能力的不断增强,越来越多的计算工作负载将在边缘设备上执行,甚至可能会有训练或者学习的功能在边缘设备上执行。另一方面,云的边界也逐渐向数据的源头推进,未来很可能在传统的终端设备和云端设备直接出现更多的边缘设备,它们会把AI处理分布在各种网路设备(比如5G 的基站)中,让数据尽量实现本地处理。

AI晶元选型策略

当我们面对一个全新的 AI 晶元时,可以从以下几个方面进行评估:

1、适用领域

这个 AI 晶元是属于云端还是终端,完成什么工作,是否满足需求。

2、体系架构

它是一个 SoC,还是一个专门的 NPU?这个晶元能够独立工作,还是需要其他的硬体设备来共同完成一项工作。

3、计算能力

AI 晶元必然是要进行 AI 处理,速度怎么样,能够达到多少,不同模型的演算法对算力的要求也不一样,对晶元本身的设计也不一样。

4、价格和功耗

产品预算是多少,在满足需求的条件下,该晶元成本与产品总成本的关系。功耗跟应用场景有关,用在终端设备,还是云端,功耗完全不一样。

参考资料:

  1. ASIC, ASSP, SoC, FPGA – Whats the Difference?

2. 清华大学AI晶元白皮书


推荐阅读:
相关文章