AI芯片的评价指标和对比(CPU/GPU/ASIC/FPGA)
AI芯片的评价指标和对比(CPU/GPU/ASIC/FPGA)
AI芯片是人工智能领域的重要基础设施,其性能直接影响到AI应用的效果和效率。本文将从性能、灵活性、同构性、功耗和成本等多个维度,对常见的AI芯片类型(CPU、GPU、ASIC、FPGA)进行系统性对比分析,帮助读者更好地理解不同芯片的特点和适用场景。
一、背景知识
芯片的分类
常见的芯片种类包括:CPU、GPU、ASIC、FPGA,以及一些小众芯片如类脑芯片(Intel)和量子芯片(谷歌)。
按照应用场景分类
- 服务器端(云端):注重芯片的算力、扩展能力,以及对现有基础设施的兼容性等。
- 移动端(终端):注重芯片的低功耗、低延时、低成本。
AI芯片的评价标准
- 性能(算力):如芯片在浮点或定点运算时每秒的运算次数,以及芯片的峰值性能和平均性能等。
- 灵活性:芯片对不同场景的适应程度,是否可应用于各种不同的AI算法和应用。
- 同构性:当大量部署AI芯片时,能否利用现有的软硬件基础设施架构,减少对外部设备的依赖。例如,一个显示器的接口是HDMI时,可直接与电脑相连;但如果接口是VGA或雷电3,则需要加一个转接头才能与电脑相连。
- 功耗:芯片对数据中心带来的额外功耗负担。
- 成本:包括芯片的研发成本和芯片的部署及运维成本。
二、常见芯片在不同评价标准上的分析
CPU芯片
中央处理器(Central Processing Unit, CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU是数据中心的主要计算单元,为了支持AI应用,传统CPU的架构和指令集也在不断变化。CPU在灵活性和同构性维度有明显优势。
GPU芯片
图形处理器(Graphics Processing Unit, GPU),是一种专门在个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器。GPU有大规模的并行架构,非常适合数据密集型应用和处理,如深度学习的训练过程。与CPU相比,GPU的性能会高很多倍。很多公司会选择GPU对各种AI应用进行加速,如分析处理图片、视频、音频等。GPU有一个非常成熟的应用框架,如CUDA。
GPU最大的问题是功耗,比如Intel的P100、V100、A100系列都在250-400瓦之间,而ASIC和FPGA只有几十瓦或几瓦。神经网络的训练往往需要大量GPU集群提供充足算力,一个机柜的功耗会超过几十千瓦,这需要数据中心修改供电和散热结构,如把风冷散热改为水冷散热,这是一笔巨大开销。高功耗还会带来高昂电费开支,现代数据中心中超过40%的运维成本都是电费开支。因此,在数据中心大规模部署GPU时,通常需要考虑其算力优势是否能抵消额外电费。
ASIC芯片
专用集成电路(Application Specific Integrated Circuit, ASIC),是指应特定用户要求和特定电子系统需要而设计、制造的集成电路。典型代表是谷歌AlphaGo中的TPU,它替代了1000多个CPU和上百个GPU。在人工智能专用芯片的各项指标都非常极端,有极高的性能和极低的功耗。比如与GPU相比,性能高10倍,功耗低100倍。但这类芯片研发有极高成本和风险。与软件开发不同,芯片研发需要投入大量人力物力,开发周期往往长达数年,且失败风险很大。
AI专用芯片的灵活度比较低,比如TPU通常是针对某些具体应用开发的,不能适用于其他应用场景。如果要使用基于ASIC的方案,就需要目标应用有足够大的使用量来分摊高昂的研发成本,同时这类应用要足够稳定,避免核心算法或协议不断变化。
FPGA芯片
现场可编程门阵列(Field Programmable Gate Array, FPGA),是一种可以重构电路的芯片,是一种硬件可重构体系结构。FPGA可以在各种指标中达到一个比较理想的平衡。在性能方面,FPGA可以实现定制化硬件流水线,在硬件层面可以进行大规模并行运算,具有很高的吞吐量。FPGA具有很高的灵活性,可以很好地应对计算密集型和通信密集型在内的很多应用。此外,FPGA有动态可编程和部分可编程的特点,也就是说FPGA可以在同时处理多个应用或在不同时刻处理多个不同应用,这与CPU类似,但性能远超CPU。在数据中心里,FPGA通常是以加速卡形式配合现有CPU进行大规模部署。功耗通常只有几十瓦,对供电和散热没有特殊需求,因此可以兼容现有数据中心基础设施架构。衡量芯片时,经常使用性能功耗比的技术指标,所以FPGA比CPU具有优势。
在开发成本方面,FPGA一次性成本要远低于ASIC芯片,因为FPGA在制造出来后,可以通过不断编程来改变其上的逻辑功能;而ASIC在流片后,其功能就确定了,如果要改变功能,就需要再进行流片。
基础概念
- 指令集:CPU执行计算任务时都需要遵从一定的规范,程序在被执行前都需要先翻译为CPU可以理解的语言。这种规范或语言就是指令集(ISA,Instruction Set Architecture)。程序被按照某种指令集的规范翻译为CPU可识别的底层代码的过程叫做编译(compile)。x86、ARM v8、MIPS都是指令集的代号。指令集可以被扩展,如x86增加64位支持就有了x86-64。厂商开发兼容某种指令集的CPU需要指令集专利持有者授权,典型例子如Intel授权AMD,使后者可以开发兼容x86指令集的CPU。
- 微架构:CPU的基本组成单元即为核心(core)。核心的实现方式被称为微架构(microarchitecture)。微架构的设计影响核心可以达到的最高频率、核心在一定频率下能执行的运算量、一定工艺水平下核心的能耗水平等等。微架构与指令集是两个概念:指令集是CPU选择的语言,而微架构是具体的实现。