网站首页 > 文章精选 正文
一、人工智能发展历程
当今,人工智能(Artificial Intelligence)已经深刻改变了人类生活的方方面面,并且在未来仍然会继续发挥越来越重要的影响力。
“人工智能”这一概念在1956年于美国达特茅斯学院举办的一次学术集会上被首次提出,自此开启了人工智能研究的新纪元。自此之后,人工智能在曲折中不断发展前进。
1986年,神经网络之父Geoffrey Hinton提出了适用于多层感知机(Multilayer Perceptron,MLP)的反向传播(Back propagation, BP)算法,并且使用Sigmoid函数实现非线性映射,有效解决了非线性分类和学习问题。
1989年,YannLeCun设计了第一个卷积神经网络,并将其成功应用于手写邮政编码识别任务中。
20世纪90年代,Cortes等人提出支持向量机(Support Vector Machine, SVM)模型,随后SVM迅速发展成为机器学习的代表性技术之一,在文本分类、手写数字识别、人脸检测和生物信息处理等方面取得了巨大成功。
进入21世纪,随着互联网技术的发展与计算机硬件系统性能的提高,人工智能迎来了新的重大发展机遇。特别是2011年以来,以深度神经网络为代表的深度学习技术高速发展,人类在通向人工智能的道路上接连实现了许多重大突破。
二、CPU和GPU在人工智能中的应用
GPU最初是用于图像处理的,但由于高性能计算需求的出现,GPU因其高度 并行的硬件结构而得以显著提升其并行计算和浮点计算能力,且性能远超于CPU。
由于训练深度神经网络的计算强度非常大,因而在CPU上训练神经网络模型的时间往往非常长。
如图所示,CPU主要由控制器、算数逻辑单元(Arithmetic and Logic Unit,ALU)和储存单元三个主要部分组成,CPU的计算能力主要取决于计算核心ALU的数量,而ALU又大又重,使得CPU常用来处理具有复杂控制逻辑的串行程序以提高性能。
相比之下,GPU由许多SP(Streaming Processor,流处理器)和存储系统组成,SP又被称为CUDA核心,类似CPU中的ALU,若干个SP被组织成一个SM(Streaming Multiprocessors,流多处理器)。
GPU中的SP数量众多且体积较小,这赋予了GPU强大的并行计算和浮点运算能力,常用来优化那些控制逻辑简单而数据并行性高的任务,且侧重于提高并行程序的吞吐量。
图形处理器(Graphics Processing Unit, GPU)具有强大的单机并行处理能力,特别适合计算密集型任务,已经广泛应用于深度学习训练。
然而单个GPU的算力和存储仍然是有限的,特别是对于现在的很多复杂深度学习训练任务来说,训练的数据集十分庞大,使用单个GPU训练深度神经网络(Deep Neural Network ,DNN)模型需要漫长的训练时间。
例如,使用一块Nvidia M40 GPU在ImageNet-1K上训练ResNet-50 90个epoch需要14天时间。此外,近年来深度神经网络的模型参数规模急剧增加,出现了很多参数量惊人的“巨模型”。
由于在训练这些大规模DNN模型时,无法将全部模型参数和激活值放入单个GPU中,因此无法在单GPU上训练这些超大规模DNN模型。
三、什么是CUDA?
CUDA(Compute Unified Device Architecture)全称统一计算架构,作为NIVIDA公司官方提出的GPU编程模型,它提供了相关接口让开发者可以使用GPU完成通用计算的加速设计,能够更加简单便捷地构建基于GPU的应用程序,充分发挥GPU的高效计算能力和并行能力。
CUDA同时支持C/C++,Python等多种编程语言,使得并行算法具有更高的可行性。由于GPU不是可以独立运行的计算平台,因此在使用CUDA编程时需要与CPU协同实现,形成一种CPU+GPU的异构计算架构,其中CPU被称为主机端(Host),GPU被称为设备端(Device)。
GPU主要负责计算功能,通过并行架构与强大的运算能力对CPU指派的计算任务进行加速。通过 CPU/GPU 异构架构和CUDA C语言,可以充分利用GPU资源来加速一些算法。
典型的GPU体系结构如下图所示,GPU和CPU的主存都是采用DRAM实现,存储结构也十分类似。但是CUDA将GPU内存更好地呈现给程序员,提高了GPU编程的灵活性。
CUDA程序实现并行优化程序设计的具体流程主要分为三个步骤:
1、将数据存入主机端内存并进行初始化,申请设备端内存空间并将主机端的数据装载到设备端内存中;
2、调用核函数在设备端执行并行算法,核函数是指在GPU中运行的程序,也被称为kernel函数。
3、将算法的最终运行结果从设备端内存卸载到主机端,最后释放设备端和主机端的所有内存。
GPU的核心组件是流式多处理器(Streaming Multiprocessor,简称SM),也被称为GPU大核,一个GPU设备含有多个SM硬件,SM的组件包括CUDA核心,共享内存和寄存器等。
其中,CUDA核心(CUDA core)是GPU最基本的处理单元,具体的指令和任务都是在这个核心上处理的,本质上GPU在执行并行程序的时候,是在使用多个SM同时处理不同的线程。而共享内存和寄存器是SM内部最重要的资源,在很大程度上GPU的并行能力就取决于SM中的资源分配能力。
在CUDA架构中,网格(Grid),块(Block)和线程(Thread)是三个十分重要的软件概念,其中线程负责执行具体指令的运行任务,线程块由多个线程组成,网格由多个线程块组成,线程和线程块的数量都可以通过程序的具体实现设定。
GPU在执行核函数时会以一个网格作为执行整体,将其划分成多个线程块,再将线程块分配给SM执行计算任务。
GPU内存结构如下图所示,主要包括位于SP内部的寄存器(Register)、位于SM上的共享内存(Shared memory)和GPU板载的全局内存(Global memory)。
在NVIDIA提出的CUDA统一编程模型中采用Grid的方式管理GPU上的全部线程,每个Grid中又包含多个线程块(Block),每个Block中又可以划分成若干个线程组(Warp)。Warp是GPU线程管理的最小单位,Warp内的线程采用单指令多线程(Single Instruction Multiple Threads, SIMT)的执行模式。
CUDA线程管理的基本结构如下图所示:
GPU独特的体系架构和强大的并行编程模型,使得GPU在并行计算和内存访问带宽方面具有独特的性能优势。
相对于传统的CPU体系结构,GPU具有一些独特的优势:
1)并行度高、计算能力强。相对于CPU体系结构,GPU内部集成了更多的并行计算单元,使得GPU在并行计算能力方面的表现更加出色。同时,其理论计算峰值也远高于同时期CPU,当前NVIDIA A100 GPU在执行Bert推理任务,其推理速度可达2个Intel至强金牌6240CPU的249倍6。
2)访存带宽高。为了匹配GPU超强的并行能力,GPU内部设置了大量访存控制器和性能更强的内部互联网络,导致GPU具有更高的内存访问带宽。当前NVIDIA A100 GPU的内存带宽可达1.94TB/s,而同期Intel至强金牌6248 CPU仅为137GB/s。图处理由于其计算访存比高,算法执行过程中计算次数多、单次计算量小的特点天然地与GPU的硬件特征相匹配。
四、总结
随着深度学习(Deep Learning,DL)的持续进步,各类深度神经网络(Deep Neural Network ,DNN)模型层出不穷。DNN不仅在精确度上大幅超越传统模型,其良好的泛化性也为众多领域带来了新的突破。
因此,人工智能(Artificial Intelligence, AI)技术得以迅速应用于各个行业。如今,无论是在物联网(Intemet of Things, IoT)的边缘设备,还是数据中心的高性能服务器,DNN的身影随处可见,人工智能的发展离不开计算能力的提升,因此高性能GPU的需求也将不断提升!
参考文献:
(1)杨翔 深度学习模型的并行推理加速技术研究[D].
(2)郑志高 GPU上图处理算法优化关键技术研究[D].
(3)关磊 机器学习模型并行训练关键技术研究[D].
(4)薛圣珑 机载预警雷达杂波快速生成及GPU实现研究[D].
(5)韩吉昌 基于CUDA的国密算法SM3和SM4的设计与实现[D].
猜你喜欢
- 2025-03-24 设计模式-模板方法模式详解,使用场景
- 2025-03-24 一文读懂粒子群算法(粒子群算法步骤)
- 2025-03-24 数据结构与算法—欧几里得算法(欧几里得算法c++语言)
- 2025-03-24 FPGA在图像处理中的算法结构(fpga在图像处理中的算法结构有哪些)
- 2025-03-24 唐太宗的“凌烟阁算法”:从二十四功臣到现代高管团队的生死局
- 2025-03-24 除了矢量控制算法,还有哪些控制算法可用于永磁同步电机?
- 2025-03-24 数据结构|算法(数据结构算法的时间复杂度怎么计算)
- 2025-03-24 收放卷模糊控制算法的实现(收放卷模糊控制算法的实现过程)
- 2025-03-24 算法会打败写手,DeepSeek给出生产高展现量文章的流水线
- 2025-03-24 优秀的过程控制工程师的必备能力:懂控制算法,也要懂工艺
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)