所谓的 AI 芯片,一般是指针对 AI 算法的 ASIC(专用芯片)。
 
传统的 CPU、GPU 都可以拿来执行 AI 算法,但是速度慢,性能低,无法实际商用。
 
比如,自动驾驶需要识别道路行人红绿灯等状况,但是如果是当前的 CPU 去算,那么估计车翻到河里了还没发现前方是河,这是速度慢,时间就是生命。如果用 GPU,的确速度要快得多,但是,功耗大,汽车的电池估计无法长时间支撑正常使用,而且,老黄家的 GPU 巨贵,经常单块上万,普通消费者也用不起,还经常缺货。另外,GPU 因为不是专门针对 AI 算法开发的 ASIC,所以,说到底,速度还没到极限,还有提升空间。而类似智能驾驶这样的领域,必须快!在手机终端,可以自行人脸识别、语音识别等 AI 应用,这个必须功耗低,所以 GPU OUT!
 
所以,开发 ASIC 就成了必然。
 
说说,为什么需要 AI 芯片。
 
AI 算法,在图像识别等领域,常用的是 CNN 卷积网络,语音识别、自然语言处理等领域,主要是 RNN,这是两类有区别的算法。但是,他们本质上,都是矩阵或 vector 的乘法、加法,然后配合一些除法、指数等算法。
 
一个成熟的 AI 算法,比如 YOLO-V3,就是大量的卷积、残差网络、全连接等类型的计算,本质是乘法和加法。对于 YOLO-V3 来说,如果确定了具体的输入图形尺寸,那么总的乘法加法计算次数是确定的。比如一万亿次。(真实的情况比这个大得多的多)
 
那么要快速执行一次 YOLO-V3,就必须执行完一万亿次的加法乘法次数。
 
这个时候就来看了,比如 IBM 的 POWER8,最先进的服务器用超标量 CPU 之一,4GHz,SIMD,128bit,假设是处理 16bit 的数据,那就是 8 个数,那么一个周期,最多执行 8 个乘加计算。一次最多执行 16 个操作。这还是理论上,其实是不大可能的。
 
那么 CPU 一秒钟的巅峰计算次数=16X4Gops=64Gops。
 
这样,可以算算 CPU 计算一次的时间了。
 
同样的,换成 GPU 算算,也能知道执行时间。因为对 GPU 内部结构不熟,所以不做具体分析。
 
再来说说 AI 芯片。比如大名鼎鼎的谷歌的 TPU1。
 
TPU1,大约 700M Hz,有 256X256 尺寸的脉动阵列,如下图所示。一共 256X256=64K 个乘加单元,每个单元一次可执行一个乘法和一个加法。那就是 128K 个操作。(乘法算一个,加法再算一个)
 
 
另外,除了脉动阵列,还有其他模块,比如激活等,这些里面也有乘法、加法等。
 
所以,看看 TPU1 一秒钟的巅峰计算次数至少是=128K X 700MHz=89600Gops=大约 90Tops。
 
对比一下 CPU 与 TPU1,会发现计算能力有几个数量级的差距,这就是为啥说 CPU 慢。
 
当然,以上的数据都是完全最理想的理论值,实际情况,能够达到 5%吧。因为,芯片上的存储不够大,所以数据会存储在 DRAM 中,从 DRAM 取数据很慢的,所以,乘法逻辑往往要等待。另外,AI 算法有许多层网络组成,必须一层一层的算,所以,在切换层的时候,乘法逻辑又是休息的,所以,诸多因素造成了实际的芯片并不能达到利润的计算峰值,而且差距还极大。
 
可能有人要说,搞研究慢一点也能将就用。
 
目前来看,神经网络的尺寸是越来越大,参数越来越多,遇到大型 NN 模型,训练需要花几周甚至一两个月的时候,你会耐心等待么?突然断电,一切重来?(曾经动手训练一个写小说的 AI,然后,一次训练(50 轮)需要大约一天一夜还多,记得如果第一天早上开始训练,需要到第二天下午才可能完成,这还是模型比较简单,数据只有几万条的小模型呀。)
 
修改了模型,需要几个星期才能知道对错,确定等得起?
 
突然有了 TPU,然后你发现,吃个午饭回来就好了,参数优化一下,继续跑,多么爽!
 
计算速度快,才能迅速反复迭代,研发出更强的 AI 模型。速度就是金钱。
 
GPU 的内核结构不清楚,所以就不比较了。肯定的是,GPU 还是比较快的,至少比 CPU 快得多,所以目前大多数都用 GPU,这玩意随便一个都能价格轻松上万,太贵,而且,功耗高,经常缺货。不适合数据中心大量使用。
 
总的来说,CPU 与 GPU 并不是 AI 专用芯片,为了实现其他功能,内部有大量其他逻辑,而这些逻辑对于目前的 AI 算法来说是完全用不上的,所以,自然造成 CPU 与 GPU 并不能达到最优的性价比。
 
谷歌花钱研发 TPU,而且目前已经出了 TPU3,用得还挺欢,都开始支持谷歌云计算服务了,貌似 6 点几美元每小时吧,不记得单位了,懒得查 .
 
可见,谷歌觉得很有必要自己研发 TPU。
 
就酱。
 
 
看到有答案点我名说不应该用 CPU 做对比,这个锅我不背。
 
做一点解释。
 
目前在图像识别、语音识别、自然语言处理等领域,精度最高的算法就是基于深度学习的,传统的机器学习的计算精度已经被超越,目前应用最广的算法,估计非深度学习莫属,而且,传统机器学习的计算量与 深度学习比起来少很多,所以,我讨论 AI 芯片时就针对计算量特别大的深度学习而言。毕竟,计算量小的算法,说实话,CPU 已经很快了。而且,CPU 适合执行调度复杂的算法,这一点是 GPU 与 AI 芯片都做不到的,所以他们三者只是针对不同的应用场景而已,都有各自的主场。
 
至于为何用了 CPU 做对比?
 
而没有具体说 GPU。是因为,我说了,我目前没有系统查看过 GPU 的论文,不了解 GPU 的情况,故不做分析。因为积累的缘故,比较熟悉超标量 CPU,所以就用熟悉的 CPU 做详细比较。而且,小型的网络,完全可以用 CPU 去训练,没啥大问题,最多慢一点。只要不是太大的网络模型。
 
那些 AI 算法公司,比如旷世、商汤等,他们的模型很大,自然也不是一块 GPU 就能搞定的。GPU 的算力也是很有限的。
 
至于说 CPU 是串行,GPU 是并行。
 
没错,但是不全面。只说说 CPU 串行。这位网友估计对 CPU 没有非常深入的理解。我的回答中举的 CPU 是 IBM 的 POWER8,百度一下就知道,这是超标量的服务器用 CPU,目前来看,性能已经是非常顶级的了,主频 4GHZ。不知是否注意到我说了这是 SIMD?这个 SIMD,就代表他可以同时执行多条同样的指令,这就是并行,而不是串行。单个数据是 128bit 的,如果是 16bit 的精度,那么一周期理论上最多可以计算八组数据的乘法或加法,或者乘加。这还不叫并行?只是并行的程度没有 GPU 那么厉害而已,但是,这也是并行。
 
不知道为啥就不能用 CPU 来比较算力?
 
有评论很推崇 GPU。说用 CPU 来做比较,不合适。
 
拜托,GPU 本来是从 CPU 中分离出来专门处理图像计算的,也就是说,GPU 是专门处理图像计算的。包括各种特效的显示。这也是 GPU 的天生的缺陷,GPU 更加针对图像的渲染等计算算法。但是,这些算法,与深度学习的算法还是有比较大的区别,而我的回答里提到的 AI 芯片,比如 TPU,这个是专门针对 CNN 等典型深度学习算法而开发的。另外,寒武纪的 NPU,也是专门针对神经网络的,与 TPU 类似。
 
谷歌的 TPU,寒武纪的 DianNao,这些 AI 芯片刚出道的时候,就是用 CPU/GPU 来对比的。
 
无图无真相,是吧?
 
看看,谷歌 TPU 论文的摘要直接对比了 TPU1 与 CPU/GPU 的性能比较结果,见红色框:
 
 
看不清?
 
没事,放大。
 
 
这就是摘要中介绍的 TPU1 与 CPU/GPU 的性能对比。
 
再来看看寒武纪 DianNao 的 paper,摘要中直接就是 DianNao 与 CPU 的性能的比较,见红色框:
 
 
回顾一下历史。
 
上个世纪出现神经网络的时候,那一定是用 CPU 计算的。
 
比特币刚出来,那也是用 CPU 在挖。目前已经进化成 ASIC 矿机了。比特大陆了解一下。
 
从 2006 年开始开启的深度学习热潮,CPU 与 GPU 都能计算,发现 GPU 速度更快,但是贵啊,更多用的是 CPU,而且,那时候 GPU 的 CUDA 可还不怎么样,后来,随着 NN 模型越来越大,GPU 的优势越来越明显,CUDA 也越来越 6,目前就成了 GPU 的专场。
 
寒武纪 2014 年的 DianNao(NPU)比 CPU 快,而且更加节能。ASIC 的优势很明显啊。这也是为啥要开发 ASIC 的理由。
 
至于说很多公司的方案是可编程的,也就是大多数与 FPGA 配合。你说的是商汤、深鉴么?的确,他们发表的论文,就是基于 FPGA 的。
 
这些创业公司,他们更多研究的是算法,至于芯片,还不是重点,另外,他们暂时还没有那个精力与实力。FPGA 非常灵活,成本不高,可以很快实现架构设计原型,所以他们自然会选择基于 FPGA 的方案。不过,最近他们都大力融资,官网也在招聘芯片设计岗位,所以,应该也在涉足 ASIC 研发了。
 
如果以 FPGA 为代表的可编程方案真的有巨大的商业价值,那他们何必砸钱去做 ASIC?