每个开发人员必定把握的基本常识-时代的-GPU-AI-生活工具包 (每个开发人员工资多少)
随着传统的顺序算法到日益盛行的并行算法,GPU将成为减速复杂计算无法或缺的工具。在和机器学习义务等具备海量数据集和复杂的神经网络的架构中,GPU的并行处置才干具备很大的长处。本文将深化讨论学习。
原文链接:
作者|RijulRajesh译者|弯月
责编|夏萌
出品|CSDN(ID:CSDNnews)
为什么仅有CPU的常识还不够
在当初的AI时代,大少数开发人员接受过CPU关系常识的培训。这些常识已成为教学内容的一局部,因此普通咱们都会以面向CPU的方式思索和处置疑问。
但是,CPU的疑问在于它们依赖于顺序架构。在当今环球,咱们依赖于少量并行义务,而CPU并不适宜这些状况。
开发人员面临的疑问包含:
口头并行义务
传统的CPU是线性运转的,一次性口头一条指令。有这种限度是由于CPU理论领有若干针对复线程性能启动过优化的弱小外围。
在面对多个义务时,CPU会调配资源来依次处置每个义务,即顺序口头指令。在须要同时关注少量义务的状况下,这种方法会变得效率低下。
只管咱们可以经过多线程等技术来提高CPU的性能,但其基本设计理念优先思索的是顺序口头。
高效运转AI模型
AI模型驳回Transformer等先进架构,应用并行处置来提高性能。与顺序运转的新式循环神经网络(RNN)不同,GPT等现代Transformer可以同时处置多个单词,从而提高训练的效率和才干。由于当咱们并行训练时,就可以失掉更大的模型,而更大的模型会生成更好的输入。
并行性的概念逾越了人造言语处置,裁减到了图像识别等其余畛域。例如,图像识别架构Ale可以同时处置图像的不同局部,展现出了并行处置的弱小配置,从而成功了准确的形式识别。
但是,以复线程性能为重心设计的CPU很难充散施展并行处置的后劲。它们无法有效地调配和口头复杂的AI模型所需的少量并行计算。
因此,GPU的开发变得越来越普遍,为的是满足AI运行程序中并行处置的特定需求,从而成功更高的效率和更快的计算。
如何应用GPU驱动开发处置这些疑问
GPU外围的大规模并行性
与CPU的外围相比,工程师们设计的GPU具备更小、高度专业化的外围。这种架构准许GPU同时口头多个并行义务。
GPU中的少量外围十分适宜依赖于并行性的上班负载,例如图形渲染和复杂的数学计算。
在本文中,咱们将展示如何应用GPU的并行性来缩短成功复杂的义务所需的时期。
AI模型中经常使用的并行性
AI模型,特意是基于TensorFlow等深度学习框架构建的模型,展现出了高度的并行性。神经网络的训练触及少量矩阵运算,而GPU仰仗其宏大的外围数量,能够并行化这些运算。TensorFlow以及其余盛行的深度学习框架都启动了优化,能够应用GPU的才干来减速模型的训练和推理。
在本文中,咱们将展现如何应用GPU的弱小配置来训练神经网络。
CPU与GPU有何不同?
顺序架构
中央处置单元(CPU)的设计重心是顺序处置。它们长于线性口头一组指令。
CPU针对须要高复线程性能的义务启动了优化,例如
处置并行义务的外围数量有限
CPU的外围数量较少,生产级的处置器理论有2~16个外围。每个外围都能够独立处置自己的指令集。
并行架构
图形处置单元(GPU)驳回并行架构设计,能够高效地口头并行处置义务。
适宜于:
GPU经过将多个义务合成为更小的并行子义务来同时处置多个义务。
数千个用于并行义务的外围
与CPU不同,GPU领有少量外围,理论高达数千个。这些外围组织成了流式多处置器(SM)或相似的结构。
丰盛的外围使GPU能够同时处置少量数据,十分适宜并行义务,例如图像和视频处置、深度学习和迷信模拟等。
AWSGPU实例:初学者指南
AmazonWebServices(AWS)提供各种用于机器学习等义务的GPU实例。
以下是不同类型的AWSGPU实例及其用例:
通用GPU实例
推理优化GPU实例
图形优化GPU实例
托管GPU实例
经常使用Nvidia的CUDA启动GPU驱动开发 CUDA是什么?
CUDA是一款NVIDIA开发的并行计算平台和编程模型,可协助开发人员应用GPU减速器的弱小配置来提高运行程序的速度。
上方,咱们将经常使用CUDA来展现一个示例。
设置CUDA
你可以依照以下步骤操作,在计算机上设置CUDA。
基本命令在装置好CUDA后,你可以尝试以下命令。
LSPCI|grepVGA
此命令可识别并列出系统中的GPU。
nvidia-smi
![时代的](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
此命令为NVIDIASystemManagementInterface(NVIDIA系统治理界面)的缩写,可提供系统中无关NVIDIAGPU的详细消息,包含应用率、温度、内存经常使用状况等。
sudolshw-Cdisplay
此命令可提供系统中无关显示控制器(包含显卡)的详细消息。
此命令可提供无关图形子系统的消息,包含无关GPU和显示器的详细消息。
sudohwinfo--gfxcard
此命令可提供系统中无关显卡的详细消息。
经常使用CUDA 框架
上方,咱们来展现CUDA的一些详细配置。
数组加法疑问
数组加法疑问很适宜展示GPU并行化。
思索以下数组:
假设由CPU来口头整个操作,则代码如下:
前一个循环遍历数组的每个元素,并依次口头加法。当须要处置少量数字时,这种方法就会由于其顺序口头的性质而变得缓慢。
为了克制这个限度,GPU提供了一种处置打算:并行化加法运算。不同于依次口头运算的CPU,GPU可以同时口头多项加法。
例如,运算1+7、2+8、3+9、4+10、5+11和6+12可以借助GPU并行化同时口头。
应用CUDA,成功并行加法的代码如下:
咱们将经常使用内核文件(.cu)启动展示。
咱们来逐行解说代码。
上方,咱们来看看main函数。
创立指针cudaA、cudaB和cudaC,指向GPU上的内存。
咱们经常使用cudaMalloc,为向量cudaA、cudaB和cudaC调配GPU上的内存。
经常使用cudaMemcpy将向量a和b的内容从服务器复制到GPU。
经常使用一个块和多个(数量等于向量大小)线程调用内核函数vectorAdd。
将结果向量cudaC从GPU复制回服务器。
而后就可以反常输入结果了:
咱们经常使用nvcc命令口头这段代码。
输入如下:
完整的代码,请参见这里()。
经常使用GPU优化/target=_blankclass=infotextkey>Python中的图像生成
上方,咱们来讨论如何经常使用GPU处置来优化性能密集型义务,例如图像生成。
曼德博汇合是一种数学结构,可依据指定方程中特定数字的行为构成复杂的视觉形式。生成这种汇合是一项资源密集型操作。
经过上方的代码片段,你可以了解到经常使用CPU处置生成曼德博汇合的传统方法,该方法的速度很慢。
上方的代码生成结果须要消耗4.07秒。
为了提高速度,咱们可以经过Numba库应用GPU的并行化。详细方法如下。
首先,咱们导入Numba库的即时编译、用于GPU减速的CUDA以及其余适用程序。
@jit批示Numba口头即时编译,将Python代码转换为机器代码,以提高口头速度。
依据定义,mandel_kernel将在CUDAGPU上口头。担任跨GPU线程并行生成曼德博汇合。
接上去,咱们可以在create_fractal_gpu函数中经常使用GPU减速的曼德博汇合生成。create_fractal_gpu函数须要调配GPU内存,启动GPU内核(mandel_kernel),并将结果复制回CPU。
上述代码只有0.0046秒内就能口头成功。比之前的CPU的代码要快许多。
完整的代码,请参见这里()。
经常使用GPU训练辨别猫狗的神经网络
GPU在AI畛域的运行是当初的抢手话题之一,出于展示的目标,上方咱们来创立一个用于辨别猫和狗神经网络。
预备上班
导入库:
初始化卷积神经网络(CNN)
加载训练数据
构建CNN架构
编译模型
训练模型
训练成功后,经常使用classifier.save将模型存储在.h5文件中。
在上方的代码中,咱们将经常使用trained_model.h5来识别猫和狗。
输入如下:
完整的代码,请参见这里()。
总结
在行未来到的AI时代,GPU是不容漠视的存在,咱们应该深化了解它的才干。
随着咱们从传统的顺序算法过渡到日益盛行的并行算法,GPU将成为减速复杂计算无法或缺的工具。在AI和机器学习义务等具备海量数据集和复杂的神经网络的架构中,GPU的并行处置才干具备很大的长处。
此外,GPU已超出传统的机器学习畛域,在迷信钻研、模拟和数据密集型义务中也有找到了运行。理想证实,GPU的并行处置才干有助于处置药物发现、气象建模以及金融模拟等各个畛域的难题。
人工智能需要学习哪些课程?
学习内容包括数学基础、算法积累以及编程语言。 数学要学好高数、线性代数、概率论、离散数学等等内容,算法积累需要学会人工神经网络、遗传算法等等,还需要学习一门编程语言,通过编程语言实现算法,还可以学习一下电算类的硬件基础内容。 2、人工智能专业应用领域应用领域是很广泛的,主要有图像识别、博弈论、工智能导论、机器学习等,当然想要在这些领域有所发展,还需要学习一些信号处理、微积分、数据基础结构等等知识内容,保证使用过程中,有一定的理论来支撑。 3、人工智能就业前景随着智能化的发展,人工智能技术会在互联网行业逐步应用和普及,把技术应用于物联网、大数据等行业,所以就业需求会不断扩大,我们也将会频繁与智能体互动和交流,这也是未来社会生产环境的发展趋势,需要我们去迎合时代发展的需要。 随着人工智能的不断发展,对我们提出了新的要求,所以相关的人工智能基础内容,一定要学习起来,掌握人工智能技术将成为一个必然的趋势,学习人工智能专业的学生也会越来越多,相关技能的教育,也会迎来更多发展机会。
怎样用GPU来造人工智能“火箭”
具体可以搜索一下:快包智能产品开发,外包服务平台本文是网络首席科学家吴恩达在GTC China 2016上的演讲实录整理。 在今年的GTC China上,吴恩达的议题分享是到底什么是神经网络,为什么GPU非常适合对神经网络的训练。 大家好,现在人们说人工智能是新的电能。 电能改变了很多不同的行业,我觉得现在人工智能也会对很多行业带来一样大的改变。 现在人工智能的计算大部分都需要依赖GPU,我今天想跟大家分享这是为什么,也跟大家分享一下人工智能对你们的工作会有怎么样的影响。 我们在人工智能领域的人都是非常幸运的,因为很早的时候大家还不清楚深度学习是多么的重要,当时黄仁勋就在人工智能方面做了很多工作,生产出这种GPU的平台,使得网络和其他公司能够取得很多的成就。 两个星期之前,网络发布了很多技术为大家提供服务,其中很多都是使用机器学习和深度学习,尤其是基于GPU的学习来进行训练的。 到底什么是深度学习,我们往往会把它和大脑中的神经元做一个类比,我希望更深地介绍一下技术方面的问题,到底什么是神经网络,为什么我们觉得GPU非常适合对这些神经网络进行训练。 我们所做的深度学习的工作99%都可以类比成将不同的矩阵进行相乘或者矩阵和向量进行相乘。 从第一天开始,GPU在矩阵相乘上就是非常高效的,所以整个领域都使用GPU平台来做他们的工作。 当下,基本上所有AI的经济价值都来自于一种叫做监督式学习的模式。 什么叫做监督式学习?输入什么就输出什么,如果说进行人脸识别,你想对人脸识别的系统进行训练,首先是一些数据组,比如一张脸和一个不是脸,我们对神经网络通过不同的矩阵相乘进行训练,这就是我们进行人脸识别的做法。 很多深度学习的经济价值在于找到非常聪明的办法来使用监督式学习。 有比较多的例子,比如想识别废品邮件;如果你有足够的数据,在网络看到很多用户和广告的信息也可以训练一个模型来预测用户会不会点击一个广告。 所以就是要找到非常聪明的监督式学习模型,这也带来了很多的经济价值。 有很多现在我们所做的基础研究都是关于监督式学习的,还有加强式学习和很多其他的学习,希望未来的几年在其他领域也会进行。 这种监督式学习的公式已经足以对很多你们现在的工作带来改变。 我所讲的这些技术所有细节其实在20年前就有了,那为什么现在深度学习才开始真正发展起来呢?有几个主要的趋势:第一是深度学习在这几年才刚刚发展起来的原因是规模化。 我喜欢做一个类比,建立人工智能就像是建立一个火箭一样,到底什么叫做火箭,你要造一个火箭首先需要一个大的引擎,然后需要很多的火箭燃料,这两个都是非常大。 如果引擎非常大,但是燃料非常少,这个火箭也飞不了多远。 如果说引擎非常小,燃料非常多,有可能火箭根本就无法起飞。 只有引擎非常大燃料非常多的时候才能建造一个非常好的火箭。 神经网络就像火箭的引擎,现在我们能够建立这样的神经网络,是因为现在规模化,是因为GPU的发展。 而前面提到的火箭燃料就是今天大量的互联网公司获得的数据。 算法的创新也是非常重要的。 对我们来讲首先要建立一个非常好的网络,然后要有充足的数据,这是一个基础。 在过去的几年,我看到这样一些趋势,也就是规模化,大概在十年前我们都通过普通的CPU进行深度学习的训练,当时大概有100万的连接,进步是非常慢的。 2008年的时候我们写了第一篇在CUDA上进行神经网络训练的文章,当时是斯坦福大学的一个研究,有了10倍的转变。 2001年我带领谷歌的一个团队,我们使用CPU计算进一步实现规模化,用很多的CPU。 但是很快我们就意识到使用很多CPU使用云计算其实并不能真正促进深度学习发展,当时在斯坦福以及后来在网络我们意识到使用HPC高性能计算。 最近使用超级计算机才能更加促进深度学习算法进步的一个方向,所以最先进的深度学习的系统已经开始使用高性能算法了。 我们要训练一个语音识别的模型需要20百万亿次,我们需要花100万美元的电进行一个模型的训练,我们的一个研究人员要进行一个模型的训练需要花100美元的数据,需要4兆字节的数据。 网络是全球第一个为深度学习建立GPU群的公司,我们不光进行训练,而是真正的进行运作,我们早期的投资是看好GPU能够帮助我们在这方面取得领先的能力,能够促进AI能力的发展。 接下来我想和大家分享一个例子,向大家介绍一下为什么深度学习对很多的网络AI应用进行了改变。 以前语音识别系统分为很多的阶段,首先输入一个音频,要抓取音频的特征,获得音位,要有语言的模型,然后再转录。 在2011年的时候,在网络建立一个语音识别的系统,我们认为我们花了几十年的时间来做语音识别,我们还是把整个的工作全部都用神经网络给取代。 我们发现有了很大的神经网络,相当于一个火箭的引擎,使用端对端的学习方法可以帮助我们对最好的语音识别系统进行训练。 上个月我们跟斯坦福大学和华盛顿大学合作发现如果你想用手机来输入某个信息,用语音识别比用键盘可以快3倍,这些结果都是依赖我们的DSP系统。 之前我们讲到规模的重要性,包括计算的规模和数据的规模,对于这些深度学习系统来进行训练,这里我想给大家介绍一个简单的方法,如果能够提升机器学习系统的表现,这当然有点过于简单了,但是我的团队问我怎么提升他们的机器学习系统的时候,我首先会把这个简单的方法告诉他们。 首先要问他们,目前在训练数据上表现好吗?如果不是的话,那我就会跟他们说你的这个神经网络需要有更大的规模,也就是说火箭的引擎要更强、更大。 然后你继续在这个方面进行改进,直到你在训练数据上能够有好的表现,在这之后就问你测试数据上表现好吗,如果不是的话我就跟他们说数据要更多,也就是说要有更多的火箭燃料。 再继续在这个方面进行改进,直到在测数据上表现得好。 这是一个非常简单的公式,真实世界会更加复杂,这过于简单,但这样一个简单的方法有很大的帮助,帮助我们提升了系统的性能,我也相信能够帮助大家的机器学习系统的性能提升。 过去几年很多性能提升都在于计算以及数据规模的提升,之所以计算的规模提升很多在于GPU计算的出现,实际比这复杂得多,如果大家想要了解具体的细节,如何提升机器学习的表现,大家可以去参照我所写的一本书,从这个网站可以拿到免费的书。 前面我讲到用GPU进行训练,我也看到这个对于网络的工作以及很多其他公司的工作有很大的帮助。 另外一个趋势,用GPU不仅进行训练,也包括提供在线服务。 HPC训练的巨大的神经网络,我们发现我们有个问题,怎么样可以把这么大的神经网络放在服务器上面提供在线服务?如果看一下传统的提供在线服务的架构,传统的CPU服务器的架构,架构是这样的,比如这是CPU服务器,有几个线程,如果有一个用户有一些数据过来,他给了一个4乘1的向量,比如是一些语音数据,你把这个交给一个线程进行计算然后会有输出。 第二个用户过来了,还是用第二个线程帮他进行计算,第三第四也是一样。 这是比较传统的CPU架构提供在线的服务。 因为我们在超级计算及用很多GPU,训练非常大的神经网络,我们发现这些非常大的模型部署在传统的CPU当中是非常困难的,因为这个架构不适合。 网络是第一家宣布把GPU投入到业务中的大型公司,也就是进行推理和提供服务,而不仅仅限于训练。 我们有一个专门的技术叫Batch Dispatch,我们把数据放到我们的数据中心当中,如果用户出现了,当他这端有一些数据的输入,我们会暂时让这个数据稍微等一点点时间,然后再等几位用户出现,各自都有自己的数据,把他们做成一个批次。 我们把这些向量堆叠到一起变成一个矩阵,这是第一第二第三第四,变成了一个4乘4的矩阵。 同时交给GPU处理器进行处理,它是同时对这四个用户的数据进行处理,这些结果也同时会出来,GPU有非常强的并行处理能力,可以非常高效的进行并行处理,我们把结果拿到之后再把它们分开,分别提供给四个用户。 我们发现这样使得我们可以有更大的模型规模,而且可以以更低的成本给更多的用户提供服务。 昨天我们在网络的数据中心和数据中心的负责人,在网络我们看到的一个趋势,现在越来越多的使用GPU及高性能计算在数据中心当中,因此我们的团队在重新设计数据中心来更好地利用高密度的计算模式,我们有团队在重新设计供电、散热,使得我们可以把更高密度的计算站纳入到我们的数据中心当中进行训练,然后进行推理。 大家有些人可能是做数据中心工作的,这里边有很多的工作是可以开展对于数据中心的架构来进行重新的设计,从而使用这些高密度的GPU。 之前我讲到了深度学习,首先第一个就是计算的规模和数据的规模。 第二个我所看到的过去几年的趋势,深度学习现在可以给出更复杂的输出。 我的意思是五年之前大部分的机器学习所输出的都只是整数,比如废品邮件分类,你输入一个邮件,输入的是0或1是不是废品,图片也是一样的,输出的是一个整数,现在发生了变化,深度学习越来越多的可以去输出非常复杂的结果,比如一个句子或者是一个图像。 我们的DSP Batch系统输入音频片段,可以输出一个英文或者是中文的句子,图片说明我们可以把图片输进去,输出是一个图片说明来描述这个图片说这是一辆黄色的车在路上开。 所以现在神经网络可以输出复杂的东西,比如句子和一些图片说明,不仅仅是一些整数。 包括翻译,你可以输入英文的句子,然后输出中文的句子,也可以文法的校正,可能你输入的是语法错误的文本,输出的是语法正确的句子。 这个重要的趋势也是可以非常聪明的使用,可以在AI和深度学习方面得到更大的价值挖掘。 当然我们也知道,AI现在主要的局限性在于这样的学习方式,也就是监督式学习的方式是需要很多的标记数据,未来我希望我们能够对于非监督学习有一些突破,但是目前我们可以通过监督学习去转化很多的行业来实现巨大的发展。 刚才我们讲到了规模非常重要,我们需要用大量的数据进行大量的模型的训练。 规模非常重要,我们需要用很多的数据对大的模型进行训练。 还有另外一个原因,为什么AI的发展需要计算呢?我们看一下刚才的神经网络这个简单的例子。 我们要花很多的时间、很多的实验去发现这些神经网络的结构,我可能在这个方面的工作已经有25年的时间了,现在我开始要开始一个新问题的时候我也不知道什么样的网络是合适的,研究者需要进行很多实验,十几种几百种模型才能发现一个好的模型去完成这种任务。 有这么多的训练数据,语音识别系统有5万小时的数据,所以你要进行这样一个训练可能需要3个月的时间,这样研究者的时间利用率不是那么高。 另外一个原因,网络花很多的努力去优化开发者的效率,因为你们在做这个模型,你不知道到底什么样的模型,你要做很多的实验去发现到底什么是可行的。 我们发现我们投资于计算系统来加速这种实验的过程、试错的过程,可以使得研究者更加的高效,可以使得他们有更多的时间可以更快的去发明新的想法。 因此在这个方面,我们非常强调,第一我们是投资计算平台,基于GPU的HPC计算平台。 第二我们是很大的投资于开发易于使用的深度学习工具,我们把我们自己的深度学习平台开源化,它叫PaddlePaddle,易于使用,大家可以非常方便的尝试深度学习的模型,来发现到底什么样的模型对你的应用是最为合适的。 PaddlePaddle支持用多GPU,我们现在不是在一个GPU上进行计算,一次可以用32个、64个、128个GPU进行实验。 我对AI的未来寄予很高的希望,对人工智能的未来充满信心,希望几年后我们可以使用人工智能做到陪伴机器人,做到个性化私教、音乐作曲、机器人医生,这些产品和技术可以为很多行业带来巨大的改变,也对人类带来巨大的价值。 这些项目很多都正在研究阶段,在人工智能时代如果你听我们讲未来,未来有时候很快就到了。 我想给大家看一个例子,我们正在做一个网络医疗大脑的项目,这个项目正在研究阶段,请大家看看这段视频。 如果你输入一个问题,宝宝发烧了出了很多红疹,网络医疗大脑这个软件会理解你的问题,问你很多病情的问题,如果你慢慢回答它的问题,它就可以识别出你的病情是怎么样的,也可以输出一些有关你病情的信息和建议。 这个软件当然不可以替代医生,假如患者想用这些信息先要跟医生讨论,技术还在研究阶段,希望这种技术未来可以为患者和医生带来很多非常有用的信息。 我觉得我们非常幸运能够有这么好的GPU平台,在这个平台上开发很多的AI应用,在网络我非常振奋的是开发出AI的工具,不光是帮助我们自己也帮助很多的行业,我在网络希望能够在我们的硬件的基础之上开发一些AI的工具帮助大家。 谢谢大家!
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。