不同的芯片类型决定了芯片的用途和设计理念,所以这方面一定是了解芯片最关键的一点。指令集类型和指令集架构,跟芯片的生态息息相关,因为一款好的芯片,不光要具备强大的计算性能,也要有广泛、灵活的开发者生态体系,做到软硬结合。最后一点是公司以及制程,公司的市占率以及芯片的制程是否足够先进,关系到芯片的商用成熟度以及供货保障程度。
CPU、GPU、FPGA、ASIC是目前AI计算过程中最主流的四种芯片类型,他们的主要区别体现在计算效率、能耗和灵活性上面。
- 下的处理器,遵循“Fetch (取指) -Decode (译码) - Execute (执行) - Memory Access (访存) -Write Back (写回)”的处理流程。在执行计算任务过程中,数据需要先获取并存入RAM,然后解码获得指令,然后在ALU计算模块计算,最终将计算结果返回RAM。整个流程更强调控制和决策,在并行计算效率上有较大提升空间
- GPU:GPU最早用于图像处理领域,减少了大量数据预取和决策模块,增加了计算单元ALU的占比,从而在并行化计算效率上有较大优势。
- FPGA:FPGA的设计使得计算逻辑十分灵活,它不像CPU和GPU那样只能执行编译和汇编的内容,FPGA因为几乎没有控制模块,所有模块都是ALU计算模块,而且所有模块都可定制开发。但这也是FPGA的主要缺陷,因为具备很强的灵活度,导致设计难度和复杂度较高。
- ASIC:ASIC是专门针对某一领域设计的芯片,比如神经网络计算芯片NPU、Tensor计算芯片TPU等。因为是针对特定领域定制,所以ASIC往往可以表现出比GPU和CPU更强的性能,ASIC也是目前国内外许多AI芯片设计公司主要研究的方向,可以预见未来市面上会逐渐有大量AI领域的ASIC芯片出现。
AI芯片的指令集,首先要了解指令集是什么。计算机执行任务的过程可以看作是把程序编译成硬件可以理解的语言,再有硬件完成最终的计算工作。指令集可以理解是为编程和编译服务的一种计算机硬件可以理解的语言。
指令集分复杂指令集(CSIC)和精简指令集(RISC)。
CSIC主要用于传统的CPU芯片领域,它的设计模式是把用一个指令完成较复杂的任务。RISC是精简指令集,把任务进行拆解,
接下来看下指令集架构(ISA),在AI领域需要重点关注ARM、RISC-V,国内外许多厂商也有在探索自研指令集架构,但是也是基于ARM或者RISC-V的设计思路。
ARM架构则是由英国的ARM Holdings公司开发的,它是为嵌入式系统和移动设备而设计的。ARM架构的主要特点是低功耗、高性能和可扩展性,它可以支持移动设备、嵌入式系统、智能家居等应用。
RISC-V是近些年非常流行的指令集架构,RISC-V与 ARM 和 MIPS 最大的差别还是在于其为 RISC-V 基金会进行标准的制定和维护工作而非商业公司,任何人可以无偿使用该指令集开发自己的 CPU ,或者往自己已有的芯片中集成开源免费的 RISC-V IP Core,这是比较吸引电子设备厂商的重要原因。
GPU的另外一个优势,是它有着比较成熟的编程框架,比如CUDA,或者OpenCL等等,这是GPU在AI领域得到爆发最直接的推动力量之一,也是GPU相比FPGA或者ASIC的最大优势之一。
但是,GPU的最大问题就是它的功耗。比如,英伟达的P100、V100和A100 GPU的功耗都在250W到400W之间。相比于FPGA或ASIC的几十瓦甚至几瓦的功耗而言,这个数字显得过于惊人了。
而对于神经网络的训练来说,它往往需要大量密集的GPU集群来提供充足的算力。这样一来,一个机柜的功耗就可能会超过几十千瓦。这就需要数据中心为它修改供电和散热等结构。比如传统的数据中心大都靠风扇散热,但如果要部署GPU,就可能要改成水冷散热。对于大数据中心来说,这是笔巨大的开销。
伴随着高功耗,更大的问题实际是高昂的电费开支。要知道,现代数据中心的运维成本里,电费开支占40%甚至更高。所以,对于GPU在数据中心里的大规模部署,我们通常考虑的是它所带来的性能优势,能否抵消它带来的额外电费。
ASIC
ASIC就是所谓的人工智能专用芯片。这里的典型代表,就是谷歌阿尔法狗里用的
TPU。根据谷歌的数据,TPU在阿尔法狗里替代了一千多个CPU和上百个GPU。
在我们的衡量体系里,这种AI专用芯片的各项指标都非常极端,比如它有着极高的性能和极低的功耗,和GPU相比,它的性能可能会高十倍,功耗会低100倍。
研发这样的芯片有着极高的成本和风险。与软件开发不同,芯片开发全程都需要大量的人力物力投入,开发周期往往长达数年,而且失败的风险极大。放眼全球,同时拥有雄厚的资金实力和技术储备以进行这类研发的公司,大概用两只手就能数的出来。也就是说,这种方案对于大多数公司而言并可能没有直接的借鉴意义。
此外呢,AI专用芯片的灵活性往往比较低。顾名思义,包括谷歌TPU在内的AI专用芯片,通常是针对某种特定应用而设计开发,因此它可能很难适用于其他的应用。在使用成本的角度,如果要采用基于ASIC的方案,就需要这类目标应用有足够的使用量,以分摊高昂的研发费用。同时,这类应用需要足够稳定,避免核心的算法和协议不断变化。
NPU 是一种专门用于处理机器学习算法的处理器。它能够比传统 CPU 和 GPU 更快地执行复杂的数学运算,这对于高效运行神经网络至关重要。
NPU 主要用于处理涉及大量小规模并行计算的 AI 任务。它在处理图片、视频等多媒体数据和神经网络数据时表现出色,因为这些处理器天生就是为了并行计算而设计的。
虽然 CPU 和 GPU 也能处理机器学习任务,但效率远不如 NPU。此外,在设备中集成 NPU 可以大大减轻 CPU 和 GPU 的负担,让它们能够更专注地执行其他任务。
NPU 在功能和外观上与特定应用集成电路(ASIC)类似,但两者并不相同。NPU 设计更为复杂和多功能,可以满足各种神经网络计算需求;而 ASIC 通常只针对单一用途。NPU 的强大能力来自于专门为神经网络计算而设计的硬件、软件、编程和驱动。
在 AI 计算中,需要执行大量的「乘加运算」(Multiply Accumulate, MAC)。大多数 AI 算法都是由许多这样的运算构成,它们在大数据集上往往形成树状结构,更适合分批处理较小的计算任务。
Google 开发的 TPU 同样专注于处理神经网络,与 NPU 功能相似。但它们在架构上有显著的不同。
与采用传统冯·诺依曼架构(将内存和处理单元分离)的 NPU 不同,TPU 采用了一种名为脉动阵列(Systolic Array)的特殊设计,将运算处理和内存单元合并在一个芯片上。因此,TPU 在进行并行计算时,能比 NPU 更快、更高效。
目前,TPU 只在 Google 的 Pixel 手机和 Google Cloud 云平台上提供,随着版本迭代,每一代的性能都会有所提升。
什么是 GPNPU?GPNPU 并不是 GPU + NPU 的结合体,而是代表「通用神经处理单元」(General Purpose Neural Processing Units)。
GPNPU 采用了统一处理器架构的单一执行管道,能够处理向量和矩阵运算,以及标量(控制)代码。由于整个设计只有一个由软件控制的核心,因此可以更轻松地处理复杂的并行工作负载。
我需要 NPU 吗?目前市场上的大多数 AI 服务,如 OpenAI 的 ChatGPT 语言模型,都在云端进行计算。那为什么还需要本地 NPU 呢?
- 使用本地 NPU 的一个主要优势是可以显著减少数据在 Intelnet 和本地之间返回的延迟。因此,如果你的工作高度依赖 AI,那么拥有专属的 NPU 将大大提高处理速度。
- 此外,NPU 还可以减轻 CPU 和 GPU 的负担,让它们可以空出资源来处理其他重要任务。如果你的系统搭载了 NPU,你就能将 CPU 和 GPU 留给其他需要大量硬件资源的任务。