当前位置: 首页 > news >正文

linux卸载cntk,10个深度学习软件的安装指南(附代码)

ee0f3ea47a84082dfdeac9eb09e147c8.png

来源:AI前线

本文长度为2385字,建议阅读4分钟

本文为你介绍10个深度学习软件安装指南。

由于近期论文的需要,我搭建了一个基于 Ubuntu 和英伟达的深度学习环境。尽管已经有很多非常棒的关于英伟达驱动和 CUDA 的安装指南, 但依然没有详尽的深度学习环境搭建指南。另外,我需要查阅很多文档来熟悉细节,其中一些细节还有待完善,甚至还有一些包含语法错误。因此我决定把我这段时间查阅的文档(见参考链接)做个总结。

该指南会安装如下内容

操作系统(Ubuntu)

4 个驱动和库

5 个 Python DL 库(TensorFlow,Theano,CNTK,Keras 和 PyTorch)

下面显示了每个包的依赖项。Python 深度学习库只需安装一个,你可以选择一个喜欢的进行安装。

下面是更为详细的组件清单:

Ubuntu(v16.04.3)- 操作系统,进程管理。

英伟达显卡驱动(v375)- 允许操作系统操作显卡。

CUDA(v8.0)- 显卡 c 语言库。提供了统一不同架构的标准。

cuDNN(v6.0.21)- 基于 CUDA 的深度神经网络库。

pip(v9.0.1)- Python 包管理工具。

TensorFlow(v1.3)- 谷歌开发的深度学习库。

Theano(v0.9.0)- 运行于 GPU 的数学基础库。

CNTK(v2.2)- 微软搜索开发的深度学习框架。

Keras(v2.0.8)- 深度学习库包装层(对外提供统一调用,内部可使用不同的深度学习框架),支持 TensorFlow,Theano 和 CNTK。

PyTorch(v0.2.0)- GPU 加速运算的动态深度学习库。

1. 安装 Ubuntu 16.04.3

下面介绍纯净安装(会覆盖以前的分区和系统)。

v 16.04.3 是最新的 LTS(长期支持)版本,因此我们选择从 USB 启动盘安装。当按下电源键后进入启动菜单选择从 USB 启动。

我的设备包含两块硬盘,1TB 的机械硬盘和 256GB 的固态硬盘。我把系统安装在了机械硬盘上,固态硬盘用于数据存储,这样能提高模型训练速度。安装过程中我选择了创建 3 个分区。

启动分区(128GB):包含系统文件,程序设置和文档。

交换分区(2 倍内存大小):对于我该分区大小 128GB。交换分区是用于扩展内存的虚拟内存。

用户分区(剩余):剩余的 744GB 为用户分区。

安装完成后,运行以下命令升级内核。

1954c31e15b3a86078274420c2685ade.png

2. 英伟达显卡驱动

Ubuntu 安装完成后会发现无法修改屏幕分辨率。这是因为视频屏幕数据源 GPU 没有驱动和没有被正确的配置。

有从 Ubuntu 仓库和 source 两种方式安装驱动。第一种方式更简单,但经常需要重新安装。调用 sudo apt-get update 和 sudo apt-get upgrade 两个命令会升级内核。这不会升级显卡驱动并会造成 GUI 加载失败。从 source 进行安装避免了这个问题。

从包安装 v375(更简单)

下面命令列出了与你系统兼容的所有驱动版本。输出会打印两个版本数字:最新和长期支持的发行版本号。打印的版本号在输出的最前面,向上滑动查看。

b51d1d3ea60b38780626b1c5aa04eeeb.png

添加并安装仓库源。使用下面命令修改想要安装的驱动版本号。建议修改为最新的长期支持版本 -375。

39e583d4ffaf775cb510502036bb3196.png

重启电脑重新配置屏幕输出源。

62d2d4bb24cc518cfc12ebdf8417f61c.png

安装完成后,显示器应该可以识别你使用的监视器,可通过修改显示器配置,分辨率和方向来检测驱动是否安装成功。

从英伟达源安装 v384.90(困难)

从英伟达官网下载最新驱动。我选择的是:

GeForce -> GeForce 10 Series -> GeForce GTX 1080 -> Linux 64 bit -> English (UK)

以下命令为可选项,可允许编译为 32 位架构和 GUI 开发者版本。

0bc2d418c1cedf9d7dfb3b3864d852c0.png

按下 CTRL+ALT+F1 并登陆会从 GUI 切换到终端。为了重新构建屏幕输出源,必须暂停用户界面。

69d22d8c777fe6a704b147118d77d71c.png

要是上面命令不起作用,新版 Ubuntu 可使用 systemctl 替代 lightdm。然后修改 runfile 为可执行并执行。

53ffd46b67260811e180625329c1acd6.png

运行时有可能会遇到 pre-install script failed 的错误信息。这是因为 pre-install 包含了 exit 1 命令因此该错误信息可以直接忽略。该命令的作用是为了确保你真的想要安装驱动。

--dkms 选项(默认打开)用于防止内核通过安装驱动到模块进行更新时,该驱动会重新安装。内核更新时,dkms 会触发驱动重新编译到新内核模块栈。

如果 BIOS 没有禁用安全启动会导致安装失败。重启电脑进入 BIOS,禁用安全启动。

如果安装成功,重启 GUI。

19f8fdb181eb3e09f882b26685c002e8.png

卸载:shell sudo ./NVIDIA-Linux-x86_64-384.90.run --uninstall

认证

确保下面命令能够识别正确的 GPU 版本

b66a35d526cad5560493344360d21248.png

nvidia-smi确保驱动版本号正确

a706096556f6c2669b23a61a113a5fe1.png

3. 安装 CUDA8.0

从英伟达官网下载 CUDA 的运行文件。如下选择:

Linux -> x86_64 -> Ubuntu -> 16.04 -> .deb(network)

切换目录到.deb 文件,使用以下命令解包、更新包列表并安装 CUDA。

a34bfeb483d8d66dbed7d7a44b1a7f23.png

添加该库到 bash 路径以便其他应用也能找到。

86f369358a416fde8812263a7d362ba3.png

输入 nvcc -V 命令确保英伟达 c 编译器版本和 CUDA 版本匹配。

输入 sudo shutdown -r now 重启电脑完成安装。

可选:检测 CUDA 安装

可通过运行例子来检测安装是否成功。下面命令创建一个 test_CUDA 文件夹用于存储示例。

769d8d65aa6ceb1893028ae3b6680150.png

在子文件夹 NVIDIA_CUDA-8.0_Samples/3_Imaging/cudaDecodeGL 下包含一个 findgllib.mk 文件。文件的第 61 行,30 列是硬编码的英伟达驱动版本号 367,该版本号需要修改为之前安装的版本号。

编译示例

cd ../.. && make

现在可以在 NVIDIA_CUDA-8.0_Samples 中运行你的核心内容。NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release 路径下有两个非常有用的脚本。./deviceQuery 可打印出 GPU 信息,./bandwidthTest 可打印出带宽。

参考链接:英伟达 CUDA 安装手册

4. 安装 cuDNN6.0.21

在英伟达官网,选中同意条款注册成为开发者。为匹配 CUDA8.0,在 cuDNN v6.0.21 下拉菜单中下载:

针对 Ubuntu16.04 的 cuDNN v6.0 运行时库(Deb)

针对 Ubuntu16.04 的 cuDNN v6.0 开发者库(Deb)

针对 Ubuntu16.04 的 cuDNN v6.0 代码示例和用户指南(Deb)

.deb 可以纯净安装,相较.tar 来说是更好的选择。使用下面命令会安装三个包:

24bf4ca9b8f44bcb795d3793c9ab64f6.png

测试 cuDNN

拷贝已安装的示例代码到可读文件夹下,编译并运行 mnistCNN。

185813a4ac54bdb83bdb769cef8d427b.png

运行正常脚本会返回 Test passed!

卸载 cudnn

下面命令可以卸载安装好的三个包。另外,如果创建过示例,记得运行 rm -r ~/cudnn_samples_v6。

e7938ea001a5bb45c4f1249577004d58.png

参考链接:cuDNN 安装指南

5. 安装 pip9.0.1

Pip 更新非常频繁,基本每两周就会更新一次。建议使用最新版本。

下面命令用来安装 pip 和更新到最新版本。

ad7cb073026c6c5277affced1ec977dc.png

为确保是最新版本,运行 pip -V 来检查版本号。

6. 安装 Tensorflow1.3.0

pip install tensorflow-gpu

为验证是否安装成功,使用 $python 开启 python,运行以下脚本确保输出打印 Hello, TensorFlow!

4417183a6a40e08f8cf1cec9fe02bb68.png

参考链接:Ubuntu 上如何安装 tensorflow

7. 安装 Theano 0.10

Theano 需要下面系统依赖

8a1dc3db5f9ff3c0e57bb3e3ed225f94.png

和 Python 依赖。

614d182ebabb665c31306688d923b9ce.pnglibgpuarray 允许 Theano 使用 GPU,libgpuarray 只能从源码编译。首先 下载源码

bd67478048cbbd39789b2983a86a1a4c.png

编译到指定文件夹 Build 下。

2b0779a6e15d07715c95365ab5623760.png

然后编译到 python 包中

29a7711e958873f80c5c8719757650cc.png添加下面命令到~/.bashrc 中以便 python 能够找到该库。

c527b7df668a2fba68082a26bcb4b111.png

最后安装 Theano

6efb1084de2e5abf91ec4ce1679f2868.png

验证是否安装成功,创建一个 test_theano.py 文件,将内容拷贝至该文件。确保 THEANO_FLAGS=device=cuda0 python test_theano.py 命令运行成功并输出 Used the gpu。

参考链接:Theano 0.9.0 文档

8. 安装 CNTK2.2

2d94193e280ab7d052a753a31f214658.png

验证是否安装成功,运行 python -c "import cntk; print(cntk.version)"查看是否打印 2.2。

参考链接:如何配置 CNTK

9. 安装 Keras2.0.8

sudo pip install keras

从 $python 环境运行 import keras 验证是否安装成功。

参考链接:Keras 安装

10. 安装RyTorch0.2.0

PyTorch 依赖两个库 torchvision 和 torch。

977156d3c3c4f4402f0c72da6e27fae0.png安装成功后下面脚本应该打印出一个随机的浮点数。

62685838cc363c4888e33488f7ee3594.png

参考链接:PyTorch 主页

总结

整个安装过程最困难的部分是找出英伟达驱动和深度学习库之间的依赖项和找到最有效的长期支持安装教程。最简单的部分是安装文档更新活跃且详细的 Python 包。

尽管阅读文档浏览源码很费时间,但了解每个包的作用和如何构建对了解整个 Ubuntu 生态是很有帮助的。

最后,感谢您的阅读!

原文链接:

https://medium.com/@dyth/deep-learning-software-installation-guide-d0a263714b2

编辑:王璇

相关文章:

  • linux的profile文件被删除,Centos7 etc/profile和/bin被误删除的解决办法
  • 深度linux怎么显示图标,Linux(Ubuntu/Deepin) 添加启动图标
  • c语言写入csv 逗号字符串,[转]C语言处理CSV文件的方法,以及kdd cup的简单说明...
  • c语言阅读程序求结果题型,阅卷教师面对面 C语言程序设计五种题型别马虎
  • C语言wait参数status,C语言-系统-wait()和waitpid()函数
  • claim用法c语言中,通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法
  • ipv6报文封装linux,IPv6报文的路由头封装方法及装置与流程
  • android 7下载地址,Android7.0下载地址 安卓7.0系统手机下载安装教程
  • android 弹出菜单环形,谷歌新专利:安卓环形菜单 双指触屏效率高
  • android相机拍摄时动画完成效果,Android 仿微信图像拍摄和选择界面功能(代码分享)...
  • 安装android 模拟器 停止运行程序,才知道,原来修改程序后,不需要重新启动AVD模拟器就可以测试程序运行的!...
  • 修改sim卡号码 android,android 如何动态修改SIM卡应用名称 MT6572 MT6589
  • android studio sqliteopenhelper,android studio使用SQLiteOpenHelper()建立数据库的方法
  • 一加5android 系统耗电,一加5评测:可能是今年最好的Android旗舰
  • 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 《剑指offer》分解让复杂问题更简单
  • 345-反转字符串中的元音字母
  • Java超时控制的实现
  • java概述
  • Mybatis初体验
  • node和express搭建代理服务器(源码)
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SQLServer之创建数据库快照
  • 前端技术周刊 2019-02-11 Serverless
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 异步
  • 与 ConTeXt MkIV 官方文档的接驳
  • 自动记录MySQL慢查询快照脚本
  • ​queue --- 一个同步的队列类​
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #pragma data_seg 共享数据区(转)
  • #QT(智能家居界面-界面切换)
  • (C语言)二分查找 超详细
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (k8s中)docker netty OOM问题记录
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (rabbitmq的高级特性)消息可靠性
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (三) diretfbrc详解
  • (三)模仿学习-Action数据的模仿
  • (转) Face-Resources
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转载)深入super,看Python如何解决钻石继承难题
  • .gitignore文件设置了忽略但不生效
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 版本不支持的问题
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net Web窗口页属性
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET委托:一个关于C#的睡前故事