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

This commit is contained in:
aa12356jm 2018-11-26 16:42:06 +08:00 committed by GitHub
parent 00cecacdca
commit 2a3969aa43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 105 additions and 54 deletions

View File

@ -138,51 +138,49 @@ Nvidia一般每一两年发布一次新版本的GPU例如2017年发布的是G
总之一句话如果不熟悉Linux就先慢慢熟悉最终还是要回归到Linux系统来构建深度学习系统
### 15.6.2 常用基础软件安装?
目前有众多深度学习框架可供大家使用但是所有框架基本都有一个共同的特点目前几乎都是基于Nvidia的GPU来训练模型要想更好的使用Nvidia的GPUcuda和cudnn就是必备的软件安装。
1安装cuda
上文中有关于cuda的介绍这里只是简单介绍基于Linux系统安装cuda的具体步骤可以根据自己的需要安装cuda8.0或者cuda9.0这两种版本的安装步骤基本一致这里以最常用的ubuntu 16.04 lts版本为例
1官网下载地址
cuda8.0https://developer.nvidia.com/cuda-80-ga2-download-archive
cuda9.0https://developer.nvidia.com/cuda-90-download-archive
进入网址之后选择对应的系统版本即可,如下图所示:
![cuda8.0](./img/ch15/cuda8.0.png)
目前有众多深度学习框架可供大家使用但是所有框架基本都有一个共同的特点目前几乎都是基于Nvidia的GPU来训练模型要想更好的使用Nvidia的GPUcuda和cudnn就是必备的软件安装。
1. **安装cuda**
上文中有关于cuda的介绍这里只是简单介绍基于Linux系统安装cuda的具体步骤可以根据自己的需要安装cuda8.0或者cuda9.0这两种版本的安装步骤基本一致这里以最常用的ubuntu 16.04 lts版本为例
1. 官网下载,地址
cuda8.0https://developer.nvidia.com/cuda-80-ga2-download-archive
cuda9.0https://developer.nvidia.com/cuda-90-download-archive
进入网址之后选择对应的系统版本即可,如下图所示:
![cuda8.0](./img/ch15/cuda8.0.png)
![cuda9.0](./img/ch15/cuda9.0.png)
![cuda9.0](./img/ch15/cuda9.0.png)
2命令行中进入到cuda所在的位置授予运行权限
cuda8.0: sudo chmod +x cuda_8.0.61_375.26_linux.run
cuda9.0:sudo chmod +x cuda_9.0.176_384.81_linux.run
2. 命令行中进入到cuda所在的位置授予运行权限
cuda8.0: sudo chmod +x cuda_8.0.61_375.26_linux.run
cuda9.0:sudo chmod +x cuda_9.0.176_384.81_linux.run
3执行命令安装cuda
cuda8.0:sudo sh cuda_8.0.61_375.26_linux.run
cuda9.0:sudo sh cuda_9.0.176_384.81_linux.run
之后命令之后下面就是安装步骤cuda8.0和cuda9.0几乎一致:
1 首先出现cuda软件的版权说明可以直接按q键跳过阅读
3. 执行命令安装cuda
cuda8.0:sudo sh cuda_8.0.61_375.26_linux.run
cuda9.0:sudo sh cuda_9.0.176_384.81_linux.run
之后命令之后下面就是安装步骤cuda8.0和cuda9.0几乎一致:
* 首先出现cuda软件的版权说明可以直接按q键跳过阅读
* Do you accept the previously read EULA?
accept/decline/quit: **accept**
2 Do you accept the previously read EULA?
accept/decline/quit: **accept**
* Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:**no**
3 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit:**no**
4 Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit:**yes**
5 Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]:直接按enter键即可
* Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit:**yes**
* Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]:直接按enter键即可
6 Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit:**yes**
* Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit:**yes**
7 Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit:**yes**
以上步骤基本就是cuda的安装步骤。
* Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit:**yes**
以上步骤基本就是cuda的安装步骤。
2安装cudnn
cudnn是Nvidia的专门针对深度学习的加速库。。。
2. **安装cudnn**
cudnn是Nvidia的专门针对深度学习的加速库。。。
### 15.6.3 本机安装还是使用docker
@ -197,40 +195,93 @@ cudnn是Nvidia的专门针对深度学习的加速库。。。
### 15.7.2 框架详细信息
* Tensorflow
* Tensorflow
Tensorflow是Google于2015年开源的基于数据流编程的深度学习框架得益于Google强大的技术实力和品牌背书目前Tensorflow发展迅猛其用户量远远超过其它框架用户。
优点:
1. 由谷歌开发、维护,因此可以保障支持、开发的持续性
2. 巨大、活跃的社区
3. 网络训练的低级、高级接口
4. 「TensorBoard」是一款强大的可视化套件旨在跟踪网络拓扑和性能使调试更加简单
5. TensorFlow 不仅支持深度学习,还有支持强化学习和其他算法的工具
缺点:
1. 计算图是纯 Python 的,因此速度较慢
2. 图构造是静态的,意味着图必须先被「编译」再运行
* PyTorch
pytorch是Facebook于2017年才推出的深度学习框架相对于其它框架算是比较晚的了但是这个同时也是优势在设计的时候就会避免很多之前框架的问题所以一经推出就收到大家极大的欢迎
优点接口简洁且规范和python无缝结合代码设计优秀且易懂社区非常活跃官方修复bug及时
缺点:目前模型在工业界部署相对其它框架稍有劣势不过后续的pytorch1.0版本应该会有很大改善和caffe2合并后caffe2的优秀的模型部署能力可以弥补这个不足
相关资源链接:
1官网教程https://pytorch.org/tutorials/
2基于pytorch的开源项目汇总https://github.com/bharathgs/Awesome-pytorch-list
3
优点:
1. 接口简洁且规范文档齐全和python无缝结合
2. 社区非常活跃,开源实现较多
3. 提供动态计算图(意味着图是在运行时生成的),允许你处理可变长度的输入和输出,例如,在使用 RNN 时非常有用
4. 易于编写自己的图层类型,易于在 GPU 上运行
5. 「TensorBoard」缺少一些关键功能时「Losswise」可以作为 Pytorch 的替代品
缺点:
1. 模型部署相对其它框架稍有劣势不过后续的pytorch1.0版本应该会有很大改善和caffe2合并后caffe2的优秀的模型部署能力可以弥补这个不足
2.
3.
相关资源链接:
1. 官网教程https://pytorch.org/tutorials/
2. 基于pytorch的开源项目汇总https://github.com/bharathgs/Awesome-pytorch-list
3.
* Keras
Keras 是一个更高级、对用户最友好的 API具有可配置的后端由 Google Brain 团队成员 Francis Chollet 编写和维护
优点:
1. 提供高级 API 来构建深度学习模型,使其易于阅读和使用
2. 编写规范的文档
3. 大型、活跃的社区
4. 位于其他深度学习库(如 Theano 和 TensorFlow可配置之上
5. 使用面向对象的设计,因此所有内容都被视为对象(如网络层、参数、优化器等)。所有模型参数都可以作为对象属性进行访问
缺点:
1. 由于用途非常普遍,所以在性能方面比较欠缺
2. 与 TensorFlow 后端配合使用时会出现性能问题(因为并未针对其进行优化),但与 Theano 后端配合使用时效果良好
3. 不像 TensorFlow 或 PyTorch 那样灵活
* Sonnet
* Caffe
* Caffe
caffe是第一个主流产品级深度学习库于 2014 年由 UC Berkeley 发布开源
优点:
1. 简单网络结构无需编写代码,可快速实现
2. 漂亮的 Matlab 和 Python 接口
3. 完全由c++编程实现,部署方便
缺点:
1. 不灵活。在 Caffe 中,每个节点被当做一个层,因此如果你想要一种新的层类型,你需要定义完整的前向、后向和梯度更新过程。这些层是网络的构建模块,你需要在无穷无尽的列表中进行选择。(相反,在 TensorFlow 中,每个节点被当做一个张量运算例如矩阵相加、相乘或卷积。你可以轻易地定义一个层作为这些运算的组合。因此 TensorFlow 的构建模块更小巧,允许更灵活的模块化。)
2. 需要大量的非必要冗长代码。如果你希望同时支持 CPU 和 GPU你需要为每一个实现额外的函数。你还需要使用普通的文本编辑器来定义你的模型。真令人头疼几乎每个人都希望程序化地定义模型因为这有利于不同组件之间的模块化。有趣的是Caffe 的主要架构师现在在 TensorFlow 团队工作
3. 专一性。仅定位在计算机视觉(但做得很不错)
4. 不是以 Python 编写!如果你希望引入新的变动,你需要在 C++和 CUDA 上编程(对于更小的变动,你可以使用它的 Python 和 Matlab 接口)
5. 糟糕的文档
6. 安装比较困难!有大量的依赖包
* Caffe2
* MxNet
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还是比较少很多还是需要自己手动实现
相关资源链接:
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在各个领域的项目的开源实现
优点:
1. 多GPU支持好扩展性强支持多种编程语言接口主要是由华人团队开发中文社区活跃中文文档资源和课程丰富
2. 针对两大热门领域推出gluoncv和gluonNLP模块复现经典论文达到State-of-the-art接口设计简单文档齐全拿来就可以用
缺点:
1. 现在mxnet官方社区主要在推gluon接口接口稍有混乱坑较多入手门槛稍高
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在各个领域的项目的开源实现
* CNTK