论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
深度学习500问——Chapter15:异构计算,GPU和框架选型 ...
深度学习500问——Chapter15:异构计算,GPU和框架选型(1) ...
熊熊出没
金牌会员
|
2024-9-27 12:50:48
|
显示全部楼层
|
阅读模式
楼主
主题
836
|
帖子
836
|
积分
2508
文章目录
异构计算,GPU和框架选型指南
15.1 什么是异构计算
15.2 什么是GPU
15.3 GPU架构简介
15.3.1 怎样通俗理解GPU的架构
15.3.2 CUDA的核心是什么
15.3.3 为什么要利用GPU
异构计算,GPU和框架选型指南
深度学习训练和推理的过程中,会涉及到大量的向量(vector),矩阵(matrix)和张量(tensor)操作,通常必要大量的浮点计算,包括高精度(在训练的时候)和低精度(在推理和部署的时候)。
GPU,作为一种通用可编程的加速器,最初计划是用来进行图形处置惩罚和渲染功能,但是从2007年开始,英伟达(NVIDIA)公司提出了第一个可编程通用计算平台(GPU),同时提出了CUDA框架,从此开启了GPU用于通用计算的新纪元。今后,不计其数的科研人员和开发者,对各种差别范例的算法用CUDA进行(部分)改写,从而达到几倍到数百倍的加速效果。尤其是在机器学习,特别是深度学习的浪潮来临后,GPU加速已经是各类工具实现的根本底层架构之一。
本章里,会简朴介绍GPU的根本架构,性能指标,框架选择等等和深度学习干系的内容。
15.1 什么是异构计算
异构计算是基于一个更加朴素的概念,“异构现象”,也就是差别计算平台之间,由于硬件结构(包括计算核心和内存),指令集和底层软件实现等方面的差别而有着差别的特性。异构计算就是利用联合了两个或者多个差别的计算平台,并进行协同运算。
好比,比力常见的,在深度学习和机器学习中已经比力成熟的架构:CPU和GPU的异构计算;别的还有比力新的Google推出的协处置惩罚器(TPU),根据目标而定制的ASIC,可编程的FPGA等也都是现在在异构计算中利用比力多的协处置惩罚器。而本章会着重介绍和深度学习共同繁荣的图形加算算器,也就是常说的GPU。
15.2 什么是GPU
GPU,就如名字所包含的内容,本来开发的目标是为了进行计算机图形渲染,而淘汰对于CPU的负载。由于图像的原始特性,也就是像素间的独立性,以是GPU在计划的时候就遵从了从“单指令流多数据流(SIMD)”架构,使得同一个指令(好比图像的某种变更),可以同时在多一个像素点上进行计算,从而得到比力大的吞吐量,才能使得计算机可以实时渲染比力复杂的2D/3D场景。
在最初的应用场景里,GPU并不是作为一种通用计算平台实现的,直到2007年左右,一家巨大的公司将GPU带到通用计算的天下里,使得其可以在相对比力友好的编程情况(CUDA/OpenCL)里加速通用程序成了可能。从此之后,GPU通用计算,也就是GPU就成了学界和工业界都频繁利用的技术,在深度学习爆发的年代里,GPU成了推动这股浪潮非常重要的力量。
15.3 GPU架构简介
GPU,图形显示芯片作为差别于CPU的计划逻辑和应用场景,有着非常差别的架构,本部分将简朴介绍GPU毕竟是怎样架构,其中的计算核心有哪些特性。
15.3.1 怎样通俗理解GPU的架构
首先,下图简朴地展示了几个GPU差别于CPU的特性:
计算核心:
图中的CPU,i7-5960,Intel的第五代Broadwell架构,其中包括了8个CPU核心(支持16线程),也就是理论上可以有16个差别的运算同时进行。除了8个核心计算单位,大部分的芯片面积是被3级缓存,内存和控制电路占据了。同样的,来自Nvidia的GTX980GPU,在差不多的芯片面积上,大部分是计算单位,16个SM,也就是流处置惩罚单位,每个流处置惩罚单位中包含着128个CUDA计算核心,以是统共来说,有2048个GPU运算单位,相应地这颗GPU理论上可以在一个时钟周期内可以进行2048次单精度运算。
计算核心频率:
时钟频率,代表每一秒中内能进行同步脉冲次数,也是从一个侧面反映一个计算元件的工作速度。下图中对比了个别早期产物,好比Intel 的 x5650 和几款 Nvidia的GPU。可以看出核心频率而言,CPU要远高于GPU。对于CPU而言,在不考虑能源消耗和制成工艺限制的情况下,追求更高的主频。但,在GPU的计划中,采用了多核心计划,纵然是提高一些频率,实在对于总体性能影响不会特别大。当然,其中还有能耗方面的考虑,避免发热过高,也进行了衡量。还有一个可能的缘故起因是,在一个流处置惩罚器中的每个核心(CUDA核心)的运行共享非常有限的缓存和寄存器,由于共享内存也是有性能极限的,以是纵然每个GPU核心频率提高,如果被缓存等拖累也是无法展现出高性能的。
内存架构:
GPU的多层内存架构包括全局内存(也就是通常意义上大部分比力关注的内存,在若干到16GB之间,截止到当前最新),2级缓存,和芯片上的存储(包括寄存器,和1级缓存共用的共享内存,只读/纹理缓存和常量缓存)。通常来说,最高速的共享内存/缓存和寄存器都是非常有限的,好比在Tesla的K20中,只有48K的缓存可以作为共享内存或者1级缓存利用,以是在很多用GPU加速算法实现的过程中,有效地利用这些高速缓存是使得性能提拔的非常重要的方面。
15.3.2 CUDA的核心是什么
上面提到在一个GPU芯片里,会有几千个CUDA核心,被分布在多个流处置惩罚单位(SM)中,好比上面提到早期的GTX980中的16个SM中各包含了128个CUDA核心。
如下图所示,作为GPU架构中的最小单位,实在它的计划和CPU有着非常类似的结构,其中包括了一个浮点运算单位和整型运算单位,和控制单位。同一个流处置惩罚器中,全部的CUDA核心将同步执行同一个指令,但是作用于差别的数据点上。
一般来说,更加多的CUDA核心意味着有更多的并行执行单位,以是也就可以片面地以为是有更加高的性能。但是,实在这个也是取决于很多方面,最重要的是算法在并行实现的时候有没有高效地调度和内存的利用优化。
在现在我们利用的大部分GPU加速的深度学习框架里,包括Tensorflow、PyTorch等都是依赖于底层的GPU的矩阵加速代码的实现。为此Nvidia公司也是制定和实现了统一的接口,好比CUDNN,方便上层框架更好的利用GPU的性能。
15.3.3 为什么要利用GPU
对于并行计算来说,可以非常粗略地分为:
并行指令:也就是多个指令可以同时分配到差别的计算核心上同时进行,而他们的操作是差别的,并且他们之间相互独立,不必要额外的同步和信息共享。
并行数据流:如果数据本身存在的自然的独立性,好比图像中的每一个像素,那么在对这个图像做处置惩罚的过程中,同一个指令可以同时作用于每一个像素。在这种情况下,这个对于完整图像的操作可以并行化。理论上,如果内存不是题目,并且计算单位的数目大于整个图形中总像素点的话,这个操作可以在一个时钟周期内完成。
GPU整体的架构而言,某种意义上是同时支持以上两种并行模式。在同一个流处置惩罚器中,采用了“单一指令并行数据流的模式”,而在多个流处置惩罚器中,同一时间可以派发差别的指令。从这一点出发,GPU芯片算是一个非常灵活的架构。一个芯片中,流处置惩罚器的个数和其中包含的CUDA核心的数目也是一种面向应用计划时候找到的一个均衡点。
基于深度学习中大部分的操作的自然并行性(大量的矩阵操作),GPU在当下还是一种非常适合的计算平台。一个非常范例的例子就是常见的矩阵相乘(如下图),要计算
,通过并行计算,X和Y中的行向量和列向量的逐元素相乘就可以同时进行,只要得到效果后再进行累加,并且累计的过程中也是可以进行并行化,使得效率有非常大的提高。
Nvidia也是制定和开发了一套底层类库,CUBlas方便开发者。我们熟悉的几大框架(eg. Tensorflow、Pytorch等)也是遵循和利用了这些并行类库,以是才使得训练和部署性能有了非常多的提高。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
熊熊出没
金牌会员
这个人很懒什么都没写!
楼主热帖
在字节跳动干软件测试5年,4月无情被辞 ...
TortoiseGit间接处理linux目录下的仓库 ...
django小项目 ----- 创建错题集 ...
SeaTunnel 发布成为 Apache 顶级项目后 ...
创建SQL server服务器
Java如何调用HttpURLConnection类模拟 ...
[Golang] GO 语言工作环境的基本概念 ...
数据库的三大范式
Java 知识 - 接口代理
神经网络与深度学习
标签云
挺好的
服务器
快速回复
返回顶部
返回列表