GPU最大的价值一直是“accelerating”(加速),GPU不是取代CPU,而是利用GPU的并行计算架构,来将并行计算的负载放到GPU上来处理从而极大的提升处理速度。
GPU本质上在异构计算架构上属于协处理器,常见的协处理器除了GPU,还有TPU、FPGA、ASIC等。神经网络图像分割,有很多适合GPU来做并行处理的算法。
而GPU相较于其它加速协处理芯片,有更好的可编程性。NVIDIA在GPU加速计算领域发展多年,已经形成了非常好的软件生态。
目前在深度学习的训练端,GPU的应用和部署已经极为普遍,说是标准配置也不为过。在推理端,NVIDIA也有布局T4GPU卡。深度神经网络用GPU相较纯CPU,能够提速几百倍,所以还是推荐GPU。
关于负载如何搭配硬件配置,选用什么型号的GPU卡还是可以咨询下英伟达官方授权的代理商-思腾合力,我想在这方面思腾合力会帮助到你的。
谷歌人工智能写作项目:神经网络伪原创
现在基本上都会选择云服务让电脑上云,租用云服务器的方式来完成深度学习领域需要的高配电脑服务AI发猫。总体而言,NVIDIA目前最适合深度学习的GPU是RTX3080和RTX3090。
RTX系列显卡对于深度学习来说最大的优势在于专为神经网络设计的运算单元——TensorCore(张量核心),而RTX30系列性能的提升是上一代产品图灵架构的2倍。
根据测评参数,NVIDIA旗舰显卡RTX3080拥有8704个CUDA核心,272个TMU,88个ROP,以及68个SM。TensorCore数量达到544个,RTCore为136个。
其中,被称为GPU“猛兽”的RTX3090使用代号为GA102的核心,和前代泰坦一样拥有24G显存,但型号升级为DDR6X(镁光提供),显存速度19.5Gbps,384bit位宽,拥有10496个等效CUDA核心,相比GeForceRTX2080Ti,3090的核心数量增加一倍不止。
不过,自2020年9月上市以来,RTX3080和RTX3090一直处于一卡难求的状态,市场价更是涨了7倍,而供货商甚至无法预测具体的供货时间。
对于企业和实验室的科研人员而言,要在预算范围内购买最新的GPU,特别是RTX3080和RTX3090这类旗舰显卡难以实现;进行整机配置时,需要考虑多个因素,比如电源、机箱体积,主板的PCle卡槽等,这时候,云电脑在GPU算力上的选择则更为灵活和方便。
现代的硬件更新换代的太快了,越来越多的机器学习从业者又开始面临选择GPU的难题,机器学习的成功很大程度上取决于硬件的承载能力。深度学习是机器学习的一个分支,深度学习使用神经网络来解决问题。
在选择GPU的时候,我们要注意内存宽带,GPU处理大量数据的能力,最重要的性能指标;处理能力,表示GPU处理数据的速度;显卡大小等等。思腾合力是我们公司目前合作的服务商,你可以去了解下。
他们家是专注于人工智能领域,适用于GPU高性能计算、深度学习训练及推理等场景,覆盖服务器/静音工作站等多种产品形态,自主品牌AI服务器及通用X86服务器,主营深思IW系列GPU服务器产品可支持1~20颗GPU,适用于深度学习训练及推理等场景,还挺不错的。
因为神经网络这种大范围多任务的简单运算来说,正好符合GPU这种多核架构,比如你CPU20核心,同时处理20个任务。但是神经网络可能有20000个任务(比喻)。
但最近比较有代表性的GPU-Nvidia的新TITAN-X,CUDA核心就达到了3584个,速度就不言而喻了。但是CPU的核心性能比GPU的性能强大,就好比教授和高中老师的区别。
所以在神经网络训练当中,简单训练由CUDA完成,复杂训练和综合由CPU辅助完成汇总。
这样任务被分开同时进行,平时需要训练几十天的项目可能现在几个小时就可以完成,这就是为什么GPU架构更适合神经网络并且深度学习在近年大火的原因,就是因为GPU架构解决了当初没有解决的效率问题。
深度学习显卡用英伟达比较好。NVIDIA使用的人较多,所以网上的资源也比较多,容易学习和构建。而AMD的显卡,由于很迟才推出它的编程架构,用的人比较少,所以网上的资料较少,所以很难去学习。
NVIDIA 在深度学习训练方面的领先地位在MLPerf0.6中得到了证明,这是AI训练的第一项行业级基准测试。
深度学习显卡的选择:1、选择算力在5.0以上的根据官方说明,在GPU算力高于5.0时,可以用来跑神经网络。算力越高,计算能力越强,建议小伙伴们在资金充足的情况下,尽量买算力高一些的。
2、尽量选择大显存显存越高,意味着性能越强悍。特别是对于CV领域的朋友们,建议至少有一个8GB显存的显卡。下面是英伟达的部分中高端显卡的一些性能参数。
3、GPU几个重要的参数GPU架构:不同款的GPU可能采用不同设计架构,比如GeForce10系列的GTX1080/1080Ti采用的是Pascal架构,而GeForce20系列的RTX2080/2080Ti采用的是Turing架构。
不同架构的GPU,即使其他参数差不多,性能差别可能非常大。显存带宽:代表GPU芯片每秒与显存交换的数据大小,这个值等于显存位宽*工作频率,单位为GB/秒,该值越大,代表GPU性能越好。
GeforceGTX1080的显存带宽为320GB/秒,而它的升级版GeforceRTX2080的带宽为448GB/秒。
显存位宽:代表GPU芯片每个时钟周期内能从GPU显存中读取的数据大小,这个值越大代表GPU芯片和显存之间数据交换的速度越快,性能越好。
GeforceGTX1080的显存位宽为256bit,GeforceRTX2080Ti显存位宽为352bit。GPU工作频率:代表GPU每秒钟工作次数,单位为MHz,跟CPU的频率类似。
该值越大代表性能越好。CUDA核心数量:CUDA核心数量越大越好,GeforceGTX1080的CUDA核心数量是2560个。而GeforceRTX2080Ti的CUDA核心数高达4352个。
功耗:GPU能耗,像Geforce这种消费级的显卡一般功耗非常高,GeforceGTX1080的最大功耗为175W,TeslaP4的最大功耗为75W。
像那种数据中心大规模级别的GPU部署,低功耗的显卡一年电费能省很多。
性能好。NVIDIAPascal架构,与上一代Maxwell架构的人工智能方案平台相比,采用Pascal架构TeslaP100GPU加速器的新平台,其性能可达前者的12倍。
TeslaP100是首款双精度性能和单精度性能分别超过5Teraflops、10Teraflops的GPU加速器,可提供几十甚至上百倍CPU服务器节点的强大性能,为诸如人工智能、医疗、气候、能源等最为复杂的应用提供最好的支撑,并带来时间方面的巨大飞跃。
NVIDIA联合创始人兼首席执行官黄仁勋表示:“我们面临的最严峻的科学挑战,如癌症治疗、认识气候变化、打造智能机器等,它们往往需要近乎无限的计算能力。
借助各个层面的创新,我们从零开始设计了PascalGPU架构,它在计算性能和效率等方面都有着巨大进步,能够帮助我们的顶尖人才推动科技快速发展,让明天变得更加美好。”
Facebook智能围棋负责人,对这件事情过:最近我仔细看了下AlphaGo在《自然》杂志上发表的文章,写一些分析给大家分享。
AlphaGo这个系统主要由几个部分组成:走棋网络(PolicyNetwork),给定当前局面,预测/采样下一步的走棋。
快速走子(Fastrollout),目标和1一样,但在适当牺牲走棋质量的条件下,速度要比1快1000倍。估值网络(ValueNetwork),给定当前局面,估计是白胜还是黑胜。
蒙特卡罗树搜索(MonteCarloTreeSearch,MCTS),把以上这三个部分连起来,形成一个完整的系统。我们的DarkForest和AlphaGo同样是用4搭建的系统。
DarkForest较AlphaGo而言,在训练时加强了1,而少了2和3,然后以开源软件Pachi的缺省策略(defaultpolicy)部分替代了2的功能。以下介绍下各部分。
1.走棋网络走棋网络把当前局面作为输入,预测/采样下一步的走棋。它的预测不只给出最强的一手,而是对棋盘上所有可能的下一着给一个分数。棋盘上有361个点,它就给出361个数,好招的分数比坏招要高。
DarkForest在这部分有创新,通过在训练时预测三步而非一步,提高了策略输出的质量,和他们在使用增强学习进行自我对局后得到的走棋网络(RLnetwork)的效果相当。
当然,他们并没有在最后的系统中使用增强学习后的网络,而是用了直接通过训练学习到的网络(SLnetwork),理由是RLnetwork输出的走棋缺乏变化,对搜索不利。
有意思的是在AlphaGo为了速度上的考虑,只用了宽度为192的网络,而并没有使用最好的宽度为384的网络(见图2(a)),所以要是GPU更快一点(或者更多一点),AlphaGo肯定是会变得更强的。
所谓的0.1秒走一步,就是纯粹用这样的网络,下出有最高置信度的合法着法。这种做法一点也没有做搜索,但是大局观非常强,不会陷入局部战斗中,说它建模了“棋感”一点也没有错。
我们把DarkForest的走棋网络直接放上KGS就有3d的水平,让所有人都惊叹了下。可以说,这一波围棋AI的突破,主要得益于走棋网络的突破。
这个在以前是不可想像的,以前用的是基于规则,或者基于局部形状再加上简单线性分类器训练的走子生成法,需要慢慢调参数年,才有进步。
当然,只用走棋网络问题也很多,就我们在DarkForest上看到的来说,会不顾大小无谓争劫,会无谓脱先,不顾局部死活,对杀出错,等等。有点像高手不经认真思考的随手棋。
因为走棋网络没有价值判断功能,只是凭“直觉”在下棋,只有在加了搜索之后,电脑才有价值判断的能力。2.快速走子那有了走棋网络,为什么还要做快速走子呢?
有两个原因,首先走棋网络的运行速度是比较慢的,AlphaGo说是3毫秒,我们这里也差不多,而快速走子能做到几微秒级别,差了1000倍。
所以在走棋网络没有返回的时候让CPU不闲着先搜索起来是很重要的,等到网络返回更好的着法后,再更新对应的着法信息。其次,快速走子可以用来评估盘面。
由于天文数字般的可能局面数,围棋的搜索是毫无希望走到底的,搜索到一定程度就要对现有局面做个估分。
在没有估值网络的时候,不像国象可以通过算棋子的分数来对盘面做比较精确的估值,围棋盘面的估计得要通过模拟走子来进行,从当前盘面一路走到底,不考虑岔路地算出胜负,然后把胜负值作为当前盘面价值的一个估计。
这里有个需要权衡的地方:在同等时间下,模拟走子的质量高,单次估值精度高但走子速度慢;模拟走子速度快乃至使用随机走子,虽然单次估值精度低,但可以多模拟几次算平均值,效果未必不好。
所以说,如果有一个质量高又速度快的走子策略,那对于棋力的提高是非常有帮助的。
为了达到这个目标,神经网络的模型就显得太慢,还是要用传统的局部特征匹配(localpatternmatching)加线性回归(logisticregression)的方法,这办法虽然不新但非常好使,几乎所有的广告推荐,竞价排名,新闻排序,都是用的它。
与更为传统的基于规则的方案相比,它在吸纳了众多高手对局之后就具备了用梯度下降法自动调参的能力,所以性能提高起来会更快更省心。AlphaGo用这个办法达到了2微秒的走子速度和24.2%的走子准确率。
24.2%的意思是说它的最好预测和围棋高手的下子有0.242的概率是重合的,相比之下,走棋网络在GPU上用2毫秒能达到57%的准确率。这里,我们就看到了走子速度和精度的权衡。
和训练深度学习模型不同,快速走子用到了局部特征匹配,自然需要一些围棋的领域知识来选择局部特征。对此AlphaGo只提供了局部特征的数目(见ExtendedTable4),而没有说明特征的具体细节。
我最近也实验了他们的办法,达到了25.1%的准确率和4-5微秒的走子速度,然而全系统整合下来并没有复现他们的水平。
我感觉上24.2%并不能完全概括他们快速走子的棋力,因为只要走错关键的一步,局面判断就完全错误了;而图2(b)更能体现他们快速走子对盘面形势估计的精确度,要能达到他们图2(b)这样的水准,比简单地匹配24.2%要做更多的工作,而他们并未在文章中强调这一点。
在AlphaGo有了快速走子之后,不需要走棋网络和估值网络,不借助任何深度学习和GPU的帮助,不使用增强学习,在单机上就已经达到了3d的水平(见ExtendedTable7倒数第二行),这是相当厉害的了。
任何使用传统方法在单机上达到这个水平的围棋程序,都需要花费数年的时间。在AlphaGo之前,AjaHuang曾经自己写过非常不错的围棋程序,在这方面相信是有很多的积累的。
3.估值网络AlphaGo的估值网络可以说是锦上添花的部分,从Fig2(b)和ExtendedTable7来看,没有它AlphaGo也不会变得太弱,至少还是会在7d-8d的水平。
少了估值网络,等级分少了480分,但是少了走棋网络,等级分就会少掉800至1000分。
特别有意思的是,如果只用估值网络来评估局面(2177),那其效果还不及只用快速走子(2416),只有将两个合起来才有更大的提高。
我的猜测是,估值网络和快速走子对盘面估计是互补的,在棋局一开始时,大家下得比较和气,估值网络会比较重要;但在有复杂的死活或是对杀时,通过快速走子来估计盘面就变得更重要了。
考虑到估值网络是整个系统中最难训练的部分(需要三千万局自我对局),我猜测它是最晚做出来并且最有可能能进一步提高的。关于估值网络训练数据的生成,值得注意的是文章中的附录小字部分。
与走棋网络不同,每一盘棋只取一个样本来训练以避免过拟合,不然对同一对局而言输入稍有不同而输出都相同,对训练是非常不利的。这就是为什么需要三千万局,而非三千万个盘面的原因。
对于每局自我对局,取样本是很有讲究的,先用SLnetwork保证走棋的多样性,然后随机走子,取盘面,然后用更精确的RLnetwork走到底以得到最正确的胜负估计。
当然这样做的效果比用单一网络相比好多少,我不好说。一个让我吃惊的地方是,他们完全没有做任何局部死活/对杀分析,纯粹是用暴力训练法训练出一个相当不错的估值网络。
这在一定程度上说明深度卷积网络(DCNN)有自动将问题分解成子问题,并分别解决的能力。另外,我猜测他们在取训练样本时,判定最终胜负用的是中国规则。
所以说三月和李世石对局的时候也要求用中国规则,不然如果换成别的规则,就需要重新训练估值网络(虽然我估计结果差距不会太大)。
至于为什么一开始就用的中国规则,我的猜测是编程非常方便(我在写DarkForest的时候也是这样觉得的)。
4.蒙特卡罗树搜索这部分基本用的是传统方法,没有太多可以的,他们用的是带先验的UCT,即先考虑DCNN认为比较好的着法,然后等到每个着法探索次数多了,选择更相信探索得来的胜率值。
而DarkForest则直接选了DCNN推荐的前3或是前5的着法进行搜索。
我初步试验下来效果差不多,当然他们的办法更灵活些,在允许使用大量搜索次数的情况下,他们的办法可以找到一些DCNN认为不好但却对局面至关重要的着法。
一个有趣的地方是在每次搜索到叶子节点时,没有立即叶子节点,而是等到访问次数到达一定数目(40)才,这样避免产生太多的分支,分散搜索的注意力,也能节省GPU的宝贵资源,同时在时,对叶节点的盘面估值会更准确些。
除此之外,他们也用了一些技巧,以在搜索一开始时,避免多个线程同时搜索一路变化,这部分我们在DarkForest中也注意到了,并且做了改进。
5.总结总的来说,这整篇文章是一个系统性的工作,而不是一两个小点有了突破就能达到的胜利。
在成功背后,是作者们,特别是两位第一作者DavidSilver和AjaHuang,在博士阶段及毕业以后五年以上的积累,非一朝一夕所能完成的。他们能做出AlphaGo并享有现在的荣誉,是实至名归的。
从以上分析也可以看出,与之前的围棋系统相比,AlphaGo较少依赖围棋的领域知识,但还远未达到通用系统的程度。
职业棋手可以在看过了寥寥几局之后明白对手的风格并采取相应策略,一位资深游戏玩家也可以在玩一个新游戏几次后很快上手,但到目前为止,人工智能系统要达到人类水平,还是需要大量样本的训练的。
可以说,没有千年来众多棋手在围棋上的积累,就没有围棋AI的今天。在AlphaGo中,增强学习(ReinforcementLearning)所扮演的角色并没有想像中那么大。
在理想情况下,我们希望人工智能系统能在对局中动态地适应环境和对手的招式并且找到办法反制之,但是在AlphaGo中增强学习更多地是用于提供更多质量更好的样本,给有监督学习(SupervisedLearning)以训练出更好的模型。
在这方面增强学习还有很长的路要走。
另外,据他们的文章所言,AlphaGo整个系统在单机上已具有了职业水平,若是谷歌愿意开几万台机器和李世石对决(这对它来说再容易不过了,改个参数就行),相信比赛会非常精彩。
许多现代神经网络的实现基于GPU,GPU最初是为图形应用而开发的专用硬件组件。所以神经网络收益于游戏产业的发展。
中央处理器(centralprocessingunit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
CPU自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。CPU出现于大规模集成电路时代,处理器架构设计的迭代更新以及集成电路工艺的不断提升促使其不断发展完善。
从最初专用于数学计算到广泛应用于通用计算。从4位到8位、16位、32位处理器,最后到64位处理器,从各厂商互不兼容到不同指令集架构规范的出现,CPU自诞生以来一直在飞速发展。
冯诺依曼体系结构是现代计算机的基础。在该体系结构下,程序和数据统一存储,指令和数据需要从同一存储空间存取,经由同一总线传输,无法重叠执行。
根据冯诺依曼体系,CPU的工作分为以下5个阶段:取指令阶段、指令译码阶段、执行指令阶段、访存取数和结果写回。