环境:Ubuntu16.04,PyCharm,Anaconda3安装的问题及解决方案(CPU/GPU)

操作系统和版本

Ubuntu16.04 x86_64、PyCharm环境

Python版本

python3.6.2 64bit

有问题请留言,欢迎访问博客

https://blog.csdn.net/weixin_39956356

上一节内容,我已经分享了一些资料,感兴趣的可以点击这个
这篇文章的主要内容是:安装过程中出现的问题及解决方案(建议先按书上走一遍)

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

注意:

  1. 推荐用Anaconda而不是Miniconda,因为假如瘦conda没有相应的软件,会在线下载,有些麻烦啊。
  2. 安装到最后一定要选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' &

注意:最好使用后台执行,即&关于前后台的使用,请看这儿
https://blog.csdn.net/weixin_39956356/article/details/78168501

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,新建工程,按照下面的设置

2.4 PyCharm中matplot画不了图?

先检查下是不是已经出现小窗口了?
画图前一定要加上`plt.show();
这里有个案例,也可以参考下:
https://blog.csdn.net/weixin_39956356/article/details/106330373

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

这里有一篇文章,可以参考下
https://blog.csdn.net/nnUyi/article/details/78067544

下面直接通过命令查询,合适的驱动版本

ubuntu-drivers devices 


成功后,可以用nvidia-smi查看,没输出就要找问题了。

3.1.2 选择合适的CUDA版本

虽然说CUDA只是一个并行库,并不是所有的版本都可装的,官方有一个推荐版本,请按照规则来。

CUDA各版本下载地址

# 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

很明显的动态库问题,有两个主要的原因:

  1. CUDA根本没装好,这个你需要仔细重复上面的过程
  2. 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,去虚拟文件系统去找即可。

2赞