Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

John Lakness作者

一篇有关AI处理器的最强科普

在本文中,我们将从三个方面介绍人工智能系统中使用的核心处理器体系结构的最常见选择:标量、向量和空间。对于每种情况,我们都将对其性能特征和优化算法的类型进行一些概括。在后面的文章中,我们将更深入地讨论它们是如何实现的,以及它们在不同类型的AI工作负载上的性能。

Flynn分类法

如果没有相当流行的“Flynn分类法”,任何对处理器架构的阐述都是不完整的,因为命名法很常见。它的初衷是描述一台哈佛架构计算机如何摄取指令和数据流,并且尽可能在这种情况下最有意义。尽管如此,现代处理器通常比其他处理器更接近于一种特性,因此我们经常用这种方式来指代它们,但我们应该注意,假设任何现代处理器都完全符合其中一种类型,那将是一个严重的过度简化。这里介绍的是一种比较开放的稍微现代一些的分类法。

SISD:单指令单数据

最简单的CPU形式适合这一类。CPU的每个循环摄取指令和数据元素并处理它们以便修改全局状态。这个概念是计算机科学的基础,因此大多数编程语言都编译成一组针对这种架构的指令。大多数现代CPU也模拟SISD操作,尽管软件和硬件中可能会用到非常不同的概念。

SIMD:单指令多数据

最简单的SIMD架构是矢量处理器,类似于具有更宽数据类型的SISD架构,因此每条指令在多个连续数据元素上运行。稍微复杂的是线程并行性,其中单个指令在多个线程状态上操作,这是更通用的编程模型。

MISD:多指令单数据

对于什么是错误处理程序没有普遍的共识,所以我在这里将不做限制。考虑一个架构,它能够在单个数据输入上以单个周期的顺序执行多个任意指令。这基本上需要从输出到输入进行多路复用,而不存储中间结果。稍后,我们将看到这种高级体系结构的优点。

MIMD:多指令多数据

我再次不设限地说,一个非常长的指令字(VLIW)处理器最适合这个类别。这种处理器的目的是公开一个更精确地适合处理器可用资源的编程模型。VLIW指令能够同时向所有执行单元发送数据,这通过指令级并行(ILP)具有很大的性能优势,但编译器必须具有体系结构感知能力并执行所有调度优化。一般来说,这被证实具有挑战性。

标量(CPUs):混合性能

现代CPU是一个非常复杂的系统,旨在很好地完成各种任务。它的元素涵盖了Flynn的每一类分类。您当然可以将其编程为SISD机器,它将为您提供输出,就好像程序是按照您给出的顺序计算的一样。但是,每个CISC指令通常被转换为多个RISC指令链,以便在单个数据元素(MISD)上执行。它还将查看您提供的所有指令和数据,并将它们并行排列以便在许多不同的执行单元(MIMD)上执行数据。还有许多操作,例如在AVX指令集中,对许多并行对齐的数据元素(SIMD)执行相同的计算。此外,由于多个内核和多个线程并行运行以在单个内核上同时使用资源,因此可以实现Flynn分类法中的几乎任何类型的并行性。

代码优化器

如果CPU要以简单的SISD模式运行,从存储器中一次一个地抓取每个指令和数据元素,那么不管频率有多高,它都会非常慢。在现代处理器中,只有相对较小部分的管芯区域专用于实际执行算术和逻辑。其余部分专门用于预测程序接下来要做什么,并在不违反任何因果约束的情况下排列指令和数据以有效执行。也许与CPU的性能和其他体系结构相比,关系最密切的是对条件分支的处理。它不是等待解析一个分支,而是预测要朝哪个方向走,然后在出错时完全恢复处理器状态。在硅片上蚀刻了数百个这样的技巧,这些技巧在各种各样的工作负载上进行测试,在执行高度复杂的任意代码时提供极大的优势。

摩尔定律哲学

在我的第一份工作中,我被指派去集成一个非常昂贵的专用集成电路,这被认为是实时解码卫星图像所必需的。我注意到这个设计有几年的历史了,我做了一些计算,结果告诉我,我可以在英特尔处理器上拥有几乎相同的计算能力。在ASIC可用之前,我用C语言编写了该算法,并在奔腾III CPU上演示了该系统。那时候,'Dennard Scaling'的速度如此之快,以至于在一小段时间内,通用处理器的性能提升超过了对专用处理器的需求。选择通用处理器的最大优势可能是它易于编程,这使其成为算法开发和系统集成的首选平台。可以将算法优化为更专业的处理器,但CPU已经非常擅长为您执行此操作。在我的特殊情况下,第一版卫星使用Reed-Solomon码,但以后的设计还是考虑用Turbo码。使用ASIC的下行链路站点必须更换整个系统,我们的站点将使用简单的软件更新和常规CPU升级。因此,您可以花时间优化代码,也可以将时间花在创新应用程序上。摩尔定律的推论是,很快就会足够快。

矢量(GPU和TPU):简单和平行

在许多方面,矢量处理器是最简单的现代体系结构:一个非常有限的计算单元,它在芯片上重复多次,以便在大量数据上执行相同的操作。这些都是第一次普及的图形,因此术语GPU。一般来说,GPU不具备CPU为优化复杂的任意代码所做的预测gymnastics功能,并且具体地具有仅限于支持某些类型的计算的有限指令集。GPU性能的大部分进步都是通过密度,面积,频率和内存带宽的基本技术扩展实现的。

GPGPU

最近有一种趋势是扩展GPU指令集以支持通用计算。这些gp指令必须经过调整才能在simd体系结构上运行,这就暴露了一些优点和缺点,具体取决于算法。许多被编程为在CPU上作为重复循环运行的算法实际上只是在每个循环中对数组的每个相邻数据元素执行相同的操作。通过一些程序员的努力,它们可以很容易地并行化,有时在GPU上大规模地并行化。

值得注意的是。如果任何元素上有任何条件,那么所有分支都必须在所有元素上运行。对于复杂代码,这可能意味着计算时间相对于CPU呈指数增长。GPU具有非常宽的内存总线,可以提供出色的流数据性能,但是如果内存访问与向量处理器元素不一致,那么每个数据元素都需要来自内存总线的单独请求,而CPU具有非常复杂的预测缓存机制,可以大大补偿这一点。

内存本身非常快的同时也非常小,并且依赖于PCIe总线上的数据访问传输。在一般情况下,GPGPU算法的开发比CPU要困难得多。然而,这种挑战在一定程度上是通过发现和优化高效的并行算法来解决的,这些算法通过统一的执行分支和对齐的内存访问获得相同的结果。通常,这些算法在原始操作方面效率较低,但在并行架构中执行速度更快。

AI操作

许多人工智能中流行的算法都是基于线性代数的,而参数矩阵的大规模扩展使得该领域有了很大的进步。GPU的并行性允许最基本的线性代数的大规模加速,因此它适合AI研究人员,只要它们保持在矩阵上密集线性代数的范围内,矩阵足够大以占据大部分处理元素,小到足以容纳GPU的内存。然而,这种加速是如此之快,以至于到今天为止,在这些限制下,在深入学习方面已经取得了很大的进展。

GPU中现代开发的两个主要推动力是Tensor Processing Unit(TPU),它们在一个周期内执行全矩阵运算,而多GPU互连则用于处理更大的网络。我们在专用图形的硬件架构和为AI设计的硬件之间经历了更大的分歧。

今天,我们在专用图形的硬件架构和为AI设计的硬件之间遇到了更大的分歧。最简单的分歧是在精度上,AI正在开发基于低精度浮点和整数运算的技术。稍显迟钝的是图形处理器用来实时呈现令人信服的复杂场景重现的快捷方式,通常使用非常专业的计算单元。因此,架构之间的相似性以两者的最高优化级别结束。

Systolic Arrays

ASIC或FPGA可以为任何类型的计算体系结构设计,但是这里我们关注的是特定类型的体系结构,它与其他选择有些不同,并且与人工智能相关。在诸如CPU或GPU的时钟体系结构中,每个时钟周期从寄存器加载数据元素,将数据移动到处理元件,等待操作完成,然后将结果存储回寄存器以进行下一个操作。在空间数据流中,操作在处理器上物理连接,以便一旦计算结果就执行下一个操作,并且结果不存储在寄存器中。当在处理元素本地的寄存器中包含它们自己的状态的中等复杂单元以这种方式链接在一起时,我们将其称为“Systolic Arrays”。

功耗、延迟和吞吐量

有一些直接的优势很容易实现。在基于寄存器的处理器中,功耗主要是由寄存器之间的数据存储和传输造成的。其中唯一消耗的能量是处理元素,并将数据传输到下一阶段。另一个主要优点是元素之间的延迟,这不再局限于时钟周期。在吞吐量方面也有一些潜在的优势,因为数据可以以最慢处理阶段限制的速率被时钟发送到Systolic Arrays中。数据以相同的速率在另一端输出,其间存在一些延迟,从而建立数据流。与同步时钟 - 执行 - 存储循环相比,这可以是更高能效和/或更快的数量级,这取决于架构的目标。

数据流设计

如果说CPU是最容易编程的,并且GPU提出了更大的挑战,那么FPGA需要非常大的努力和大量的技能,而ASIC则需要更大量的成本和工程投资。尽管如此,特定算法的好处仍然很大。

要想知道这有多大的优势,可以考虑在现代硅工艺中驱动另一个逆变器的“标准化延迟”以单皮秒为单位测量,而时钟周期接近纳秒。类似地,传输能量是电阻和电容的函数,其可以根据互连的长度来计算,并且处理元件之间的距离可以比到在时钟周期之间保持数据的寄存器的距离短几个数量级。FPGA没有太大的优势,因为元件之间存在额外的扇出,切换和传输延迟,但它提供了灵活性,可以通过一个芯片适应多种数据流架构。虽然可以实现任何类型的算法,但是复杂性存在限制,因为条件需要两个分支的布局,这大大增加了面积并降低了利用效率。FPGA和ASICS还可以采用同步和收缩结构的混合来优化布局效率和速度之间的权衡。

数据流系统

用于AI实现的最常见的systolic array 类型是张量核心,它作为TPU或GPU的一部分集成到同步体系结构中。还提出了许多不同类型的卷积核心。已经在FPGA系统中实现了整个深度学习架构(如ResNet-50)的完整数据流实现,从而在延迟和功耗效率方面实现了最先进的性能。可定制性还允许任意位长精度,这会减小布局大小和处理延迟,但必须仔细调整以适应系统的统计性能要求。然而,主要的独特功能是处理的实时性质允许AI与实时系统中的其他信号处理组件集成。

结论

在为特定系统选择AI处理器时,了解每种算法在所用算法的上下文中的相对优势以及系统要求和性能目标非常重要。在后面的章节中,我们将介绍一些注意事项和示例。我们将看到这些处理器体系结构中的每一个在各种系统级考虑因素中都比其他处理器体系结构更具优势。

1.Fowers,J.,K.Ovtcharov,M.Papamichael,T.Massengill,M.Liu,D.Lo,D.Burger等。“用于实时AI的可配置云规模DNN处理器”,2018年ACM/IEEE第45届国际计算机体系结构研讨会(ISCA),2018年。doi:10.1109/isca.2018.00012。

2.Hennessy,J.L.和D.A.Patterson。计算机体系结构:定量方法。Burlington, MA:Morgan Kaufmann,2017。

3.Sze,V.,Y.Chen,T.Yang和J.S.Emer,“深层神经网络的高效处理:指导和调查”,《IEEE 105会议录》,第12期(2017),2295-2329。doi:10.1109/jproc.2017.2761740。

4.Scott Cyphers、Arjun K.Bansal、Anahita Bhiwandiwalla、Jayaram Bobba、Matthew Brookhart、Avijit Chakraborty、Will Constable、Christian Transvey、Leona Cook、Omar Kanawi、Robert Kimball、Jason Knight、Nikolay Korovaiko、Varun Kumar、Yixing Lao、Christopher R.Lishka、Jaikrishnan Menon、Jennifer Myers、Sandep Aswath Narayana、Adam Procter:“Intel nGraph:深度学习的中间表示、编译器和执行器”,2018;arxiv:1801.08058。

半导体行业观察
半导体行业观察

最有深度的半导体新媒体,实时、专业、原创、深度,30万半导体精英关注!专注观察全球半导体最新资讯、技术前沿、发展趋势。

产业AI处理器
相关数据
英特尔机构

英特尔(NASDAQ: INTC)是全球半导体行业的引领者,以计算和通信技术奠定全球创新基石,塑造以数据为中心的未来。我们通过精尖制造的专长,帮助保护、驱动和连接数十亿设备以及智能互联世界的基础设施 —— 从云、网络到边缘设备以及它们之间的一切,并帮助解决世界上最艰巨的问题和挑战。

http://www.intel.cn/
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

调度技术

调度在计算机中是分配工作所需资源的方法。资源可以指虚拟的计算资源,如线程、进程或数据流;也可以指硬件资源,如处理器、网络连接或扩展卡。 进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态,允许多位用户有效地同时共享系统资源,或达到指定的服务质量。 see planning for more details

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

流数据技术

流数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。应用于网络监控、传感器网络、航空航天、气象测控和金融服务等领域。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

信号处理技术

信号处理涉及到信号的分析、合成和修改。信号被宽泛地定义为传递“关于某种现象的行为或属性的信息(如声音、图像和生物测量)”的函数。例如,信号处理技术用于提高信号传输的保真度、存储效率和主观质量,并在测量信号中强调或检测感兴趣的组件。我们熟悉的语音、图像都可以看做是一种信号形式。因此,对于语音、图像的增强、降噪、识别等等操作本质上都是信号处理。

摩尔定律技术

摩尔定律是由英特尔创始人之一戈登·摩尔提出来的。其内容为:积体电路上可容纳的电晶体数目,约每隔两年便会增加一倍;经常被引用的“18个月”,是由英特尔首席执行官大卫·豪斯所说:预计18个月会将芯片的性能提高一倍。

线性代数技术

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~