前序安装步骤请参考
Ubuntu下NVIDIA driver+CUDA+cuDNN安装踩坑记录
安装anaconda
- 下载 anaconda
在https://repo.continuum.io/archive/上查找目前可以下载的Anaconda版本。
我的一台工作站选择了最新的Anaconda3-2019.10-Linux-x86_64.sh,另外两条则选择了 Anaconda3-5.2.0-Linux-x86_64.sh。
5.2.0 自带的python版本是3.6, 而之后的版本则支持python3.7。在文末的踩坑记录里会讲到这个python版本会带来许多麻烦。
wget https://repo.continuum.io/archive/Anaconda3-2019.10-Linux-x86_64.sh
wget https://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh
- 安装anaconda
sudo sh Anaconda3-4.3.1-Linux-x86_64.sh
一路回车+yes即可,最后确认将路径加入用户的.bashrc中。
最后一步如果忘记点yes ,需要手动在~/bashrc 中手动添加 export PATH=/home/ubuntu/anaconda2/bin:$PATH
- 生效.bashrc
source .bashrc
创建python 3的独立环境
创建 python3的独立环境
conda create -n python3-tensorflow-gpu python=3.7
报错
这是因为没有权限访问目录,须在conda命令前加上sudo再次尝试。
sudo conda create -n python3-tensorflow-gpu python=3.7
依旧报错Command not found。网上查了一下文档,原因是编译sudo的时候加入了–with-secure-path 选项。解决方案如下。
vim ~/.bashrc
编辑.bashrc里添加以下内容。
alias sudo="sudo env PATH=$PATH"
再执行soruce让改动生效,再次运行使用sudo conda来创建新环境就成功了。
source ~/.bashrc
sudo conda create -n python3-tensorflow-gpu python=3.7
启动创建的环境。
source activate python3-tensorflow-gpu
安装tensorflow-gpu
查看tensorflow 的版本信息
anaconda show anaconda/tensorflow
安装 tensorflow。tensorflow 是cpu版本,而tensorflow-gpu是gpu版本。目前tensorflow最新版本是2.0,tensorflow2.0和之前1.x版本的差异比较大,老的tensorflow1.x的代码在2.0上函数不兼容,跑不起来,因此选择安装版本1.14.0。
sudo conda install --channel https://conda.anaconda.org/anaconda tensorflow-gpu=1.14.0
安装 opencv,matplotlib,pillow, jupyter notebook, nb_conda, pillow, pydot, graphviz。这次安装倒是一切顺利。值得一提的是
sudo conda install numpy pandas jupyter notebook matplotlib cython nb_conda pillow pydot graphviz
配置 Jupyter Notebook
jupyter notebook --generate-config
Writing default config to: /home/ubuntu/.jupyter/jupyter_notebook_config.py
jupyter notebook password
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to /home/ubuntu/.jupyter/jupyter_notebook_config.json
vim ~/.jupyter/jupyter_notebook_config.py
编辑配置文件里的以下内容
c = get_config()
# Kernel config
# if you want plotting support always in your notebook
c.IPKernelApp.pylab = 'inline'
# Notebook config
c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' #location of your certificate file
c.NotebookApp.ip = '*'
#so that the ipython notebook does not opens up a browser by default
c.NotebookApp.open_browser = False
#the encrypted password we generated above
c.NotebookApp.password = u'sha1:68c136a5b064...'
# It is a good idea to put it on a known, fixed port
c.NotebookApp.port = 8888
修改好配置文件,创建一个jupyter notebook启动Home目录,就叫Notebooks吧,进入该目录后启动jupyter notebook即可。
mkdir Notebooks
cd Notebooks
jupyter notebook
在另外一台window电脑的浏览器里输入
http://[workstation的ip地址]:8888/tree
即可以看到输入密码的提示,登录jupyter notebook,大功告成。
要再后台运行jupyter notebook, 不会因为ssh的断开连接而意外关闭jupyter notebook,可以使用nohup来启动jupyter notebook。
nohup jupyter notebook> /dev/null 2>&1 &
要关闭jupyter notebook则可以使用ps来查看进程id,在kill进程。
ps -ef | grep 'jupyter notebook'
输出
hadoop 22136 21983 0 09:10 pts/1 00:00:00 grep jupyter notebook
这里21983就是进程号。
kill -9 21983
此时浏览器无法再连接jupyter notebook了。
踩坑总结
- 在完成jupyter notebook配置后, 无法远程访问
查看了非常多的网上资料,始终没有找到合适的方法。浏览器提示是远程端口存在,但没有响应,因此怀疑是防火墙的原因,于是网上查到关闭防火墙的命令如下。
sudo systemctl stop firewalld.service
关闭防火墙后,在启动jupyter notebook,问题解决。
- ** anaconda 权限问题**
我的一台工作站是直接在其他人安装好的ubuntu系统上继续设置的。在安装完了anaconda后发现在使用conda install时总是出现权限问题,必须使用sudo conda install才能可以成功,但是其他的工作站上却没有这个问题。
我仔细回想了一下,这条工作站上的ubuntu是我后来建的,并且赋予了root权限。使用ll查看anaconda的安装目录 anaconda3,发现该目录的owner是root而不是ubuntu。而在其他工作站上,anaconda3的owner都是ubuntu。于是便怀疑这可能就是导致权限不足的原因,使用以下命令更改anaconda3的目录owner,问题解决了。
sudo chown -R ubuntu:ubuntu anaconda3
- Tensorflow 和 Python的兼容问题
我最初安装的Python环境是3.7, Tensorflow是1.16。但是因为CUDA9.0和Tensorflow的兼容问题,我不得不把Tensorflow降到了1.12, 但是却无论如何装不上Tensorflow。网上查了一下资料,发现Tensorflow1.12最高仅支持Python3.6,实际上tensorflow1.13.1之前的所有版本都不支持python3.7。因此,卸载了python3.7的环境,重新创建了Python3.6的环境,再次安装Tensorflow 1.12
以下信息引用于 https://www.jianshu.com/p/464fefb5c5d8
- Tensorflow不使用GPU运算
之前我有提过我安装的三台工作站分布是三块不同的显卡,其中有一块是非常老的 型号 Quadro 2000。就是这台工作站在完成了所有安装之后,跑Tensorflow代码是却不使用GPU。一度以为是驱动安装的问题,但用nvidia-smi命令查看驱动正常。后来,查Tensorflow的资料才发现Tensorflow使用GPU需要GPU的算力在3.0以上。而我这块老显卡的GPU算力仅2.1,因此就不会被Tensorflow使用。
以下链接可以查看老版本的nvidia显卡算力。
https://developer.nvidia.com/cuda-legacy-gpus
- Windows 下后台启动jupyter notebook
start /b jupyter notebook >nul 2>nul
- Windows 下查看运行中的jupytet notebook
jupyter notebook list
> Currently running servers:
> http://localhost:8888/ :: C:\Users\wangdi\notebook
- Windows 下停止运行中的jupytet notebook
jupyter notebook stop <port>
- 添加jupyter lab中的环境
conda install ipykernel
python -m ipykernel install --user --name <my_env> --display-name "Python (<my_env>)"
- 移除jupyter lab中的环境
# List all kernels and grap the name of the kernel you want to remove
jupyter kernelspec list
# Remove it
jupyter kernelspec remove <kernel_name>