Update 第十五章_异构运算、GPU及框架选型.md

This commit is contained in:
aa12356jm 2018-11-06 18:02:12 +08:00 committed by GitHub
parent 9548219498
commit 89abba80df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 58 additions and 48 deletions

View File

@ -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 TiGTX 1070GTX 1080
性价比还不错且便宜GTX 10606GB
当使用数据集> 250GBGTX Titan XMaxwell NVIDIA Titan X Pascal或NVIDIA Titan Xp
没有足够的钱GTX 10606GB
几乎没有钱入门级GTX 1050 Ti4GB
做Kaggle比赛GTX 10606GB适用于任何“正常”比赛或GTX 1080 Ti用于“深度学习竞赛”
计算机视觉研究员NVIDIA Titan Xp不要买现在新出的Titan XPascal或Maxwell
一名研究员人员GTX 1080 Ti。在某些情况下如自然语言处理一个GTX 1070或GTX 1080已经足够了-检查你现在模型的内存需求
搭建一个GPU集群这个有点复杂另做探讨。
刚开始进行深度学习研究从GTX 10606GB开始。根据你下一步兴趣入门Kaggle比赛研究应用深度学习等等在进行选择。目前GTX 1060更合适。
想尝试下深度学习但没有过多要求GTX 1050 ti4或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 TiGTX 1070GTX 1080
性价比还不错且便宜GTX 10606GB
当使用数据集> 250GBGTX Titan XMaxwell NVIDIA Titan X Pascal或NVIDIA Titan Xp
没有足够的钱GTX 10606GB
几乎没有钱GTX 1050 Ti4GB
做Kaggle比赛GTX 10606GB适用于任何“正常”比赛或GTX 1080 Ti用于“深度学习竞赛”
计算机视觉研究员NVIDIA Titan Xp不要买现在新出的Titan XPascal或Maxwell
一名研究员人员GTX 1080 Ti。在某些情况下如自然语言处理一个GTX 1070或GTX 1080已经足够了-检查你现在模型的内存需求
搭建一个GPU集群这个有点复杂另做探讨。
刚开始进行深度学习研究从GTX 10606GB开始。根据你下一步兴趣入门Kaggle比赛研究应用深度学习等等在进行选择。目前GTX 1060更合适。
想尝试下深度学习但没有过多要求GTX 1050 ti4或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