首页 > 其他分享 >使用GPU训练神经网络的历史

使用GPU训练神经网络的历史

时间:2023-06-21 20:04:31浏览次数:59  
标签:训练 处理单元 模型 神经网络 深度 GPU CPU

我在一台没有GPU支持的Mac电脑本上本地部署了stable-diffusion-webui,并生成了一张图。这张图大概需要10分钟的时间才能生成,但如果有GPU支持的话,只需要几秒钟就能完成。这让我深刻体会到GPU的算力比CPU强大得多。

GPU算力为啥远高于CPU

更多的处理单元

GPU在同样芯片面积上集成的处理单元数目远高于CPU。如NVIDIA Tesla V100有5120个CUDA核心,而同期高性能CPU核心数一般在10-32个。这使GPU可以高度并行化,一次可以执行成千上万个线程,实现超高的计算粒度和吞吐量。

使用GPU训练神经网络的历史_CUDA


图:NVIDIA Tesla V100

更简单的处理单元

GPU的处理单元更简单,主要针对高度并行的矩阵和向量运算优化。而CPU的处理单元复杂得多,需要支持各种串行指令和流控制,以实现复杂的逻辑运算和代码执行流程。

GPU简单的处理单元可以以更高密度集成在芯片上。

使用GPU训练神经网络的历史_GPU_02


图:GA100核心架构图

内存带宽更高

GPU的内存体系结构专门为大规模矩阵运算和数据访问优化。它提供的内存带宽远高于CPU,这也是GPU高计算能力的重要支撑。大内存带宽可以保证GPU的成千上万个处理单元同时高效读取和写入数据。

使用GPU训练神经网络的历史_CUDA_03

图:Nvidia GTX 780 PCB 布局

专用的编程框架

GPU有专门为其打造的编程框架,如CUDA和OpenCL。

使用GPU训练神经网络的历史_深度学习_04

这些框架可以让程序员直接基于GPU体系结构进行编程,充分利用其高度并行的结构。而CPU的传统编程模型难以高效利用GPU的算力。

使用GPU训练神经网络的历史_处理单元_05

图:CUDA processing flow

GPU和CPU的对比表

GPU和CPU的主要对比如下表:

对比项

GPU

CPU

处理单元

成千上万个简单CUDA核心

几个复杂高性能核心

开发目的

图形学与科学计算

一般运算和控制

架构优化

高度并行,矩阵运算

混合运算与控制流

内存结构

高带宽,低延迟

较低带宽,较高延迟

编程模型

CUDA, OpenCL

C/C++,汇编等

并行粒度

非常细(线程)

较粗(进程)

发展历史

2000年后迅速发展

上世纪80年代已成熟

主要应用

人工智能,科学计算

普适运算与控制

性能指标

FLOPS(每秒浮点运算数)

GHz(时钟频率)

代表厂商

NVIDIA, AMD

Intel, AMD

典型产品

NVIDIA Tesla V100

Intel Xeon

所以,总体来说,GPU vs CPU的算力差异在于:

  1. GPU采用无数简单的处理单元和内存体系结构,以支持超大规模的并行计算。
  2. GPU有面向其体系结构的专用编程模型,可以更好地编写和优化程序。
  3. GPU专注于高度并行的数值密集型计算(如神经网络训练),这些工作负载可以高度利用其优化的硬件资源;而CPU需要处理更加广泛的工作负载,难以专注优化。

机器学习使用GPU

在2010年前后,深度学习的应用还非常有限,大多数研究人员使用CPU来训练模型。由于CPU计算速度较慢,深度学习模型训练时间非常长,限制了深度学习技术的发展。

2012年的ImageNet大规模视觉识别挑战赛(ILSVRC)。当时,由多伦多大学的Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton组成的团队,使用了两个NVIDIA GTX 580 GPU,训练了一个名为AlexNet的6千万个参数和 65 万个神经元的深度卷积神经网络。用于将 ImageNet LSVRC-2010 比赛中的 120 万张高分辨率图像分类到 1000 个不同的类别中。在测试数据上,他们实现了 37.5% 的 top-1 错误率和 17.0% 的 top-5 错误率,这比以前的最先进技术要好得多。

相关的论文也在2012年,由Alex Krizhevsky,Ilya Sutskever 和 Geoffrey E. Hinton发表《ImageNet Classification with Deep Convolutional Neural Networks》。 https://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

此后,随着深度学习技术的不断发展和应用,GPU被越来越广泛地应用于深度学习模型的训练中,并逐渐成为深度学习模型训练的标配。

由于深度学习模型的复杂度和数据量不断增加,GPU的计算能力逐渐无法满足需求,因此出现了专门用于深度学习的加速器,如Google的TPU、Nvidia的Tesla V100等。这些加速器采用了更为高效的计算架构,能够更快速、更高效地训练深度学习模型。

再后面随着深度学习模型的规模不断增大,单个GPU或加速器已经无法满足需求,因此出现了分布式训练。在分布式训练中,多个GPU或加速器同时训练同一个模型,以提高训练速度和效率。同时,也有一些开源的分布式训练框架,如TensorFlow、PyTorch等,使得分布式训练变得更加容易实现和使用。

这也是NVIDIA(英伟达) 随后股价狂涨的原因。

使用GPU训练神经网络的历史_CUDA_06

标签:训练,处理单元,模型,神经网络,深度,GPU,CPU
From: https://blog.51cto.com/u_15588078/6531123

相关文章

  • 循环神经网络 - RNN
    在上一篇文章中,介绍了卷积神经网络(CNN),CNN在图像识别中有着强大、广泛的应用,但有一些场景用CNN却无法得到有效地解决,例如:语音识别,要按顺序处理每一帧的声音信息,有些结果需要根据上下文进行识别;自然语言处理,要依次读取各个单词,识别某段文字的语义;这些场景都有一个特点,就是都与时间序......
  • 卷积神经网络 – CNN
    1981年的诺贝尔医学奖,颁发给了DavidHubel(出生于加拿大的美国神经生物学家)和TorstenWiesel,以及RogerSperry。前两位的主要贡献,是“发现了视觉系统的信息处理”,可视皮层是分级的。图:纪念1981年诺贝尔医学奖的邮票。人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素Pixels),接......
  • 深度学习-强化学习-图神经网络-自然语言处理等AI课程超级大列表-最新版
        本篇文章内容整理自网络,汇集了大量关于深度学习、强化学习、机器学习、计算机视觉、语音识别、强化学习、图神经网络和自然语言处理相关的各种课程。之前分享过一次,经过一年的更新,又补充了很多2019、2020年的最新资源,补充了一些主题,提供给不间断学习,充实自己的朋友,借下面Hi......
  • matlab的基于遗传算法优化bp神经网络多输入多输出预测模型
    matlab的基于遗传算法优化bp神经网络多输入多输出预测模型,有代码和EXCEL数据参考,精度还可以,直接运行即可,换数据OK。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/632809753171.html这个程序是一个基于遗传算法优化的BP神经网络多输入两输出模型。下面我将对程序进行详细分析......
  • 神经网络基础知识与实现
    目录神经网络是人工智能领域中的一个重要概念,它是指一种模拟人脑神经元的计算方法。神经网络通过从大量数据中学习,来预测未来的状态或执行特定的任务。本文将介绍神经网络的基础知识与实现,包括神经网络的基本概念、技术原理、实现步骤以及示例与应用。同时,本文还将探讨神经网络的性......
  • 基于神经网络的大模型在图像识别中的应用
    目录1.引言2.技术原理及概念3.实现步骤与流程4.示例与应用5.优化与改进6.结论与展望随着深度学习技术的不断发展,特别是在计算机视觉领域,基于神经网络的大模型在图像识别中的应用越来越广泛。这些模型能够在处理大量图像数据的同时,准确地识别出各种物体和场景,取得了令人瞩目的......
  • 多卡训练
    1、前言  近期做到的一些工作涉及到多卡训练,不得不感慨深度学习真的是一个烧钱的活,顺便记录一下,主要记录用法,不涉及实现原理。2、单机多卡并行官方DDP文档:GETTINGSTARTEDWITHDISTRIBUTEDDATAPARALLELGithub仓库:Github中文文档GETTINGSTARTEDWITHDISTRIBUTED......
  • 代码随想录算法训练营第十三天| 层序遍历 226.翻转二叉树 (优先掌握递归) 101. 对
    层序遍历注意:1,使用队列的形式,依次入队,同时对队列进行计数2,知道数目消失,才进行下一个队列代码:1vector<vector<int>>levelOrder(TreeNode*root)2{3vector<vector<int>>result;4if(root==NULL)returnresult;5queue<TreeNode*>selected;6......
  • 基于神经网络的经济景气预测模型软件设计
    国内生产总值(GrossDomesticProduct)是国民经济核算的核心指标。它不仅能从总体上度量国民产出和收入规模,也能从整体上度量经济波动和经济周期状态,成为宏观经济中最受关注的经济数据,被认为是衡量国民经济发展、判断宏观经济运行状况的一个重要指标,也是政府制定经济发展战略和经济......
  • TensorFlow09.1 神经网络-其他训练Tricks(Early Stopping和Dropout)
    Tricks▪EarlyStopping▪Dropout▪StochasticGradientDescent1Earlystopping我们走到最大指的时候我们可以提交stop掉,防止它overfitting。1.1How-To▪Validationsettoselectparameters(选择一个参数)▪Monitorvalidationperformance(检测变量的表现)▪......