其实没有传统芯片的说法,按不同的方式芯片可以有不同的分类方法,我想题主说的传统芯片是指CPU、GPU这些。CPU、GPU与AI芯片他们的共同点是都可以进行AI的运算,不同点是
AI芯片是专门用来处理AI相关运算的芯片,这与CPU、GPU、DSP的“兼职”做AI运算不同,即便是最高效的GPU与AI芯片相比也是有差距的,AI芯片在时延、性能、功耗、能效比等方面全面的超过上面提到的各种处理器。以知名的谷歌的TPU为例,当时谷歌资深硬件工程师Norman Jouppi表示,谷歌的专用机器学习芯片TPU处理速度要比GPU和CPU快15-30倍(和TPU对比的是英特尔Haswell CPU以及Nvidia Tesla K80 GPU),而在能效上,TPU更是提升了30到80倍。
为什么AI芯片在时延、性能、功耗、能效比方面表现更好呢?其实主要是因为结构,现在的AI主要是指机器学习/深度学习,运算从本质来说是一些矩阵乘。下面这张图相信很多人都看到过,CPU更擅长逻辑控制,串行计算,只有一小部分是用来计算的,而GPU控制电路相对简单并且Cache的需求小,更多的晶体管用来进行运算,GPU的结构也使得他更适合做一些大运算量的重复工作,而且更容易组成大的集群,就是大家常见的GPU的核心数比CPU好堆。
AI的运算本质上都是一些矩阵乘、并不需要很多的存取和判断,所以GPU的架构比CPU更加适合AI,也更加的高效。GPU本来是作为图形图像处理器存在的,里面有很多图形流水线的东西,这些对于AI运算是没有用的,谷歌他们去掉后重新设计成了TPU,里面有一个庞大的8位矩阵乘法单元,更加的适合AI运算,这类有很多浮点处理单元的芯片比较适合训练。从GPU进行AI运算到专业的AI芯片是一个必然的趋势,也带来更高的性能、更好的功耗。
AI芯片一般分为两类,一类是上面提到的谷歌TPU这样的用来做训练的,通过海量的数据样本进行训练构建神经网络模型,一般部署在云端;另一类是做推理用的,通常用在手机、汽车、安防等领域,执行训练好的模型,现有的推理芯片有很多,比如寒武纪NPU、地平线BPU、阿里新发布的含光800(这个用在云端)等。与训练不一样,推理为了更高效,还会采用一些其它的操作,比如稀疏矩阵、降低精度等,实验证明做适当的剪枝可以明显的加速推理过程并且还能保证较高的准确率。这样的话推理用的AI芯片在能效比等方面会更加的突出,更加的优于GPU。
大家都知道做芯片不容易,这两年AI很火就冒出一堆的AI芯片,真的都能生存吗?芯片一方面是靠技术另一方面是靠商业,只有正常商业化应用的芯片才能走上正轨一步步发展壮大。去年 FPGA 厂商赛灵思收购中国 AI 芯片领域的明星创业公司——深鉴科技,究其根本是深鉴科技无法自己造血养活自己,AI芯片想要落地FPGA的路子也是走不通的。
手机领域是目前AI落地比较好的,手机上的智能语音,拍照AI识别和处理都可以应用上,还包括一些智能音箱产品,前几天我拆了一个小米小爱音箱PLAY,发现采用的是地平线 ESE 方案。其实不只是智能语音,机器学习在图像识别领域做的也很好,前不久网易邀请我去体验百度的无人驾驶,就是下面这辆车,相信很多人都见过图片,车顶的雷达和车身上的各种传感器采集数据然后交给后备箱中两台庞大的服务器进行处理。因为雷达是64位的,所以数据计算量还是很大的,精度要求也高。
当我见到后备箱中的两台服务器时,我就想,自动驾驶的基础是计算机视觉,这是AI所擅长的,如果有好的AI芯片那会就不用装这么大两个服务器了。我能想到,自然别人也能想到,百度也能想到,问题是能做到什么程度。有趣的是曾任职百度IDL常务副院长,百度研究院副院长的余凯从百度出来后成立了地平线从事的就是相关的工作,一个多月前地平线刚宣布量产中国首款车规级人工智能芯片——征程二代(Journey 2)。根据目前的报道征程二代(Journey 2)典型功耗2W下就可以提供4TOPS的性能,是同等级GPU的10倍以上,典型目标识别精度超过99%,延迟不超过100毫秒。最后的体积也许不会像下面显示的这么小但是绝对会大大缩小体积,减轻负重和耗电情况,还能释放出空间,这样才会有实用价值。
都在说5G说自动驾驶,事实上5G只是一个管道和桥梁,真正决定自动驾驶发展的是计算机视觉技术的发展,是AI芯片的落地。
有点扯远了,总结就是,CPU、GPU、AI芯片都能用于AI运算,如果用时延、性能、功耗、能效比等标准来衡量的话AI芯片最好,其次是GPU,最差的选择是CPU。
广义上,AI芯片是用于运行AI算法的专用处理器,与传统芯片(如CPU)的区别在于专用性或通用性的侧重上。下面的几类芯片,都可以执行AI算法。
某种程度上,GPU和FPGA也可以视为AI芯片,不过ASIC类的特点鲜明,因此最具有代表性。
AI芯片遵循一个硬件设计规律:
一个好理解的例子是比特币挖矿。
比特币的共识算法是SHA256算法,基于哈希运算,所以不存在反向计算公式,只能靠矿机去穷举海量的可能值。对于每个区块,最先尝试到正确值的矿工,将获得挖矿奖励。对于矿工来说,计算速度越快,获得奖励的期望就会越高。
在CPU作为主流挖矿方式的时期,一位论坛ID为Laszlo的程序员,发现GPU的挖矿效率远远高于CPU。于是他仅用一块9800显卡,就挖出了超过8万个比特币。
Laszlo:As far as I know I was the first to release a GPU miner.
Laszlo除了是最早用GPU挖矿的人外,还做过一件具有里程碑意义的行为艺术:用10000枚比特币买了2个披萨。
关于这段有趣的历史,参见我之前的文章:
接下来的一段时间里,GPU得益于算力和能效上的巨大优势,逐渐成为了主流的挖矿芯片。
不过到了现在,再用GPU挖比特币,已经几乎不可能了。例如RTX 3090显卡,在超频情况下,每秒能执行126.5M次SHA256计算,而比特币的全网总算力已经超过178.60EH/s,等价于14000亿块RTX 3090显卡的算力总和。
这些海量算力主要来自ASIC矿机,其计算芯片就是面向执行SHA256算法去进行架构设计。这使得ASIC矿机在挖矿效率上碾压显卡,甚至于单矿机就能胜过超算中心。
但是ASIC矿机在硬件上牺牲了通用性,导致无法执行其他计算任务,甚至于无法挖非SHA256算法的区块链货币,如以太坊。
在比特币挖矿的例子中,能看出专用芯片最为适合:算法(or算子)固定,且相对简单的应用场景,比如比特币的SHA256算法。
AI芯片跟矿机的特点一致,重视专用场景下的运算效率,但落地场景不同。
AI芯片的目的是高效率地执行AI算法,因此也会被称为AI加速器,并衍生出了一大堆名字,如NPU(神经网络处理器),TPU(谷歌·张量处理器),APU(AMD·加速处理器)。虽然名字上不一样,但性质上颇为类似。
下面用谷歌的初代TPU(2016年)举例。
图中对比了若干主流AI算法的推理表现,初代TPU相比同时代的CPU/GPU,效率可谓摧枯拉朽。TPU不仅是性能强悍,在能效上依然甩出CPU和GPU数十倍。
有意思的是,根据TPU项目的技术负责人(诺曼·乔皮)所说,在工程开始时,他们连团队都没组齐,还要手忙脚乱的去招聘RTL和验证工程师。
Norm Jouppi:We did a very fast chip design. It was really quite remarkable.
即便是仓促上阵,但初代TPU的设计,验证,流片,加上部署,整体流程只耗费了15个月时间。
这体现了AI芯片的一个特点,架构相比通用芯片(CPU/GPU)要简单得多,使得TPU团队能够在如此短的时间内,快速打造出一款全新的AI芯片。
下图是TPU的模块面积图,其中黄色是计算相关,蓝色是数据相关,绿色是读写相关,而红色则是控制相关的电路,仅占了芯片面积(die)的2%。
TPU只需面向卷积神经网络的运行,因此可以减少控制逻辑,且各项延时相对固定,运行的稳定性高。
CPU和GPU因为要面临复杂多样的计算任务,控制逻辑复杂的多,造成控制电路的面积大,也更难设计。
AI算法通常是基于卷积神经网络,最基本且最主要的操作是『卷积』。
注意,此处『卷积』定义不同于信号处理中的卷积。以最常见的3x3卷积为例,计算过程如下图所示:
举个更具体的例子,在1080P分辨率下,1个4层输入4层输出的卷积层:
当层数较大时,参数量会激增。对于一个512层输入和512层输出的卷积层:
上述介绍的仅仅是一个卷积层,而真正的卷积神经网络通常由多个卷积层和其他算层蹭相互连接构成[3]。
为了更好地实现模型的推理加速,需要总结实际模型的特点,分析出性能瓶颈,进而做出针对性的优化。
TPU团队在2016年时,统计过6个谷歌产品和工具中的若干类常见神经网络,详见下表:
模型类型 | 网络层数 | 参数数量 | 部署比例 |
---|---|---|---|
MLP0 | 5 | 20M | 61% |
MLP1 | 4 | 5M | |
LSTM0 | 58 | 52M | 29% |
LSTM1 | 56 | 34M | |
CNN0 | 16 | 8M | 5% |
CNN1 | 89 | 100M |
常见模型的参数数量从500万到1亿个之间,可见:
面对卷积神经网络的庞大计算量,CPU在单时钟周期内可执行的运算数有限,极易出现计算瓶颈。GPU则是提升了并行计算性能,将卷积运算等价变换成矩阵的乘加运算,成为了神经网络训练的主流硬件。
模型加速的核心是提升并行化水平,在同一个时钟周期内,进行尽可能多次的运算。TPU重新设计了专用的硬件架构:脉动阵列(systolic array)。
单个时钟周期可执行的运算数 | |
---|---|
CPU | 一两个 |
CPU(vector extension) | 数十个 |
GPU | 数千个 |
TPUv1 | 256 * 256 = 65536个 |
TPU的脉动阵列参见下图[1],计算结果并非直接输出,而是在脉动阵列中按规律“流动”,等完全计算好后才输出保存。不仅增加了并行度,还实现了参数的复用,避免了反复载入。脉动阵列结构精妙,后续有机会可以单独写回答来介绍。
TPU的脉动阵列在每个时钟周期能执行65536次8位整型数的乘加运算。在700MHz的主频下,实现了65536 * 700,000,000 * 2 =92Tops@INT8的惊人算力。
上文提到,谷歌部署的神经网络中,参数数量从500万到1亿个不等,且中间结果也有很大数据量。
如果卷积运算单元(如脉动阵列)从DDR(内存)上,频繁进行:
类似木桶效应,决定盛水量的是最短的那块木板,即性能瓶颈。上述密集的DDR读写操作,使得IO速度容易成为模型推理的性能瓶颈。
于是,初代TPU搭载了28M字节的片上存储器(On-chip memory, OCM),虽然成本较高,但读写速度远胜DDR内存。而第二代TPU更是不惜成本,十分奢侈地搭载了16GB的HBM存储单元,其IO速度达到了600GB每秒。
有了高速缓存(OCM or HBM)后,运行时就可以将频繁使用的参数,提前载入到高速缓存中,然后卷积核便可以快速读取所需数据,无需反复从内存上载入。不仅如此,片上存储器还可以保存网络运作的中间结果,避免在内存上中转(写入+读回),从而显著降低内存的IO压力。
这里高速缓存的作用类似于传统CPU中的L3缓存,目的是有效缓解内存的带宽压力,让卷积核的强大算力得到充分发挥,避免出现空等数据载入的情况。
下图出自论文[2],第一作者TPU项目的技术负责人(诺曼·乔皮)。论文实验并统计了若干主流模型在TPU/GPU/CPU上的运行表现。
横轴为所需算力除以需从内存载入的数据量,代表单位内存数据载入对应的计算密度,而纵轴为实际发挥的算力。因此,斜线部分代表算力表现被内存IO带宽制约,而水平部分代表性能已充分发挥,即被算力制约。
如图所示,TPU(蓝线)在高计算密度时,效果明显优于CPU(黄线)和GPU(红线)。可见在高计算密度情况下,TPU能发挥更大优势。而28MB的片上存储能够提前缓存参数和中间结果,避免卷积核频繁进行内存对鞋,从而提升计算密度,让TPU运行更加高效。
在硬件设计之外,为了让AI芯片更高效的运行模型,需要对AI算法做轻量化处理。
一个常见且直观的方法是进行『模型量化』,可以显著降低参数大小和计算量。
当前的神经网络训练基本都基于浮点运算,在GPU上训练和推理时,通常使用32比特或64比特来表示一个浮点数。
如果使用更低的比特数,比如改用8个比特来表示数字,会极大降低参数大小和计算量。
谷歌:如果外面在下雨,你可能不需要指导每秒有多少雨滴落下,而只是想知道,下的大雨还是小雨[1]。
如下图[1]是使用8比特整型数去近似32位浮点数。
量化等于带来了一定的量化噪声,而好的神经网络会具备一定的抗噪能力,因此量化后算法的精度损失会是有限且可控的。
量化的另一个好处是,如果将模型的输入和参数均量化成整型数(如int8/uint8),没有了浮点计算,能让硬件设计更加简化。如上文介绍到,初代TPU仅支持整型运算,不仅是因为整型数运算在硬件上更加高效,且电路会简单很多。
目前主流的量化方法有两大类:
量化方法 | 简称 | 量化能力 | 优势 | 劣势 |
---|---|---|---|---|
量化训练 | QAT | 低于8bit | 极致的精度和效率 | 需要训练数据 训练时间长学习门槛高 |
训练后量化 | PTQ | 可达8bit | 不需要训练数据 转换速度快使用门槛低 | 存在精度/效率损失 |
QAT在训练模型时就使用量化算子,可以最大地避免精度损失,但不能使用现有的浮点模型,需要从头开始去重训模型。
PTQ则是对现有的浮点模型做量化,虽然量化后的模型精度和效率不通常如QAT,但由于不需要重新训练模型,使用门槛更低更稳定,还是有很大的使用需求。而如何减少精度损失,是PTQ方案在不停探索的目标,也衍生出了多种思路,例线性数量化和对数量化。
除必不可少的3x3卷积外,常见的神经网络算子多达数十种(如ONNX包含80+算子)。
出于芯片成本,设计难度和运行效率的考虑,现有的AI芯片都只能原生支持部分算子。
因此,在模型训练时就需要了解和考虑硬件能力,尽量使用AI芯片能高效支持的算子,以提升部署后的运行效率。反过来,AI芯片的硬件设计时,同样需要考虑算法设计的需要,尽量支持更多的常用算子,以提高模型设计的自由度。
如果厂商具备软硬件之间的协同开发能力,就可以在模型精度,芯片成本,推理速度之间,达到非常好的兼顾,实现1+1>2的效果。
这也是越来越多终端厂商选择自研AI芯片的原因,而AI芯片厂商也经常会打包算法出售。
AI芯片除了硬件外,软件栈(工具链)的设计也是非常重要且有难度的,不仅是模型量化,还包括编译器设计。
在编译环境,为追求更高的硬件效率,需要研究非常复杂的调度问题,这是我目前的主要工作内容。日后有精力会单独写回答分享。
[1] 重点参考:An in-depth look at Google’s first Tensor Processing Unit (TPU)
[2] https://arxiv.org/ftp/arxiv/papers/1704/1704.04760.pdf
[3] Convolutional Neural Network (CNN)
[4] 【国产自研芯片】为了测试AI暗光相机,工程师竟去密室拍NPC和小姐姐?_哔哩哔哩_bilibili
[5] 下书(一直在看):
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有