CUDA, cuDNN, Tensorflow,Mask RCNN配置实战
因为之前环境配置失败,一怒之下刷机推倒重来,跑过来记录这次环境配置的经历。参考了站内站外许多教程,整理如下。
- CUDA
- cuDNN
- Anaconda
- Tensorflow1.5.0
- Keras2.1.6
- Mask RCNN 案例
- Memory: 32GB
- Processor: Intel i9-10980 @ 2.4GHZ x 16
- Graphics: GeForce RTX 2070 Super with Max-Q Design/PCIe/SSE2
- System: Ubuntu 22.04
-
CUDA的安装
因为不是第一次安装CUDA,所以这部分写的不是非常详细,这里只记录下本人的安装流程,详细安装教程可以参考这里。安装之前,首先对显卡的驱动进行确认:
nvidia-smi
如果输出结果为:
证明显卡驱动已经安装成功。未配置driver的话,会出现“Make sure that the latest NVIDIA driver is installed and running.” 这时候需要使用如下命令:sudo ubuntu-drivers autoinstall
如果报错的话,需要参考如何禁用nouveau,重启,然后输入以下命令验证是否生效
lsmod | grep nouveau
没有输出结果,则表明禁用成功。然后就可以开始CUDA的安装。我选择安装CUDA11.2,大家可以在网上选择正确版本进行安装。下面是我选择的安装选项。
确定之后,在选好的路径下执行wget https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda_11.2.1_460.32.03_linux.run sudo sh cuda_11.2.1_460.32.03_linux.run
在安装的时候,会出现一个Warning,直接选择continue,注意在安装的时候,不要安装驱动:使用Enter将Driver前面的X勾选掉。之后根据安装后的Summary,对path进行配置。执行:
gedit ~/.bashrc
在文件的末尾添加:
export PATH=/usr/local/cuda-11.2/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH
如果后期需要安装多个版本的CUDA,需要在该文件末尾再次添加路径。这里需要注意,根据Summary里面的提示对cuda文件夹后面的版本信息进行修改。这里因为版本是11.2,所以是/cuda-11.2。保存之后使修改生效:
source ~/.bashrc
接下来就是检查安装时候成功
nvcc -V
如果输出为如下,证明安装成功。
Reboot重启之后,测试~/NVIDIA_CUDA-11.2_Samples:cd ~/NVIDIA_CUDA-11.2_Samples/1_Utilities/deviceQuery make ./ deviceQuery
成功之后即完成了CUDA的安装。
-
cuDNN的安装
首先前往cuDNN Archive下载与所安装CUDA版本对应的cuDNN,这里安装的是cuDNN v8.1.0 (January 26th, 2021), for CUDA 11.0,11.1 and 11.2/cuDNN Library for Linux (x86_64)。可以参考官方安装指南。
下载之后,在解压后的文件夹/cuda中,执行:# In the directory of /cudnn-11.2-linux-x64-v8.1.0.77 # Copy the following files into the CUDA Toolkit directory sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.2/include sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-11.2/lib64 sudo chmod a+r /usr/local/cuda-11.2/include/cudnn*.h /usr/local/cuda-11.2/lib64/libcudnn*
在/usr/local路径下,会发现同时存在/cuda和/cuda-11.2两个文件夹。在多版本CUDA管理中,/usr/local/cuda是一个链接文件,在上述安装过程中被安装程式自动指向了当前安装版本的CUDA所在文件夹,于是我们可以通过更新链接指向,维护多个CUDA版本并动态的调用。执行:
# ln -snf [源] [链接文件] 更新链接文件的指向 sudo ln -snf /usr/local/cuda-11.2 /usr/local/cuda
但是之前我们在-~/.bashrc中,添加路径的时候已经使用了/usr/local/cuda-11.2/***,所以此处不用进行修改。
-
检查CUDA和cuDNN是否安装成功
CUDA检查方法:安装路径为/usr/local/cuda-11.2,执行命令可以输出CUDA版本:
nvcc --version
cuDNN检查方法:执行命令查看是否有cudnn相关的文件:
cd /usr/local//cuda-11.2/include ls | grep cudnn cd /usr/local//cuda-11.2//lib64, ls | grep cudnn
-
创建anaconda环境
这里参考了这篇教程,并且将命令整理如下:
cd ~/Downloads
在Anaconda官网下载文件在Downloads文件夹,这里下载的版本为Anaconda3-2020.11-Linux-x86_64.sh,根据不同版本需要对文件名称进行修改,执行:
bash Anaconda3-2020.11-Linux-x86_64.sh # 经过很多More info之后 Please answer 'yes' or 'no':' >>> yes # 输入yes即可
接下来会提示Anaconda安装的目录:
Anaconda3 will now be installed into this location: /home/用户名/anaconda3 4. Press ENTER to confirm the location 5. Press CTRL-C to abort the installation 6. Or specify a different location below [/home/kimi/anaconda3] >>>
直接按回车确认使用默认目录即可。等待安装完之后,会提示是否把anaconda的bin添加到用户的环境变量中,输入yes。
Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no] [no] >>> yes
安装结束后,会提示是否自动启动Anaconda:
==> For changes to take effect, close and re-open your current shell. <== If you'd prefer that conda's base environment not be activated on startup, set the auto_activate_base parameter to false: conda config --set auto_activate_base false Thank you for installing Anaconda3! =========================================================================== Working with Python and Jupyter notebooks is a breeze with PyCharm Pro, designed to be used with Anaconda. Download now and have the best data tools at your fingertips. PyCharm Pro for Anaconda is available at: https://www.anaconda.com/pycharm
这里我选择了关闭:
conda config --set auto_activate_base false
为了避免可能发生的错误,先把所有工具包进行升级。执行:
conda upgrade --all
激活和关闭Anaconda的命令为:
conda activate conda deactivate
在进入conda环境后,我们查看python版本:
$ python Python 3.8.8 (default, Feb 24 2021, 21:46:12) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information.
如果想安装一个python 3.6的环境,则在anaconda prompt输入:
conda create -n py36 python=3.6
然后在激活该python3.6环境:
conda activate py36 # 关闭的话,与正常关闭方式相同 conda deactivate
如果想修改默认python版本,执行:
anaconda-navigator
在左侧Enviroments中,点击python前面的绿色勾,选择Mark for specific version进行修改。
除此以外,如果删除我们配置的新环境,执行:conda env remove -n env_name
显示目前所有环境:
conda env list
当分享代码的时候,同时也需要将运行环境分享给大家,执行如下命令可以将当前环境下的 package 信息存入名为 environment 的 YAML 文件中:
conda env export > environment.yaml
同样,当执行他人的代码时,也需要配置相应的环境。这时你可以用对方分享的 YAML 文件来创建一摸一样的运行环境。
conda env create -f environment.yaml
-
Tensorflow的安装以及demo.ipynb的测试
在安装完CUDA,cuDNN以及Anaconda之后,我们可以着手运行一下Mask_RCNN中的demo.ipynb。因为demo.ipynb不支持最新的tensorflow以及keras,这里采用的是tensorflow 1.5和 keras 2.1.6,导致python版本也限制于3.6。之前就是鏖战于各个版本的不匹配问题,推到系统重来。这里的demo运行参考了这篇教程。
# 目前使用python3.6创建td_15的项目,代指使用了tensorflow1.5.0版本 conda create -n tf_15 python=3.6 conda activate tf_15 #进入该环境 # 在最前面我们已经从Github上下载了Mask_RCNN的源文件 # 如果未下载,在目标文件夹下clone git clone https://github.com/matterport/Mask_RCNN.git # 先自动安装requirements里面的配置 # 这里会自动安装最新版本的keras,后面需要手动降级成2.1.6 pip install -r requirements.txt # 因为安装了一些package,先更新列表 pip install --upgrade pip # 确保环境配置成功,将以下命令依次输入 pip install numpy pip install scipy pip install cython pip install h5py pip install Pillow pip install scikit-image pip install keras==2.1.6 # 手动降级成2.1.6 pip install theano pip install jupyter pip install six
安装pycocotools,因为maskrcnn的数据集是COCO,所以要配置数据集环境。首先确认已经安装了git,如果没有,先运行:
sudo apt-get install git
git clone https://github.com/waleedka/coco.git cd Mask_RCNN/coco/PythonAPI/ #将coco放置在Mask_RCNN目录下 make install
PythonAPI目录下会生成的pycocotools文件夹,手动复制到Mask-RCNN目录下。之后就开始安装tensorflow 1.5.0,运行:
pip install tensorflow==1.5.0
安装之后,我们先测试一下tensorflow是否安装成功,依次输入:
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() sess.run(hello)
如果命令行输出 Hello, TensorFlow! ,说明tensorflow安装成功。测试完成以后输入 exit() 退出python,继续下一步openCV和imagaug。
pip install opencv-python pip install imgaug
接下来是对Mask_RCNN进行配置,大部分网上教程都是基于Github上的官方教程,加上po主的个人经验。首先在目标文件夹下,把Mask_RCNN文件夹Clone下来(如果未安装git,可以先行安装git)。
git clone https://github.com/matterport/Mask_RCNN.git
需要下载coco权重文件:mask_rcnn_coco.h5 。
或者前往:https://github.com/matterport/Mask_RCNN/releases自行下载,将其也放在Mask_RCNN根目录。
最后就是运行demo.ipynb,在/Mask_RCNN下,使用terminal运行:jupyter notebook
如果未安装jupyter notebook,先执行:
pip install jupyter
然后在jupyer界面前往/Mask_RCNN/sample/demo.ipynb,最后结果为:
- demo.ipynb相对较老,对tensorflow和keras的最新版本支持不友好,需要手动降级,进而需要对python版本做出限制。可以通过Anaconda创建新环境。
- 在配置过程中,会出现各种出乎意料的问题,特别是使用时间较长的电脑,之前配置的环境比较复杂。所以如果条件允许,可以刷机从头再来,反而省去大量解决问题的时间。
- 以上的配置过程是个人经验,欢迎大家随时沟通交流。