前一段时间我看到有文章说现在很多AI计算改用GPU而不是CPU。为什么这么做呢?GPU一般不只是用来做显卡的么?


问题本身提问的角度有些偏。计算力和数据吞吐量是平台的两个主要指标,云计算是分散式计算,可以由大量CPU构成计算平台,而强项是数据量多,但数据相关不大。GPU多半是数据不大、但计算量超大的情况下最好的选择。

可是,目前AI计算,应该说是深度学习,其要求计算能力和数据量都很大,这样云计算不一定合适,特别是数据相关性也大。比如谷歌早期的深度学习平台DistBelief,其速度不如两块GPU卡。

当然将GPU放入云计算,这是最早Amazon先做的,很遗憾谷歌开始不赞成,觉得云计算不需要GPU。直到深度学习非常普及之后,Tensorflow出现,谷歌搞出来TPU,还是不想用GPU。

深度学习最适合的不是CPU也不是GPU,而是定制的晶元。人工智慧呢,AI晶元也不少提,大多数是对深度学习模型的训练和推理进行加速而言。如果是以前的演算法,比如数据量大而计算相对轻的,还有数据相关性低的,云计算的平台就能够升任,多核的伺服器也不会差多少,不需要GPU都可以。

一点拙见,仅供参考。


CPU(中央处理器)和GPU(图像处理器)都是为了完成计算任务而设计的。

两者的区别在于存在于片内的缓存体系和数字逻辑运算单元的结构差异:

CPU虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬体。

GPU的核数远超CPU,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(GPU初始时在浮点计算上一直弱于CPU)。

从结果上导致CPU擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,而GPU适合对大量数据进行并行的简单计算。

看看这个视频,NVIDIA真是好一波嘲讽。。。

GPU对CPU的嘲讽深度学习 花书 AI圣经京东¥ 119.00去购买?


我们拿CPU和GPU进行比较

? Nvidia曾经有一个非常直观的科普视频(原视频地址:https://www.youtube.com/watch?reload=9v=-P28LKWTzrIfeature=emb_titleab_channel=NVIDIA),这里搬运了过来。

Mythbusters Demo GPU versus CPURedflashing的视频 · 472 播放

? 正如某些科普文章提到过,GPU之所以快的原因是因为高效的并行计算,对矩阵乘法和卷积具有极大的计算优势。但鲜有对其进行解释,其真正的原因是在于内存带宽,但不一定是并行计算。

? 首先,CPU是延迟优化的,而GPU是带宽优化的。通常我们会打这样的比方。把CPU比作一辆法拉利,而GPU则为货运卡车。两者的任务是从任意位置A取货,并将这些货物运输到另一个任意位置B。CPU(法拉利)可以在RAM中快速获取一些内存数据(货物),而GPU(货运卡车)执行速度较慢(延迟更高)。然而CPU(法拉利)需要来回多次运输完成工作([公式])然而GPU(货运卡车)则可以一次获取更多内存数据进行运输[公式]

? 换句话说,CPU更倾向于快速处理少量数据(例如算术运算:[公式]),而GPU更擅长处理大量数据(例如矩阵运算:[公式]),最好的CPU内存带宽大约50GB/s?,而常见的GPU(RTX2060)内存带宽为336GB/s(RTX3090的GDDR6X显存更是高达912GB/s-1006GB/s)。因此,计算操作需要的内存空间越大,GPU优势就越显著。但是,在GPU的情况下,最大的问题在于延迟对性能的影响。结合CPU的低延迟和GPU的高带宽可以有效隐藏延迟充分发挥互补优势。但对于深度学习的典型任务场景,数据一般占用大块连续的内存空间,GPU可以提供最佳的内存带宽,并且线程并行带来的延迟几乎不会造成影响。

? 除此之外,GPU还存在其他优势。除了第一步数据从主存(RAM)上提取到L1缓存和寄存器的性能优势。第二步虽然对性能不太重要,但依旧会增加GPU的领先优势。通常来说与执行单元(指的是CPU的核心或者GPU的流处理器)的距离越近,则访问速度越快,其中寄存器和L1缓存与CPU距离最近。GPU的优势在于:GPU为每个处理单元(流处理器或者SM)均配备了一些寄存器,而GPU成百上千个处理单元就使得寄存器总的数量非常多(为CPU的30倍,高达14MB)且速度达到80TB/s。相比之下,CPU的寄存器大小通常为64-128KB,运行速度为10-20TB/s。当然以上的比较在数值上会有欠缺,并且CPU寄存器和GPU寄存器并不相同。两者的大小和速度的差异是主要关键点。

? 最后一点GPU的优势在于:大量且快速的寄存器和L1缓存的易于编程性,使得GPU非常适合用于深度学习。这一点就不展开细说了,具体可以Nvidia官方参考资料

参考文档

  • Which GPU(s) to Get for Deep Learning: My Experience and Advice for Using GPUs in Deep Learning
  • Why are GPUs well-suited to deep learning?
  • What is a GPU and do you need one in Deep Learning?


GPU采用的是并行计算处理技术,能够极大缓解计算层面的瓶颈,让深度学习成为实用的演算法,NVIDIA在做CUDA架构的时候就预测到超级计算机极大的潜力,CUDA为GPU在深度学习领域铺路,GPU大规模并行计算架构恰好符合深度学习的需要,而在GPU的强大计算能力的支持下,深度学习的演算法得以突破,可以在短时间内高效能的得到数据结果。


GPU适用于数据并行的任务, CPU适用于逻辑型串列任务。 而当前所谓的人工智慧,基于神经网路的,恰恰适合数据并行。 借用知友举过的类似例子: 有一百万道小学数学题和4道微积分待解决, 现在GPU就如同有一万个小学生同时做题,CPU如同有4个大学生同时做题,小学生虽然不会微积分,但一百万道题还是so easy的,给大学生做这任务量就懵逼了。


推荐阅读:
相关文章