- 安装cuda9.0
- 安装cudnn7.5
- 安装 pytorch1.1(建议基于conda来 装)
- Errors
- 快捷键 tips
1、安装cuda9.0
方法1:安装cuda9.0
- 卸载原来的cuda
在Ubuntu16.04下安装CUDA的过程并不简单,小白即使看着官方文档也很容易出错,比如说安装CUDA8.0(在线安装)时,对着文档一步步安装下来都没有问题,在最后一条指令执行时:
- sudo apt-get install cuda
你可能会猛然发现终端上显示安装的愕然都是CUDA10.0(也就是最新版本),等到安装结束,你再仔细一看,还确实是安装了10.0。于是就开始抓头自问“不对呀,我明明是照着文档安装下来的呀,怎么就变成10.0的了?!”
原来是安装CUDA的时候,版本自动帮你替换成了最新版(该怎么说呢?!!真是谢谢您了lol)。
解决办法,在上面那条指令后面加上版本号,完整指令就是(以安装CUDA9.0为例子):
sudo apt-get install cuda-9.0
- 完美安装CUDA9.0
下面回归正题:
卸载方法(图1)
- 打开终端,输入以下指令
sudo apt-get remove cuda
sudo apt autoremove
sudo apt-get remove cuda*
- 然后将终端运行目录切换到/usr/local/下
cd /usr/local/
- 输入dir指令:
dir
可能会看到一个"cuda"或者“cuda-10.0”文件夹,再或者两者都有。
输入指令删除残留的文件夹(以下指令以删除“cuda-10.0”文件夹为例)
sudo rm -r cuda-10.0
图1
方法2:安装cuda9.0
-
cudatoolkit下载网址:
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal -
选择版本:
NVIDIA-Linux-x86_64-410.73.run => cudatoolkit -
cuda下载网址:
https://conda.anaconda.org/pytorch/linux-64
见图2(!!!注意除了不安装驱动,其他都yes!!!)
图2
-
查看cuda版本1:nvcc --version
见图3
图3
-
查看cuda版本2: cat /usr/local/cuda/version.txt
见图4
图4
2、安装cudnn 7.5
- 首先下载 cudnn7 下载路径,适合自己cuda的版本(下载 cudnn7 需要登陆 NVIDIA ,没有 NVIDIA 账号的注册一个就行了。)下载 tgz 压缩文件。我选择的是cuda9.0 cudnn7.5.0 中的 cudnn library for Linux文件。见下图5
网站:
https://developer.nvidia.com/rdp/cudnn-archive
图5
- 首先解压 tgz 压缩文件:
- 接着复制文件到 cuda 路径下:
$ 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*
- 复制完成然后使用命令,可以看到输出相应的 cuda 和 cudnn 的版本信息
$ nvcc -V
- 查看cudnn版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
3、pytorch & torchvision
https://pytorch.org/
pytorch
- 下载对应的 pytorch & torchvision
- 下载对应的 pytorch & torchvision 的 网站:
https://conda.anaconda.org/pytorch/linux-64
注:版本一定要与电脑中的cuda版本对应
以上下载完了之后,我发现我并没有讲pytorch安装在python3.6下,而是安装在了python3.5下。后来我又卸载了,用conda创建了python3.6的环境来安装的。
-
conda install yaml # 否则 在mmdection 的python setup.py install 会有 fatal error
-
用conda创建自己的虚拟环境,这样就不会出现安装串位。
conda create -n mmdetection python=3.6 -
激活环境
source activate mmdetection -
安装PyTorch 1.1
conda install pytorch=1.1.0 torchvision cudatoolkit=9.0 -c pytorch
因为没有镜像源,所以,用外源下载的有点慢。。。
-
安装好以后,进入Python环境,输入以下代码测试是否安装成功,不报错则说明安装成功
import torch
import torchvision
print(torch.version)#输出PyTorch版本
4、Errors:
- error1:
解决方法:
cd /home/njaudata/.local/lib/python3.6/site-packages/torch/ 目录下打开终端 ls
发现 _C.cpython-36m-x86_64-linux-gnu.so, _dl.cpython-36m-x86_64-linux-gnu.so两个so文件的文件名都太长了,需要进行修改。
采用cp 的方式复制两个文件:
/usr/local/lib/python3.5/dist-packages/torch/$ sudo cp _C.cpython-36m-x86_64-linux-gnu.so _C.so
/usr/local/lib/python3.5/dist-packages/torch/$ sudo cp _dl.cpython-36m-x86_64-linux-gnu.so _dl.so
结束后出现下图
https://blog.csdn.net/sparkexpert/article/details/77675581?locationNum=7&fps=1
这个博主写的很好。
- error2:
libmkl_intel_lp64.so: cannot open shared object file: No such file or directory
libmkl_intel_lp64.so是一个动态链接库文件,系统找不到。
解决方法:
- 搜索该文件路径
$ sudo find /home -name libmkl_intel_lp64.so
如果这个文件确实存在,就会显示它的路径,如:/home/xxx/anaconda3/lib/libmkl_intel_lp64.so - 将上一步搜索出来的路径添加到环境变量
先打开当前用户环境变量配置文件bashrc
$ sudo gedit ./.bashrc - 在最后面添加一行:
export LD_LIBRARY_PATH=/home/xxx/anaconda3/lib:$LD_LIBRARY_PATH
注:路径就是上一步搜索出来的路径。
-
更新环境变量配置文件并显示
$ source ./.bashrc
$ echo $LD_LIBRARY_PATH
注:如果更新不了的话,此处需要重起。 -
error3:
ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath’
numpy是一个基础的数组计算包,pytorch、Tensorflow、 tensorboard、Keras-Preprocessing、h5py、pandas等一系列常用的第三方库都需要numpy的支持。这里提示numpy.core._multiarray_umath failed to import和numpy.core.umath failed to import ,得知无法正常import tensorflow 的原因是numpy库的引用出了问题。
解决方法:
-
方法1:
pip install --user --upgrade numpy #将numpy更新到最新版本 -
方法2:
:1、 pip install --upgrade --force-reinstall numpy1.14.5 #重新安装合适的numpy版本
or
2、pip install numpy1.16
亲测1.14.5版本和1.16版本的numpy可以fix这个error。
5、 快捷键 tips:
-
conda虚拟环境:
conda create -n envname conda -
激活虚拟环境:
source activate envname conda -
退出虚拟环境:
source deactivate conda -
列出所有虚拟环境:
conda env list conda -
克隆虚拟环境:
conda create -n envname --clone evnname1 conda -
删除虚拟环境:
conda remove -n envname --all conda -
虚拟环境安装包:
conda install -n envname package,
例如:conda install -n envnam -
查看python版本
方法一:
python -V
注意:‘-V‘中‘V’为大写字母,只有一个‘-’
方法二:
python --version
注意:‘–version’中有两个‘-’
-
查看python安装位置
方法一:
python -c “import sys; print sys.executable”
方法二:
python -c “import os; print os.sys.executable”
python -c “import os; path = os.sys.executable;folder=path[0 : path.rfind(os.sep)]; print folder” -
查看Numpy版本
python -c “import numpy; print numpy.version.version”
或
python -c “import numpy; print numpy.version” -
查看Numpy安装路径
python -c “import numpy; print numpy.file”