GPU:大数据算力时代,英伟达的王者逆袭之路

在大数据时代算力为王,英伟达提前站在了风口上,逆风变顺风局逆袭成为王者(股价20倍涨幅)。


--------------------分割线---------------

1. 什么是GPU,和CPU的区别:

2. GPU应用场景以及未来形态:

3. 对我们有什么用;

1. GPU的前世今生:

GPU即图形处理器(代表公司NVIDIA),主要是处理和图像相关的数据。

CPU和GPU的区别,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。


GPU:大数据算力时代,英伟达的王者逆袭之路


GPU的诞生是依赖于CPU的。

任何一台计算机,也包括智能手机,游戏机等有计算能力的设备,都有一个计算的核心芯片就是CPU(Central Processing Unit),它负责所有的计算,并且控制计算机的全部工作。CPU代表公司Intel。

CPU的性能从上个世纪60年代中期开始,几乎按照每18个月翻一番的速度在进步(摩尔定律),从1965年至今,差不多翻了34次了,也就是说计算速度提高了160亿倍。如果再把这个进步分解一下,又可以分成两个维度,一个是主频的提高,另一个是集成电路芯片密度(称为集成度)的提高。主频提高后,本来一秒钟算10万个周期,现在可以算30亿个,增加了几万倍。密度提高后,本来几个周期完成一次计算任务,现在可以流水作业、分工合作,一个周期完成好几次计算。两者的加速是叠加的,使得今天计算机的速度变得飞快。但是,CPU的主频不可能无限制提高,因为光速是一个绝对的瓶颈,今天计算机CPU内部,电子运动的速度已经接近光速所给的极限了,几乎没有了再提高的可能性,事实上从10年前开始,这条路就走不通了。

英特尔公司的办法是,将计算机CPU的集成度进一步提高,最早一个集成电路中只有几千个晶体管,今天最多的有60亿个,这样计算可以并行开展,这也是为什么我们计算机和手机CPU有什么四核、八核之说。那么接下来,为什么不能做成16核、32核甚至100核呢?因为以今天的工艺,做到那么多核处理器的体积要大得不得了,仅仅散热问题就没法解决。就像在工作中,人多不一定力量大,人力达到一定数量沟通协调的就是关键瓶颈,这时效率不升反降。

面对这个问题怎么办呢?英特尔的态度是没法解决,多买一些处理器,多建造一些服务器进行堆叠,再把计算中心修得大一点就好了(简单粗暴)。在很多场合也没有条件这么做,比如在无人驾驶汽车中,放不下这么大的服务器。

英伟达的创始人黄仁勋在想CPU的计算速度之所以不够快,是因为它被设计成能够适应所有的计算了,里面很多晶体管都用来搭建控制电路了。另外,因为计算太复杂,因此处理器本身设计得太复杂。而在计算机里面,有一种计算相对单一,就是控制显示器的图形计算。

对此,英伟达提出一种所谓的“统一计算架构”(CUDA)的概念,就是很多很多核都做同一件事情,并且在此基础上设计出图形处理器GPU。有了GPU,即图形处理器,很多重复一致的计算就可以并行了。


GPU:大数据算力时代,英伟达的王者逆袭之路


GPU比CPU相比好处有两个:

第一,控制电路简单了,因此更多的晶体管用于了计算,而不是控制,这样本来10亿个晶体管可以搭建四个内核,还有希望搭建八个、十六个甚至更多。

第二,将单个儿单个儿的计算,变成一批一批的计算。在现实生活中,大部分的计算每次都是在两个数之间进行的,比如A+B=C,它是一个运算指令(“+”)带上两个数字(“A”和“B”),下一次做X-Y,是另一个运算指令(“-”)带上另外两个数字(“X”和“Y”)。因此计算机处理器实际上是按照一个指令通道(流)对应一个数据通道设计的(被称为SISD)。

举个例子,一般的计算就如同你蹲在地上一个个地捡豆子。而图形计算是整个一条线(在计算机科学里被称为向量)按照同一种操作一口气算完A1+B1=C1,A2+B2=C2...最后A1000+B1000=C1000,对于这些计算来讲,指令都是一样的,只是使用不同的数据而已,因此它可以设计出非常多的功能简单的计算核心,然后对一条指令开发很多数据通道(即所谓的SIMD)即可。

这就相当于用一个吸尘器在地上吸豆子,你走过一条线,就吸起一大堆,效率就高多了。

GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像博士生积分微分都会算,缺点就是工资高(一个博士生工资顶二十个小学生),你要是工厂老板你雇哪个?

GPU的设计逻辑是用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做(体力活)。但还有一些任务涉及到“流”的问题。比如去相亲,双方看着顺眼才能继续发展。总不能这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的(用脑子)。芯片业界对各家的评价如下:

总结一下,GPU能干的活CPU也能干,只不过此时用CPU就像大炮打蚊子,大材小用。正所谓术业有专攻,杀鸡焉用牛刀。


GPU:大数据算力时代,英伟达的王者逆袭之路


2. 应用范围以及未来形态:

现在当下一下流行的应用场景:

数字矿机:简单的说就是比特币矿机,国内的数字货币龙头企业比特大陆招了很多人专门搞GPU芯片,就是为了最大限度提升芯片挖矿的效率。目前比特大陆手里的矿机已经占据了全球一半多的算力(可惜在港股没上市成功)。

密码破解,例如需要穷举法进行暴力破解的场景,牵扯到大量的并行计算,这时用GPU就能体现算力的优势。

超级计算:国内建设了几个超级计算机中心(例如位于广州的银河系列),应对一些需要快速计算的场景,例如航天参数的校正,需要在短时间内算出结果,因为火箭的飞行速度太快了,慢1s就能造成很大的距离偏差,因此这种计算速度都是要求在ms级别的。

图像识别:例如在公安行业,通过前端的摄像头拍摄到犯罪嫌疑人的照片,然后上传到图片数据库里面进行查找匹配图片,这时需要快速的识别计算结果。有利于快速确定其位置,采取抓捕措施。视频监控厂商在这个领域深耕多年,比如海康和大华。


GPU:大数据算力时代,英伟达的王者逆袭之路


GPU未来的形态是什么样的?

GPU最早是针对图形计算设计的,但是后来英伟达发现机器学习的算法也可以用这种方式实现,于是到了2016年,英伟达又针对机器学习的特点,设计了针对机器学习的GPU

,它最新的P40处理器内部有多达3000个所谓“统一计算架构”的内核。虽然每一个能力都比不上英特尔四核处理器中的一个内核,但是P40等GPU的内核数量非常多,因此做人工智能计算就非常快。例如特斯拉搞的辅助驾驶,一片这样的处理器就能解决所有的问题。

在AlphaGo对阵李世石的比赛中,就是用了176个英伟达的GPU,承担了主要的计算功能。但是毕竟机器学习中的向量计算和通用的向量计算还是有所不同,能否让计算的内核功能再专一一点,只做和一种非常特定的机器学习算法(即Google的人工神经网络算法)相关的向量计算呢?

在围棋比赛中战胜柯洁的Google AlphaGo的技术,它的核心硬件TPU(Tensor Processing Unit)。AlphaGo棋下得好的一个重要原因是采用了Google自己开发的一种新的计算机处理器TPU,简单地讲这是一种只适合人工智能计算的专用处理器。

于是,Google提出了一种张量(Tensor)计算的概念。所谓张量,它原本是一个数学概念,表示各种向量或者数值之间的关系。比如你的两张照片是两个不同的向量,它们之间的一些相似性就是一个张量。

人工神经网络的算法可以看成是张量的计算。

Google就在英伟达等公司GPU的基础上,进一步让计算变得专注,设计了一种仅仅针对特定张量计算的处理器,叫做TPU,其中T就代表张量(Tensor)。Google宣称,一个TPU对AlphaGo这样的任务,效率抵得上15-30个英伟达的GPU。其实TPU和GPU谁更好,完全要看做什么事情了。

3. 对个人而言有什么用?

可能有用的地方在于以后买电脑的时候,可以根据自己的需求(玩游戏还是学习编程)选择CPU和GPU各有侧重的型号,不要再当小白被商家忽悠

从技术的角度来看,从CPU到GPU,再到TPU,效率提升的根本原因在于两个字——专注,相比之下,手机和电脑的CPU是非常“不专注”的。

在实际生活中,情况和计算机处理器其实很相似。在工业革命时代开始后,英国工厂主把分工做得特别细,于是效率大增。举个例子,即使是制作缝衣服针这件事,当分工很细致后,一个工人一天能生产上千根,如果一个工人做所有的工序,一天恐怕连10根都做不了。因此,英国工业革命后,就把整个欧洲的加工业碾压了。这其实就好比TPU和CPU的关系。

但是,TPU的使用有一个前提,就是这种芯片的市场至少要有上百万片,否则就不值得做,因为它做一个样片的成本就得上百万美元,而设计成本则是上千万。如果市场需求量只有几万片,还不如用很多CPU来工作呢。这就如同制作缝衣服针,一年仅欧洲恐怕要用到上亿根,才值得做社会分工。如果只用三五十根,还不如让几个工人慢慢磨呢!因此,分工和专注的前提都是市场规模足够大。

对于个人而言,工作的技能什么时候需要专而精,什么时候需要广博,其实没有一定之规,但是一个很好的判断标准就是市场是否大到需要非常专而精。以手术为例,很多手术非常常见,比如今天激光矫正视力的手术,它就值得一个医生一辈子把这一件事情做好,一个有1000例手术经验的医生通常要比一个只做了10例的好很多,由于市场足够大,他做好这件事可以吃一辈子。但是很多手术一辈子也见不到两次,一个医院为此专门准备一个医生,效率就太低了。一项技能,如果应用的场景特别多,就值得做精做深,因为这样足够吃一辈子。相反,如果使用的场合比较少,就不值得花时间,不如把自己培养得广博些。

这也是目前大公司里面流程存在的原因,每个人只要专注于自己的领域,整体的工作效率就能大大提升。但是在小公司里面流程这条路就走不通了。因为大公司面向的行业空间足以支撑整个流程的运转,但是对个人职业生涯而言利弊就不好说了.


分享到:


相關文章: