为了让后来的汉子不踩坑,本人此处打的是情怀牌,尽量会写详细点~
有借鉴文章Ubuntu下安装TensorFlow的最简单方法(无需手动安装CUDA和cuDNN),但还是有几处需要注意的地方,以下奉上我的一波操作~
本文适用于 Ubuntu 16.04 ;至于18.04版本,我还没有尝试过,尝试过会写在这里~
本文包含内容:
如何安装显卡驱动
如何安装 Anaconda
如何安装TensorFlow(无需手动安装 CUDA 和 cuDNN )
如何远程运行Jupyter Notebook(可选,但超有用)
本文不适用范围
如果你租用云服务器,直接使用服务商提供的深度学习专用镜像即可。
如果你使用的是 RTX 系列显卡,你得基于CUDA 10.0自行编译TensorFlow。因为截至本文发布时(18年11月),TensorFlow都没有官方支持 CUDA 10.0,而 RTX 显卡使用 CUDA 9.x 会偶现迷之报错。(我踩了很多坑才编译成功,会在近期写篇文章。)
0、先更新一下系统:
sudo apt-get update
sudo apt-get upgrade
(备注:第二个命令运行时间可能会有点久,请平躺做好心理准备~)
1、打开终端,添加开源显驱仓库:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
2、安装一些依赖
sudo apt-get install dkms synaptic build-essential
打开系统的 Software&Update工具,选择 Additional Drivers,此时你会看到可以下载的显卡驱动。然后根据自己的显卡,在官网找到对应的驱动程序版本,看下 Additional Drivers里有没有对应的版本,如果有,安装之~,如果没有,请自行探索,哈哈~
驱动安装完成后,重启计算机。
3、检查驱动是否安装成功,在命令行输入:
nvidia-smi
看到显卡当前的状态,例如温度、显存占用情况等,说明驱动安装成功了。顺便说个小技巧,如果你在跑模型时想监控显卡的温度,也可以用这个命令:
watch -n 1 nvidia-smi # 1表示每1秒刷新一次
4、不要自行安装CUDA和cuDNN
除非你打算安装CUDA 10.0并自行编译 TensorFlow 或 PyTorch ,否则不要自行安装 CUDA 和 cuDNN!因为版本兼容问题是个大坑,而网上很多教程却避而不谈。其实最简单稳妥的办法就是通过 Anaconda 安装 TensorFlow ,让它来安装正确的依赖 —— 例如 CUDA 和 cuDNN。
5、安装 Anaconda
Anaconda 是数据科学家的必备神器,而我们使用它安装 TensorFlow 的原因是:
一、自动安装正确版本的依赖;
二、环境管理 —— PyTorch 和 TensorFlow 依赖的CUDA版本不一致也没关系;
三、首先下载Anaconda,这里我附上我网盘里的资源(链接: https://pan.baidu.com/s/1JUV6Wpx1Zzga4Iyi0RBp9g 提取码: ah9m ),没错,我把这个安装包转到了云端,用这个软件(http://pandownload.com/)下载会比较快哈~
(备注:我是在windows上下载的,然后用U盘放在了Ubuntu的download文件夹下)
四、安装Anaconda
bash ~/Downloads/Anaconda3-5.3.0-Linux-x86_64.sh #如果你下载的是3.7版
6、安装好Anaconda之后,我们先为TensorFlow创建一个新的环境:
# 如果你安装的是 Python 3.7 版的Anaconda,则需要声明新创建的环境使用 Python 3.6:
conda create --name tf_gpu_env python=3.6 anaconda tensorflow-gpu
(备注1:此处小女子我碰到了一个错误:conda:未找到命令;此处的解决方法为: export PATH=~/anaconda3/bin:$PATH)
(备注2:由于执行了上面这个命令之后,附加包下载让我等了足足6个小时,现已解决这个问题,各位汉子看好,在命令行运行:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda create --name tf_gpu_env python=3.6 anaconda tensorflow-gpu
这样用不了多久,就可以快乐的进行下一步啦~)
Anaconda会自动安装TensorFlow所需依赖,包含正确版本的CUDA和cuDNN。安装完成后,我们启动这个环境:
source activate tf_gpu_env
现在可以愉快的跑模型啦~
别忘了每次开机后都要手动启动这个环境啊,如果你想退出当前环境,只需:
source deactivate
7、如果你在 Jupyter Notebook 引入TensorFlow 时引起报错 `No module named 'tensorflow' ` :
我们来逐步排查原因,首先关闭 Jupyter Notebook,直接在 tf_gpu_env 的环境中进行以下操作。
7.1. 排除 Jupyter Notebook 的嫌疑
启动 python
python
然后
import tensorflow
如果没有问题,那么说明是 Jupyter Notebook 的问题。这通常是因为 Jupyter Notebook 没有读取到正确的环境路径。退出 python 后,在当前环境下重装 Jupyter Notebook 就好了。
conda install jupyter notebook
7.2. 如果在 python 命令行中就无法引入 TensorFlow
这可能是因为你曾经用 pip 安装过 TensorFlow 导致的,解决方法是在当前环境中强行重装 TensorFlow:
pip install --ignore-installed tensorflow-gpu
8. 远程运行 Jupyter Notebook(可选,但超有用)
最后,分享一个很酷的小技巧。你已经搭建好一台高性能的深度学习PC了,但如果你已经习惯了自己的笔记本电脑,希望继续在上面做开发怎么办?
你可以将这台PC看作远端服务器,然后把笔记本的8888端口(Jupyter Notebook默认端口)转发到服务器的8888端口。这样一来,你就能直接在笔记本上访问 http://localhost:8888 使用运行在服务器上的 Jupyter Notebook。具体方法是:
先用笔记本SSH上服务器:
$笔记本: ssh @ # 这里填上服务器的内网IP
接着在服务器启动 Jupyter Notebook:
$服务器: source activate tf_gpu_env # 别忘了启动Anaconda的环境$服务器: jupyter notebook
然后在笔记本的终端上新开一个tab,设置端口转发:
$笔记本: ssh -NL 8888:localhost:8888 @
现在打开笔记本的浏览器,访问 http://localhost:8888 即可访问运行在服务器上的 Jupyter Notebook 了!
你还可以拔掉PC上的视频线,Ubuntu 将不会启动图形化界面,这能节省下大约8%~10%的显存,从而把显存全用在跑模型上。
以上方法要求笔记本和服务器在同一个局域网内,如果你想真·远程运行 Jupyter Notebook,还需要不少工作,针对这个我暂时还没去作死尝试,等我走一遍之后再分享给大家。
备注:第二天我又碰到了上面的一个问题:找不到conda命令!
解决办法:
打开bashrc文件(该文件为隐藏文件)
输入如下命令
$ vim ~/.bashrc
3.在该文件最后添加
export PATH=~/anaconda3/bin:$PATH
4.保存bashrc文件
5.运行如下命令,更新该文件
输入如下命令
$ source ~/.bashrc
6.测试是否安装成功
输入如下命令
$ conda --v
如果出现conda版本则成功。
Happy Hacking!
到此,我的操作完毕,总的说来还算比较开心,如果各位还出现其他问题,不妨到本文开头看看我借鉴的文章有没有写哈~,如果没有写,欢迎来留言~