diff --git a/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md b/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md index 32deac2..fefbd09 100644 --- a/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md +++ b/ch15_GPU和框架选型/第十五章_异构运算、GPU及框架选型.md @@ -25,13 +25,67 @@ ## 15.5 GPU硬件环境配置推荐 ### 15.5.1 GPU主要性能指标 +GPU的性能主要由以下三个参数构成: + +1. 计算能力。通常我们关心的是32位浮点计算能力。16位浮点训练也开始流行,如果只做预测的话也可以用8位整数。 +2. 内存大小。当模型越大,或者训练时的批量越大时,所需要的GPU内存就越多。 +3. 内存带宽。只有当内存带宽足够时才能充分发挥计算能力。 + +对于大部分用户来说,只要考虑计算能力就可以了。GPU内存尽量不小于4GB。但如果GPU要同时显示图形界面,那么推荐的内存大小至少为6GB。内存带宽通常相对固定,选择空间较小。 + +下图描绘了GTX 900和1000系列里各个型号的32位浮点计算能力和价格的对比。其中价格为Wikipedia的建议价格。 + +![浮点计算能力和价格的对比。](./img/ch15/gtx.png) + +我们可以从图中读出两点信息: + +1. 在同一个系列里面,价格和性能大体上成正比。但后发布的型号性价比更高,例如980 TI和1080 TI。 +2. GTX 1000系列比900系列在性价比上高出2倍左右。 + +如果大家继续比较GTX较早的系列,也可以发现类似的规律。据此,我们推荐大家在能力范围内尽可能买较新的GPU。 ### 15.5.2 购买建议 +##### 首先给出一些总体的建议 +最好的GPU整体(小幅度):Titan Xp +综合性价比高,但略贵:GTX 1080 Ti,GTX 1070,GTX 1080 +性价比还不错且便宜:GTX 1060(6GB) +当使用数据集> 250GB:GTX Titan X(Maxwell) ,NVIDIA Titan X Pascal或NVIDIA Titan Xp + +没有足够的钱:GTX 1060(6GB) + +几乎没有钱,入门级:GTX 1050 Ti(4GB) + +做Kaggle比赛:GTX 1060(6GB)适用于任何“正常”比赛,或GTX 1080 Ti用于“深度学习竞赛” + +计算机视觉研究员:NVIDIA Titan Xp;不要买现在新出的Titan X(Pascal或Maxwell) + +一名研究员人员:GTX 1080 Ti。在某些情况下,如自然语言处理,一个GTX 1070或GTX 1080已经足够了-检查你现在模型的内存需求 + +搭建一个GPU集群:这个有点复杂,另做探讨。 + +刚开始进行深度学习研究:从GTX 1060(6GB)开始。根据你下一步兴趣(入门,Kaggle比赛,研究,应用深度学习)等等,在进行选择。目前,GTX 1060更合适。 + +想尝试下深度学习,但没有过多要求:GTX 1050 ti(4或2GB) + +目前独立GPU主要有AMD和Nvidia两家厂商。其中Nvidia在深度学习布局较早,对深度学习框架支持更好。因此,目前大家主要会选择Nvidia的GPU。 + +Nvidia有面向个人用户(例如GTX系列)和企业用户(例如Tesla系列)的两类GPU。这两类GPU的计算能力相当。然而,面向企业用户的GPU通常使用被动散热并增加了内存校验,从而更适合数据中心,并通常要比面向个人用户的GPU贵上10倍。 + +如果你是拥有100台机器以上的大公司用户,通常可以考虑针对企业用户的Nvidia Tesla系列。如果你是拥有10到100台机器的实验室和中小公司用户,预算充足的情况下可以考虑Nvidia DGX系列,否则可以考虑购买如Supermicro之类的性价比比较高的服务器,然后再购买安装GTX系列的GPU。 + +Nvidia一般每一两年发布一次新版本的GPU,例如2017年发布的是GTX 1000系列。每个系列中会有数个不同的型号,分别对应不同的性能。 ## 15.6 软件环境搭建 +深度学习其实就是指基于一套完整的软件系统来构建算法,训练模型,如何搭建一套完整的软件系统,比如操作系统的选择?安装环境中遇到的问题等等,本节做一个简单的总结。 ### 15.6.1 操作系统选择? +针对硬件厂商来说,比如NVIDIA,对各个操作系统的支持都是比较好的 ,比如windows10,linux系列,但是由于linux系统对专业技术人员是非常友好的,所以目前几乎所有的深度学习系统构建都是基于linux的,比较常用的系统如ubuuntu系列,centos系列等等。 +在构建系统的时候,如何选择合适的操作系是一个刚刚入门深度学习的工作者面临的问题,在这里给出几点建议: +(1)刚刚入门,熟悉windows系统,但是对linux和深度学习都不太熟,这个时候可以基于windows10等系统来做入门学习 +(2)简单了解linux的使用,不太懂深度学习相关知识,可以直接基于linux系统来搭建框架,跑一些开源的项目,慢慢研究 +(3)熟悉linux,毫无疑问,强烈推荐使用linux系统,安装软件简单,工作效率高 +总之一句话,如果不熟悉linux,就先慢慢熟悉,最终还是要回归到linux系统来构建深度学习系统 ### 15.6.2 本机安装还是使用docker? @@ -61,17 +115,17 @@ MxNet是dmlc社区推出的深度学习框架,MXNet由学术界发起,包括数个顶尖大学的多个学科的研究人员的贡献,在2017年被亚马逊指定为官方框架。 mxnet的最知名的优点就是其对多GPU的支持和扩展性强,其优秀的性能使之在工业界占有一席之地,在amazon支持之后,其文档和开发进度明显好很多。除了高可扩展性,MXNet 还提供混合编程模型(命令式和声明式),同时兼容多种编程语言(包括 Python、C ++、R、Scala、Julia、Matlab 和 JavaScript)的代码,目前主要在推python高层接口gluon -优点: +优点: (1)多GPU支持好,扩展性强,支持多种编程语言接口,主要是由华人团队开发,中文社区活跃,中文文档资源和课程丰富 (2)针对两大热门领域推出gluoncv和gluonNLP模块,复现经典论文,达到State-of-the-art,接口设计简单,文档齐全,拿来就可以用 缺点: (1)现在mxnet官方社区主要在推gluon接口,接口稍有混乱,坑较多,入手门槛稍高 -(2)偏小众,经典网络和项目的开源实现相对于tensorflow和pytorch还是比较少,很多还是需要自己手动实现 -相关资源链接: +(2)偏小众,经典网络和项目的开源实现相对于tensorflow和pytorch还是比较少,很多还是需要自己手动实现 +相关资源链接: 1,官方教程:http://mxnet.incubator.apache.org 提供有快速入门教程和详细文档说明 2,中文教程:http://zh.gluon.ai/ 官方的中文教程,此课程有对应的中文版视频,主要由李沐大神讲课 3,中文论坛:https://discuss.gluon.ai/ 官方发中文论坛,mxnet的主要作者都在这里,论坛比较活跃,可及时得到作者的回答 -4,基于mxnet的开源实现:https://github.com/chinakook/Awesome-MXNet 这里主要列举了mxnet在各个领域的项目的开源实现 +4,基于mxnet的开源项目实现:https://github.com/chinakook/Awesome-MXNet 这里主要列举了mxnet在各个领域的项目的开源实现 * CNTK @@ -134,56 +188,12 @@ mxnet的最知名的优点就是其对多GPU的支持和扩展性强,其优秀 深度学习训练通常需要大量的计算资源。GPU目前是深度学习最常使用的计算加速硬件。相对于CPU来说,GPU更便宜且计算更加密集。一方面,相同计算能力的GPU的价格一般是CPU价格的十分之一。另一方面,一台服务器通常可以搭载8块或者16块GPU。因此,GPU数量可以看作是衡量一台服务器的深度学习计算能力的一个标准。 ### 15.1.1 如何选择GPU -### 首先给出一些总体的建议 -最好的GPU整体(小幅度):Titan Xp -综合性价比高,但略贵:GTX 1080 Ti,GTX 1070,GTX 1080 -性价比还不错且便宜:GTX 1060(6GB) -当使用数据集> 250GB:GTX Titan X(Maxwell) ,NVIDIA Titan X Pascal或NVIDIA Titan Xp - -没有足够的钱:GTX 1060(6GB) - -几乎没有钱:GTX 1050 Ti(4GB) - -做Kaggle比赛:GTX 1060(6GB)适用于任何“正常”比赛,或GTX 1080 Ti用于“深度学习竞赛” - -计算机视觉研究员:NVIDIA Titan Xp;不要买现在新出的Titan X(Pascal或Maxwell) - -一名研究员人员:GTX 1080 Ti。在某些情况下,如自然语言处理,一个GTX 1070或GTX 1080已经足够了-检查你现在模型的内存需求 - -搭建一个GPU集群:这个有点复杂,另做探讨。 - -刚开始进行深度学习研究:从GTX 1060(6GB)开始。根据你下一步兴趣(入门,Kaggle比赛,研究,应用深度学习)等等,在进行选择。目前,GTX 1060更合适。 - -想尝试下深度学习,但没有过多要求:GTX 1050 ti(4或2GB) - -目前独立GPU主要有AMD和Nvidia两家厂商。其中Nvidia在深度学习布局较早,对深度学习框架支持更好。因此,目前大家主要会选择Nvidia的GPU。 - -Nvidia有面向个人用户(例如GTX系列)和企业用户(例如Tesla系列)的两类GPU。这两类GPU的计算能力相当。然而,面向企业用户的GPU通常使用被动散热并增加了内存校验,从而更适合数据中心,并通常要比面向个人用户的GPU贵上10倍。 - -如果你是拥有100台机器以上的大公司用户,通常可以考虑针对企业用户的Nvidia Tesla系列。如果你是拥有10到100台机器的实验室和中小公司用户,预算充足的情况下可以考虑Nvidia DGX系列,否则可以考虑购买如Supermicro之类的性价比比较高的服务器,然后再购买安装GTX系列的GPU。 - -Nvidia一般每一两年发布一次新版本的GPU,例如2017年发布的是GTX 1000系列。每个系列中会有数个不同的型号,分别对应不同的性能。 ### 15.1.2 GPU的主要性能指标 -GPU的性能主要由以下三个参数构成: -1. 计算能力。通常我们关心的是32位浮点计算能力。16位浮点训练也开始流行,如果只做预测的话也可以用8位整数。 -2. 内存大小。当模型越大,或者训练时的批量越大时,所需要的GPU内存就越多。 -3. 内存带宽。只有当内存带宽足够时才能充分发挥计算能力。 -对于大部分用户来说,只要考虑计算能力就可以了。GPU内存尽量不小于4GB。但如果GPU要同时显示图形界面,那么推荐的内存大小至少为6GB。内存带宽通常相对固定,选择空间较小。 -下图描绘了GTX 900和1000系列里各个型号的32位浮点计算能力和价格的对比。其中价格为Wikipedia的建议价格。 - -![浮点计算能力和价格的对比。](./img/ch15/gtx.png) - -我们可以从图中读出两点信息: - -1. 在同一个系列里面,价格和性能大体上成正比。但后发布的型号性价比更高,例如980 TI和1080 TI。 -2. GTX 1000系列比900系列在性价比上高出2倍左右。 - -如果大家继续比较GTX较早的系列,也可以发现类似的规律。据此,我们推荐大家在能力范围内尽可能买较新的GPU。 在选择GPU时,首先要考虑的第一个GPU性能问题是什么呢:是否为cuda核心?时钟速度多大?内存大小多少? 这些都不是,对于深度学习性能而言,最重要的特征是内存带宽(memory bandwidth)。