说这个话题,我们需要对CPU和GPU有初步的了解
首先什么是CPU?
CPU(Central Processing Unit)又叫中央处理器,是计算机的核心组件,其功能类似于人的大脑,在计算机系统中起着控制和运算的关键作用 。
主要是由:运算器(Arithmetic - Logic Unit,ALU) /控制器(Control Unit,CU) /寄存器(Registers) /高速缓冲存储器(Cache Memory) /内部总线(Internal Bus)所构成。
运算器:主要负责逻辑运算。
控制器:主要承担着指令的存取与译码。
寄存器 :因为其读取速度要比内存快得多所以用于暂时的存放指令,数据和地址。
高速缓冲存储器 :与Registers 功能类似,但主要用于存储CPU短时间内会频繁访问的指令与数据用于减少CPU访问主存的次数从而提升效率。
内部总线:相当于高速公路,用于数据之间的传输。
CPU比较擅长顺序指令执行,顾名思义就是排队取钱,CPU的频率越高其运行的速度就越快。
同时其在运算的时候需要与内存频繁交互,所以内存的性能对CPU运行的效率会产生一定的影响。
那什么又是GPU?
GPU(Graphics Processing Unit)即图形处理器,最初是为了加速图形渲染而设计的专用处理器,现在在通用计算领域也发挥着巨大的作用。
主要由:流处理器(Streaming Processor,SP) /纹理单元(Texture Unit) /光栅化单元(Rasterizer) /存储系统(包括寄存器、缓存和显存) /控制器(Control Unit) /图形处理器接口(GPU Interface)
流处理器 :这是GPU的核心计算单元主要负责图形的渲染,通用计算时的算数运算。
纹理单元 :主要用于处理纹理映射相关的运算 ,为了增加物体表面的细节。
光栅化单元 :光栅化是将图形的几何信息(如顶点坐标、三角形面片等)转换为屏幕上的像素信息。
存储系统中寄存器的功能与CPU一样,缓存用于存储短时间内会频繁访问的数据,缓存可以分为不同层次,L1/L2/L3等,而显存是专门用于存储图形数据的高速存储器,控制器与CPU功能一样,图形处理器接口则用于与计算机的其他部件进行通讯。
因为其拥有者大量的计算单元并且这些计算单元还可以并行处理计算任务所以相对于CPU只能排一个队,GPU可以分成几个队排,并且每个队伍前都有一个取款机,这一特性导致其在进行AI训练的时候的效率是CPU的很多倍,并且GPU的内存带宽要比CPU大很多,对于浮点运算又有专门的优化,使其在AI训练时所需要处理大量浮点运算时的效率也是CPU的无法比拟的。
早在2006 年,Kumar Chellapilla 使用 NVIDIA 的 GeForce 7800 显卡第一次实现了卷积神经网络(CNN)的训练,发现比使用 CPU 要快 4 倍。
再到2008 年的时候,斯坦福大学教授吴恩达的小组通过论文展示了 GPU 在深度学习工作中的计算能力优势,他们使用两张 GTX 280 GPU 训练具有 1 亿个参数的神经网络时,速度比使用 CPU 提高了 70 倍,训练时间从数周缩短到一天左右。
2012年时,加拿大多伦多大学的杰弗里・辛顿(Geoffrey Hinton)与他的学生萨茨克维尔(Ilya Sutskever)等组成的团队,在 ImageNet 图像识别大赛中使用两块 GTX 580 GPU 训练的 AlexNet 神经网络,取得了远超竞争对手的精度,从而引发了轰动,这也使得 GPU 在 AI 训练中的巨大潜力被人们所认知,极大地推动了 GPU 在 AI 领域的应用。
随后英伟达推出的 CUDA 并行计算平台及相关技术,为开发者提供了便捷的 GPU 编程接口和开发工具,大大降低了 GPU 编程的难度,这也使得更多的研究人员能够利用 GPU 的强大计算能力进行 AI 研究和开发,同时也推动了 GPU 在 AI 训练中的广泛应用。
不难看出GPU的诞生起初并不是用于AI训练的,仅仅是为了图形的渲染,但是其本身所具备的特性却出奇的与AI模型训练契合,也算是人们在“偶然”间发现的,后续也因为英伟达的快速跟进,而使得GPU在当今取代了CPU成为了AI模型训练的主力军。