记录:Ubuntu 18.04 安装 tensorflow-gpu 版本
狠下心来重新装了系统,探索一下 gpu 版本的安装。比较令人可喜的是,跟着前辈们的经验,还是让我给安装成功了。由于我是新装的系统,就像婴儿般纯净,所以进入系统的第一步就是安装 cuda,只要这个不出错,后面的几乎就不会出错了。
首先,得先确定自己的显卡是否支持(这个一般支持,我这几年前的电脑的显卡都支持安装 cuda)。然后确定自己要安装的是什么版本的 TensorFlow,因为不同的版本对 cuda 和 cudnn 的版本要求不一样。具体可以参考此链接:https://tensorflow.google.cn/install/source_windows
我安装的是最新的 1.12 版本,所以支持的是 cuda 9 系列版本,我选择安装的是 cuda9.0,所以下载的 cudnn 版本也和 cuda9.0 版本对应。安装 cuda 当然少不了关于 gpu 的显卡驱动,这里不同的 cuda 版本要求的显卡驱动是有要求的,可参见此链接:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
但是需要说明的是,我并没有单独安装显卡驱动,而是在安装 cuda 的过程中自动安装显卡驱动。所以打开电脑的第一步就是安装 cuda。哦,不对,第一步是更改 apt 下载源,在 Ubuntu 的软件和更新中选择第一项 “Ubuntu 软件”,然后选择 “下载自” 中的其他站点,选择一个就可以了,这里我选择的是阿里云的源。接下来可以选择 sudo apt install fcitx,然后安装一个搜狗拼音输入法。当然直接进入主题也是很棒的。
进入下载好的 cuda 的 deb 包所在的目录,使用命令: sudo dpkg --install cuda9.0.deb,然后一通设置后,会提示你什么 key 没添加,然后可以去 /var/cuda-repo-×× 目录下找到一个以 .pub 结尾的文件,一般是第一个,我这里是 /var/cuda-repo-cuda-9-0-local/7fa2af80.pub,然后使用: sudo apt-key add /var/cuda-repo-cuda-9-0-local/7fa2af80.pub 进行添加。如果之前安装过其他版本的 cuda,并且也进行了这一步,不会进行提示,但是最后安装得到的版本号有问题(我这里之前安装过 cuda10,没有去掉这个添加的什么 .pub,所以后来安装 cuda9.2 时最后的版本依旧是 10,我也不懂为什么)。然后 sudo apt update 更新仓库,然后 sudo apt install cuda 就完成了基本的安装操作。如果不出错的话会直接开始安装 cuda。
但是这里我安装 cuda9.0 版本的时候出现了一个错误:“cuda : 依赖: cuda-9-0 (>= 9.0.176) 但是它将不会被安装E: 无法修正错误”。我也不知道这个错误是什么意思,一般不应该出现才对,因为我安装 cuda10 的时候没出现过,会很直接的开始安装,我姑且认为是我安装的 cuda 版本低了(瞎猜的),是不是我应该安装 9.1 或者 9.2 版本呢?这个我也没有去验证,因为我最后还是成功地安装了 cuda9.0。
当我出现这个错误后,我没有选择另外的版本进行安装,而是按照某个网友的解决方案,使用 aptitude 来安装,所以使用命令 sudo aptitude install cuda 来开始安装 cuda,没错一切又开始正常运行了。如果没有安装 aptitude,需要先安装: sudo apt install aptitude。
无论正常使用 apt 还是使用 aptitude 进行 cuda 的安装,中途都不会出现任何提示,如果你提前安装了显卡驱动的话,会粗暴地给你卸载掉,然后安装 cuda 自带的显卡驱动。所以在安装过程中会弹出一个淡紫色(不能确定是否记错)的提示框,会告诉你一堆东西,然后确定就可以了,然后会让你输入一个密码,输入完之后,会要求重复输入密码进行确认。都确定完之后,会继续进行 cuda 的安装。静待安装完成。安装完成后将 cuda 安装路径写入 PATH,打开用户配置文件 gedit ~/.bashrc,然后 将以下内容加到 .bashrc 文件的最后:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
可以使用 echo $PATH 命令查看系统中的 PATH 变量,对 LD_LIBRARY_PATH 同样适用。
安装完之后需要重启电脑,这次重启十分重要。因为一开始会出现一个蓝色的界面,问你是否进入什么 enroll mok,这时候千万要选是,进入这个,然后会问你是否 view mok key,选择是,然后好像就可以看到一些东西,这时候要输入你安装 cuda 时设置的密码(我记不得这个输入密码的步骤在前还是在后,但一定要输入的),然后选择 continue,然后 reboot,重启电脑,然后在设置里面查看计算机的详细信息可以看到使用的图形卡是 NVIDIA 的显卡,而不是集成显卡了。这时候使用 nvidia-smi 指令即可查看 gpu 信息。整个过程中我觉得重启这个步骤最重要。
如果想确认是否成功安装 cuda,可以验证一下跑 cuda 自带的样例的结果。因为 Ubuntu 18.04 自带的 gcc g++ 版本号是 7,而 cuda9.0 不能使用高于 6.0 版本的 gcc 进行编译(如果我没记错的话),反正想要验证就必须将 gcc 版本降级。首先安装你喜欢的低级的 gcc 版本,我安装的是:sudo apt install gcc-5 g++-5。然后使用如下的指令对不同的 gcc g++ 版本指定优先程度:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 70,sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50。这里我指定 gcc-5 的分数为 70,gcc-7 分数为 50。对 g++ 使用相同的命令,将 gcc 替换成 g++ 就行。使用 update-alternatives --config gcc 命令可以查看当前多版本 gcc 的情况,对 g++ 也是一样。这时候再使用 gcc --version 命令查看,可以看到当前 gcc 默认版本为 5.5.0。
这时候进入 cuda 的安装目录,cd /usr/local/cuda,如果不知道 cuda 安装目录的话可以使用 whereis cuda 命令进行查看。然后进入 cuda 安装目录下的 samples 目录,cd ./samples,然后使用 sudo make 命令开始所有样例的编译环节,这会花很长的时间。等到编译完成,进入 samples 下的 bin 文件夹,然后一路进入,直到存储编译结果的文件夹,我这里是 /usr/local/cuda/samples/bin/×86_64/linux/release,然后随便选择一个文件,例如旗下的 deviceQuery 文件,终端输入 ./deviceQuery 便可以看到输出内容,最后显示 Result = PASS 表示编译成功,也预示着 cuda 安装成功。
在终端输入 nvidia-smi 命令可以看到 gpu 的具体使用情况,也可以看到使用的显卡驱动号,我这里 cuda 给我安装的是版本号为 390.77 的显卡驱动。nvidia-smi 命令很重要,因为我们可以根据这个指令确定 gpu 还不是处于满负荷状态,所以训练模型的时候 就可以根据这个命令的显示信息进行 batch 的设置等等。然后接下来就是其他组件的安装。
我首先安装了一个 miniconda,miniconda 安装实在不要太简单,安装过程中指定安装目录即可。然后打开新的终端,可以查看 conda 的信息,例如 conda --version。然后使用命令:conda create --name tensorflow-gpu python=3.6 创建一个名为 tensorflow-gpu 的环境,这里的 Python 版本千万不能选择很低的版本,也不能选择 Python 3.7,否则后续无法安装 tensorflow-gpu 版本,各个 tensorflow 需要的 Python 版本详见给出的第一个链接。这里不在创建环境的同时安装 tensorflow,因为 conda 源速度很慢,我也没有试过更改 conda 的下载源,当然也可以在修改下载源后直接在创建环境时安装 tensorflow,这样的话 conda 会自动给我们配置各种依赖。如果修改了 conda 的下载源,可以这样安装 tensorflow:conda create --name tensorflow-gpu python=3.6 tensorflow-gpu,这时候会自动安装 tensorflow-gpu 版本。针对第一种情况,也就是我的做法,只会安装 Python 和一些简单的包,很快就创建完毕。打开新的终端,使用命令:source activate tensorflow-gpu 就可以激活我们创建的 tensorflow-gpu 环境。然后使用 pip 来进行 tensorflow 的安装:pip install tensorflow-gpu,这会自动安装 1.12 版本的 gpu 版本的 tensorflow 和对应的 numpy 库。安装成功后使用 python 进入 Python 环境,然后 import tensorflow,会出现 cudnn.so(好像是这个)缺失的错误,此时需要安装 cudnn。我下载的是 cudnn 的压缩包,而不是 deb 包。进入解压后的 cudnn 目录,然后使用以下命令进行 cudnn 的安装:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
我看到有的人还加上了这个命令:sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*,我不知道有没有必要,但是使用了肯定是没错的。
这时候重新进入 Python 环境,import tensorflow 就不会出错了。而且第一次导入时会出现很多信息,其中就包括使用的 gpu 的信息。这时候进行简单的测试,可以知道 tensorflow-gpu 版本安装成功。
按照我的安装过程,可以知道此时系统中存在 3 个版本的 Python,系统自带的,miniconda 安装的,以及 tensorflow-gpu 环境下的。如果需要使用不同的 Python 进行工作,需要对不同的 Python 进行别名的设置。其中 tensorflow-gpu 环境下的 Python 不用管,因为需要使用 source activate tensorflow-gpu 命令激活环境后才能使用,此时输入 Python 进入的就是此环境下的 Python 环境。如果你的计算机自带的 Python 版本和你安装到 tensorflow-gpu 中的 Python 版本是一样的,你可能会发现在 tensorflow-gpu 环境下的 pip 来源于系统中的 pip,但是不用理会,这时候使用 pip 安装的包会处于 tensorflow-gpu 环境中,而不是系统中。系统中一开始是不会自带 pip 的,需要使用 sudo apt install python3-pip 进行简单的安装,如果没有更新过仓库,安装的 pip 版本可能很低,可以进行升级,升级后使用 pip 可能会出现错误:Import Error: cannot import name main,这时候需要修改系统中的文件,sudo gedit /usr/bin/pip3,将其中的 from pip import main 修改成 from pip._internal import main 即可。话题扯远了,当没有激活 tensorflow-gpu 环境时,系统中存在两个 Python 版本,而且 miniconda 下的 Python 好像会覆盖掉系统自带的 Python,所以使用别名机制,打开配置文件:gedit ~/.bashrc,然后可以在末尾添加如下指令:
alias python3=/usr/bin/python3.6
alias pip3=/usr/bin/pip3
alias python3-conda=/home/xyf/Install/miniconda3/bin/python3.7
alias pip3-conda=/home/xyf/Install/miniconda3/bin/pip
这时候在终端中输入 python3 使用的就是系统自带的 Python,输入 python3-conda 使用的就是 miniconda 中的 Python。pip 同理。如果激活了 tensorflow-gpu 环境后需要退出该环境,最简单粗暴的方法就是直接关闭该终端,温和一点的方法是使用指令:source deactivate tensorflow-gpu。如果需要在每次启动终端时自动激活 tensorflow-gpu 环境,可以在 .bashrc 文件的最后加上:source activate tensorflow-gpu 即可,每次打开终端自动读取配置文件 ~/.bashrc 文件,所以会自动激活 tensorflow-gpu 环境。
最后说明一点,默认 pip 下载源实在太慢,需要更改默认下载源。在 home 目录下,也就是用户目录下:mkdir .pip,然后 cd ~/.pip,然后 gedit ./pip.conf,在 pip.conf 中加上自己喜欢的源即可,这里我:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple
喜欢其他源的将 https://mirrors.aliyun.com/pypi/simple 进行替换即可。
记录:Ubuntu 18.04 安装 tensorflow-gpu 版本的更多相关文章
- 深度学习应用系列(一)| 在Ubuntu 18.04安装tensorflow 1.10 GPU版本
tensorflow目前已经升级至r1.10版本.在之前的深度学习中,我是在MAC的虚拟机上跑CPU版本的tensorflow程序,当数据量变大后,tensorflow跑的非常慢,在内存不足情况下,又 ...
- 真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用)【转】
本文转载自:https://blog.csdn.net/u010801439/article/details/80483036 ubuntu 18.04 安装GPU +CUDA+cuDNN : 目前, ...
- Ubuntu 18.04安装MongoDB 4.0(社区版)
Ubuntu 18.04(虚拟机VirtualBox上),MongoDB 4.0, 听室友说,23点有世界杯决赛呢!可是,孤要写博文的啊!以记录这忙乱的下午和晚间成功安装了一个软件到Linux上.—— ...
- [笔记] Ubuntu 18.04安装Docker CE及NVIDIA Container Toolkit流程
之前写的[笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程已经out了,以这篇为准. Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心 ...
- 如何在Ubuntu 18.04安装Git
在Ubuntu 18.04安装Git 更新apt包列表 apt-get update -y apt-get upgrade -y 安装Git: apt install git 检查Git版本 git ...
- 在Ubuntu 18.04 安装 MySQL 8.0
在Ubuntu 18.04 安装 MySQL 8.0 ① 登入 mysql 官网,在官网中下载 deb 包,点击该链接,即可下载. https://dev.mysql.com/downloads/re ...
- Ubuntu 18.04 安装和常用软件安装
Ubuntu 18.04 安装 下载 Ubuntu 制作 U 盘启动盘 设置电脑为 U 盘启动 插入 U 盘,重启电脑 按照提示安装 Ubuntu 更新 NVIDIA 显卡和 Broadcom 无线网 ...
- [笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程
Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心弄崩Host的环境. 而nvidia-docker2的好处是NVidia帮你配好了Host和Container之间的CUDA相 ...
- Ubuntu 18.04安装Samba服务器及配置
Ubuntu 18.04安装Samba服务器及配置 局域网下使用samba服务在Linux系统与Windows系统直接共享文件是一项很方便的操作.以Ubuntu为例配置samba服务,Linux服务器 ...
- Ubuntu 18.04安装配置Apache Ant
Ubuntu 18.04安装配置Apache Ant 文章目录 Ubuntu 18.04安装配置Apache Ant 下载 执行以下命令 `/etc/profile`中配置环境变量 载入配置 测试 执 ...
随机推荐
- 【爬坑】运行 Hadoop 的 MapReduce 示例卡住了
1. 问题说明 在以伪分布式模式运行 Hadoop 自带的 MapReduce 示例,卡在了 Running job ,如图所示 2. 解决过程 查看日志没得到有用的信息 再次确认配置信息没有错误信息 ...
- kubeadm快速部署Kubernetes单节点
1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬 ...
- SDN 第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- 团队作业——Beta冲刺3
团队作业--Beta冲刺 冲刺任务安排 杨光海天 今日任务:浏览详情界面的开发 明日任务:浏览详情界面的开发 吴松青 今日任务:与队长一同进行图片详情的开发,接触了一些自己没接触过的知识点并向队友学习 ...
- Metabase在Windows下的开发环境配置
Metabase在Windows下的开发环境配置 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} Metabase在Wind ...
- 搞死人的contextRoot;weblogic9.2
默认情况下: 两个app-deployment同时部署到了一台weblogic服务器的同一个domain下面的时候 /mysite/www/www/WEB-INF/weblogic.xml /mysi ...
- canal数据同步目录
我们公司对于数据同步有以下需求 1.多个mysql库中有一些基础表需要数据统一,mysql跨库同步 2.mysql热数据加载到redis 3.全文检索需要mysql同步到es 4.数据变更是附属的其它 ...
- ArcGIS中的坐标系统定义与投影转换方法
坐标系统是GIS数据重要的数学基础,用于表示地理要素.图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正确的显示其位置.方向和距离,缺少坐标系统的GIS数据是不完善的,因此在ArcGI ...
- OpenCV——视频操作基础
读入视频: VideoCapture 类 //方法一 VideoCapture capture; capture.open("test.avi"); //方法二 VideoCapt ...
- CSS3页面布局方案
CSS3页面布局方案 Web页面中的布局,在css3之前,主要使用float属性或者position属性进行页面中的简单布局,但是使用它们也存在一些缺点,比如两栏或者多栏中如果元素的内容高度不一致,则 ...