从CPU、GPU到TPU

我们知道,任何计算机,包括智能手机、游戏机等计算设备,都有一个计算核心芯片,叫做CPU(中央处理器),负责所有的计算,控制计算机的所有工作。

从60年代中期开始,CPU的性能几乎以每18个月翻一番的速度在提升。自1965以来,几乎翻了34倍,也就是说运算速度提高了16亿倍。如果把这个进步分解一下,可以分为两个维度,一个是主频的提升,一个是集成电路芯片密度的提升(称为集成)。

主频提高后,原来是每秒654.38+百万周,现在可以算作30亿周,提高了几万倍。密度增加后,原来几个周期完成一次计算任务,现在可以流水作业,分工协作,一个周期可以完成几次计算。两者的加速度叠加,使得今天计算机的速度变得非常快。

但是CPU的主频不可能无限提高,因为光速是绝对的瓶颈。今天计算机CPU中电子运动的速度已经接近光速给定的极限,几乎没有进一步提高的可能。其实这条路从10年前就被堵死了。

那么我们该怎么办呢?英特尔的做法是进一步提高计算机CPU的集成度。最早的时候,一个集成电路只有几千个晶体管,今天有多达60亿个晶体管,这样计算就可以并行进行,这就是为什么我们的电脑和手机CPU有所谓的四核八核理论。

那么,为什么不做成16,32甚至100呢?因为以现在的技术,多核处理器的体积是极其庞大的,单靠散热问题是解决不了的。面对这个问题怎么办?英特尔总的态度是解决不了。你可以从我这里买更多的处理器,建更多的服务器,把计算中心做大。且不说这种方法无效,很多场合也没有条件这么做。比如在无人驾驶汽车里,你不能带着柜子上路。

我们知道,有进取心的人总是尽力寻找更好的解决方案。英伟达的创始人黄仁勋就是这样一个人。黄仁勋和他在英伟达的同事认为CPU不够快,因为它被设计成适应所有的计算,并且其中的许多晶体管被用来构建控制电路。

另外,因为计算太复杂,处理器本身设计太复杂。在计算机中,有一种比较简单的计算,就是控制显示器的图形计算,所以NVIDIA专门为这种计算设计了一个处理器,叫做GPU,也就是图形处理器。

当然,在NVIDIA之前,做图形工作站的Sun公司和SGI公司也设计过类似的产品,但并不通用。GPU比CPU有两个优势:

第一,控制电路简单,所以更多的晶体管用于计算,而不是控制。这样,原来的654.38+0亿个晶体管可以造四个核,还有希望造八个、十六个甚至更多。

第二,把单个孩子的计算变成批量计算。现实生活中,大部分计算每次都是在两个数之间进行的,比如A+B = C,是一个运算指令(“+”)带两个数(“A”和“B”),下一个运算指令(“-”)带另外两个数(“X”和“Y”)。因此,计算机处理器实际上是按照一个指令通道(流)对应一个数据通道(称为SISD)来设计的。打个不恰当的比方,一般的计算就像你蹲在地上一颗一颗的捡豆子。

而图形计算则是根据SIMD运算一口气计算出整条线(计算机科学中称为向量),如A1+B1=C1,A2+B2=C2...,最后是A1000+B1000 = C6550。

这就相当于用吸尘器吸地上的豆子。走过一条线,就吸了很多,效率就高多了。对此,英伟达提出了所谓的“统一计算架构”(CUDA)概念,即许多核心做同一件事,并以此为基础设计图形处理器GPU。

有了GPU,很多重复且一致的计算都可以并行。GPU最初是为图形计算而设计的,但后来NVIDIA发现机器学习的算法也可以这样实现,于是在2016年,NVIDIA根据机器学习的特点设计了一款用于机器学习的GPU,其最新的P40处理器拥有多达3000个所谓的“统一计算架构”核心。

虽然每个能力都不如英特尔的四核处理器中的一个核心,但是P40等GPU中的核心很多,所以人工智能计算非常快。今天特斯拉搞辅助驾驶,一个这样的处理器就能解决所有问题。在去年AlphaGo对阵李世石的比赛中,英伟达的176 GPU被用来承担主要的运算功能。

但毕竟机器学习中的向量计算还是不同于一般的向量计算。能不能把计算的核函数做的更具体一点,只做一个非常具体的机器学习算法(即Google的人工神经网络算法)相关的向量计算?

因此,Google提出了张量计算的概念。张量,原本是一个数学概念,表示各种向量或值之间的关系。比如你的两张照片是两个不同的向量,它们之间的一些相似之处是一个张量。人工神经网络的算法可以看作是张量的计算。至于为什么,不用仔细研究,记住这个结论就行了。

接下来,在英伟达和其他公司GPU的基础上,谷歌进一步专注于计算,设计了一款只用于特定张量计算的处理器,名为TPU,其中t代表张量。谷歌声称,对于AlphaGo这样的任务,一个TPU的效率高达65,438+05-30英伟达GPU,这也是为什么这次谷歌说新版AlphaGo在硬件上有所瘦身。

去年战胜李世石的AlphaGo的功耗是人脑的300倍。今天AlphaGo用的机器少了很多,至少少了一个数量级,也就是说功耗从人脑的300倍降到了不到30倍。这个进步还是很惊人的。

英伟达当然不服气,说谷歌拿苹果和橘子比,我的P40比你的TPU快多了。其实TPU和GPU谁更好,完全看做什么。

从CPU到GPU,再到TPU,效率提升的根本原因就在于两个字——专注。相比之下,我们的手机和电脑的CPU就很“不专注”了。

在社会生活中,情况其实和电脑处理器很像。工业革命开始后,英国工厂主把分工做得很细,所以效率大增。亚当·斯密在《国富论》中说,即使在制造缝衣针这件事上,当分工非常细致的时候,一个工人一天也能生产几千根针。如果一个工人做所有的工序,他可能一天连10针都做不完。所以英国工业革命后,欧洲的加工业被碾压。这实际上就像TPU和CPU的关系。

但是使用TPU有个前提,市场上至少要有几百万的芯片,否则不值得做,因为做一个样品要几百万,设计要几千万。如果市场需求只是几万块芯片,还不如用很多CPU来工作。这就像做缝纫针一样。光是欧洲一年恐怕就要几亿针才配得上社会分工。如果只用三五十块,还不如让几个工人慢慢磨!所以分工和集中的前提是市场规模足够大。

最后说说人的技能,什么时候需要专精,什么时候需要广博。其实没有一定的规律,但是一个好的标准就是市场是否足够大到需要非常专业化和精细化。