上一节内容,我已经分享了一些资料,感兴趣的可以点击这个1. 这篇文章的主要内容是:安装过程中出现的问题及解决方案 2. 接下来第一部分,第二部分是CPU,第三部分是GPU,我相信一部分人都是先以CPU配置,熟悉一段时间换成GPU,有个渐进的过程,相对而言,有了CPU的配置基础GPU配置会很容易,同时第一部分,第二部分涉及GPU的地方会埋下伏笔,兼顾只考虑GPU的同事。
目录
- 1 快速下载Anaconda3/Miniconda
- 1.1 配置PyPI镜像
- 1.2 ERROR: unknown command "config"
- 1.3 conda env create -f environment.yml (CPU/GPU)?
- 1.4 CondaValueError: prefix already exists: xxx
- 1.5 后台运行Jupter notebook
- 1.5.1 我的jupyter notebook启动失败?
- 1.5.2 我的jupyter notebook没有执行,只能阅读?
- 1.5.3 为了更方便的使用,我弄了一个脚本
- 2 PyCharm的工程建立
- 2.1 多个python环境对后续的操作到底有没有影响?
- 2.2 PyCharm配置mxnet(gluon)
- 2.3 mxnet解释器路径在哪?
- 2.4 PyCharm中matplot画不了图?
- 3 GPU配置请看这儿,建议先看上面
- 3.1 Nvidia显卡,CUDA,CUDNN?
- 3.1.1 根据显卡型号安装合适Nvidia驱动
- 3.1.2 选择合适的CUDA版本
- 3.1.3 将CUDA加入系统库路径下
- 3.2 安装GPU的MXNet
- 3.2.1 选择合适的(MXNet)GPU
- 3.2.2 修改environment.yml
- 3.2.3 很不幸,需要重新装jupyter notebook见上
- 3.4 Pycharm导入CUDA
- 3.4.1 libcudart.so.xxx: cannot open shared object file: No such file or directory
- 3.4.3 可以用上面的测试案例试试Pycharm,有问题请留言。
1 快速下载Anaconda3/Miniconda
高效是我们最喜欢的,下载太慢很头疼。为此,我给大家推荐清华镜像源,速度-你网速有多快下载就有多快,给大家一个思路,想要下载什么软件可以先到清华镜像源上搜索下,没有的话再到官网下载。清华镜像源: https://mirrors.tuna.tsinghua.edu.cn选择一个合适的版本,右键复制链接,用wget即可
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.10-Linux-x86_64.sh
注意:
- 推荐用Anaconda而不是Miniconda,因为假如瘦conda没有相应的软件,会在线下载,有些麻烦啊。
- 安装到最后一定要选yes,将conda加入环境变量中。更新环境变量直接输入bash即可。
1.1 配置PyPI镜像
国内用户可以,用如下命令加速下载
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
取消可以使用
pip config unset global.index-url
1.2 ERROR: unknown command “config”
原因:pip版本太低,必须升级到10.0.0版本以上,安装Anaconda2很可能出现这个问题,建议使用Anaconda3。解决方法:使用下面的升级命令,反复到最新版
conda update pip
1.3 conda env create -f environment.yml (CPU/GPU)?
CPU/GPU最大的区别应该是这个命令,这一步决定了你将使用CPU还是GPU,是重要的一步。 对于CPU配置:直接跳过,看1.4即可 对于GPU配置: 可以看第三部分,因为前面两部分是CPU配置,这里加进来GPU会使CPU读者抓不住重点!!! 对于第一次CPU配置接着想用GPU了,不用担心工作会白做了,在第三部分中会谈到一些细节。
1.4 CondaValueError: prefix already exists: xxx
原因:多次使用命令conda env create -f environment.yml。这个东西蛮有意思的,等会还要提到,特别注意后面提及的文件路径。
解决方法:到提示的文件路径下,将gluon文件夹删除,重新执行conda env create -f environment.yml。
注意:
这个命令需要等一段时间,因为它要下载一些文件,不要中途终止它。environment.yml文件已经指出了。
1.5 后台运行Jupter notebook
注意:你应该提前安装notedown插件
pip install https://github.com/mli/notedown/tarball/master
每次开启新的终端都要执行下面两句命令,不然会报错
conda activate gluon # 若conda版本低于4.4,使用命令activate gluon
# 启动jupyter notebook
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager' &
注意:最好使用后台执行,即&,关于前后台的使用,请看这儿 还有一个方便的理由是:即使你不小心关闭了浏览器,这时终端会出现相关提示,直接重新打开浏览器进入即可。
1.5.1 我的jupyter notebook启动失败?
这是因为没有执行conda activate gluon
1.5.2 我的jupyter notebook没有执行,只能阅读?
这是因为没有加--NotebookApp.contents_manager_class='notedown.NotedownContentsManager',记得加上。 为了简便,直接配置jupyter notebook文件。
# 一次性配置,以后直接输入jupyter notebook即可。
jupyter notebook --generate-config # 根据提示生成的文件路径,打开,末尾加上下面代码
c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'
1.5.3 为了更方便的使用,我弄了一个脚本
注意:上一步配置是必要的
#! /bin/sh
conda activate gluon # 若conda版本低于4.4,使用命令activate gluon
jupyter notebook &
这里的执行蛮有意思的,将脚本保存成xxx.sh,执行命令. xxx.sh,注意中间要有一个空格。脚本执行完成后所有的环境信息会被全部删除,就像函数调用,为了使得子脚本的环境作用于父bash,必须使用这种特殊的语法。
2 PyCharm的工程建立
虽然jupyter notebook中的cel可以执行python命令,但是有一个IDE总会方便些。下面我分享下遇到的一些问题。
2.1 多个python环境对后续的操作到底有没有影响?
针对Ubuntu而言,我想影响并不大,很多人环境里有python2、python3、Anaconda2、Anaconda3。其中Anaconda自带python,其实不用太担心是不是要卸载保留一个,程序运行时候只关心设置的哪个能不能找到,其他的都是空气。假如同时安装了Anaconda2、Anaconda3,保险的做法是将一个版本的配置信息在.bashrc注释掉。到底哪个能用,还是看PyCharm配置的哪个
2.2 PyCharm配置mxnet(gluon)
还记得上面的过程中有一步要执行很久,没错就是1.3。这一步到底在干嘛?简单地讲,给用户配置好mxnet环境,换句话说,你只要用这个环境,所有需要的包都可以导入了。环境ok啦 怎么一步搞定,因为我发现一些人使用的时候总在换解释器,总觉得解释器不对,换一次更新又要等很久。
2.3 mxnet解释器路径在哪?
首先,我们安装了Anaconda3,当然路径在Anaconda3下面啊。有一个envs文件夹里面有gloun文件夹,就是这个啦,大概有500M,这就解释了1.3中为什么等这么久了。
里面有所有的信息啊,你可以想想为什么要conda activate gluon?
这里分享个简单不会出错的方式,在激活的终端中启动Pycharm,如下图,务必要这样,不然启动后Pycharm识别的Conda是普通的,而不是gloun的环境。
启动PyCharm,新建工程,按照下面的设置
正如上面的分析,点击后选择conda,会自动识别到gloun。
2.4 PyCharm中matplot画不了图?
先检查下是不是已经出现小窗口了? 画图前一定要加上plt.show(); 这里有个案例,也可以参考下:
3 GPU配置请看这儿,建议先看上面
3.1 Nvidia显卡,CUDA,CUDNN?
这里有必要解释三个名词的含义,不要糊里糊涂的乱用命令啊。Nvidia显卡: 你买的GPU需要驱动吧,没有驱动电脑是不认识的,当然驱动是官方提供的,任何设备都需要驱动,没有驱动不工作。CUDA:是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。也就是说CUDA是NVIDIA推出的并行架构,只有买它的产品才能获得这种"售后"。深度学习中,也叫做N卡,称之为GPU。不是它的产品被叫做CPU版本,当然并行架构又不是只有CUDA,还有OpenBlas(免费),intel(KML 收费),换句话说,没有买N卡的电脑也可以并行加速,这里讲N卡。注意: 只有驱动装好了,才能装CUDA啊。CUDNN:在CUDA基础上,进一步实现深度神经网络GPU加速,NVIDIA推出了CUDNN,它强调性能、易用性和低内存开销。Tensorflow、caffe, mxnet等都支持。这里就不讲了,感兴趣的可以百度下。注意: 只有装好了CUDA,才可以弄CUDNN。
3.1.1 根据显卡型号安装合适Nvidia驱动
不要觉得这步多余,安装好显卡驱动请跳过。
**对于新电脑刚装好的Ubuntu系统,进入系统是使用的集成显卡,此时没有使用GPU。**为此,需要在官网上下载linux版驱动。注意:要仔细一把成功,否则开机是黑屏,因为显卡驱动都没转好,显示器就很尴尬了
如果以前安装过的,需要升级的话,需要先卸载!
N卡官方地址: https://www.nvidia.cn/Download/index.aspx?lang=cn
这里有一篇文章,可以参考下
下面直接通过命令查询,合适的驱动版本
ubuntu-drivers devices
成功后,可以用nvidia-smi查看,没输出就要找问题了。
3.1.2 选择合适的CUDA版本
虽然说CUDA只是一个并行库,并不是所有的版本都可装的,官方有一个推荐版本,请按照规则来。
CUDA各版本下载地址 https://developer.nvidia.com/cuda-toolkit-archive
# run文件简单些,其他的都可以,就是不要下载远吗自己编译。。。。
wget 链接
sudo sh xxx # 如果你在root下安装的,非root用户也可以用,影响不大。建议默认安装,不要改安装路径
3.1.3 将CUDA加入系统库路径下
这一步很重要,你装了再多的软件,不告诉系统等于0.
cd # 到用户根目录下,和~是一样的
vim .bashrc # 打开并转到末尾,添加一行代码
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-9.0(版本不同这里不一样!)/lib64
source .bashrc
3.2 安装GPU的MXNet
这里假定你已经了解了第一部分和第二部分了。
3.2.1 选择合适的(MXNet)GPU
安装软件前,先到仓库里看看mxnet有什么版本啊,不要乱装,一次还是很费时的,一次搞定啊
pip search mxnet
3.2.2 修改environment.yml
vim environment.yml
如果之前我安装过CPU版本,请把之前的gluon复制出来,万一以后要用呢?省的重复操作。再把gluon文件夹删除,这是最好的一步成功的办法。
还有需要注意的是: 在激活的环境中卸载CPU的mxnet,pip uninstall mxnet.再退出激活环境(直接一个bash即可)。
执行conda env create -f environment.yml,还是要等很久。
3.2.3 很不幸,需要重新装jupyter notebook见上
测试代码
import mxnet as mx
from mxnet import nd
# 简单的展示gpu配置成功
print(mx.cpu(), mx.gpu());
# NDArray在CPU上运算
x_cpu = nd.array([1, 2, 3]);
print(x_cpu); # NDArray默认在CPU上 也就是物理内存上分配
print(x_cpu.context); # 通过context来查看NDArray所在的设备
# NDArray在GPU上运算
x_gpu = nd.array([1, 2, 3], ctx=mx.gpu());
print(x_gpu); # NDArray默认在CPU上 也就是物理内存上分配
print(x_gpu.context); # 通过context来查看NDArray所在的设备
3.4 Pycharm导入CUDA
通过上述的步骤,已经可以在终端或jupyter notebook都可以使用了,再使用上面的脚本就很方便了,不过就是每个终端都需要激活环境conda activate gluon。 第一部分,第二部分是CPU很重要,不然你会遇到很多问题。。。。
3.4.1 libcudart.so.xxx: cannot open shared object file: No such file or directory
很明显的动态库问题,有两个主要的原因:
- CUDA根本没装好,这个你需要仔细重复上面的过程
- CUDA装好了,只是Pycharm还不知道CUDA的位置,这个简单。
动态库的问题在程序链接的时候才会出现,主要是某某软件找不到指定的动态库而已。那么怎么告诉Pycharm CUDA的位置?需要的动态库在哪? libcudart.so.xxx在哪?不知道的话,可以全局查找,不过这里直接给出位置/usr/local/cuda-10.0/lib64
sudo ldconfig /usr/local/cuda-10.0/lib64
不过ldconfig不是这么用的,有些不专业。感兴趣的可以去看看/etc下面ld.so.conf和ld.so.conf.d文件下的内容。熟悉PKG管理的,对动态应该很熟悉,比如常见的OPENCV,HDF5。
3.4.3 可以用上面的测试案例试试Pycharm,有问题请留言。
最后验证下,我们的GPU是不是已经被Pycharm使用了
用nvidia-smi查看谁用了GPU,得到PID,去虚拟文件系统去找即可。