Ubuntu1804_CUDA10.0_Cudnn7.6.3深度学习环境搭建

Ban

Ban

ChangAn University

预备材料:

  • Ubuntu 18.04

目标环境:

  • Anaconda 3
  • Python 3.6
  • Pytorch 1.3
  • Tensorflow-gpu 1.13.1
  • CUDA10.0
  • Cudnn 7.6.3

1. 更换Ubuntu源

更换阿里源

左下角点开,找到软件更新器 -> 设置 -> ubuntu软件 选项卡 -> 下载自 -> 其他源 -> mirrors.aliyun.com/ubuntu 关闭窗口

2. 安装Nvidia显卡驱动

  • 官网下载驱动

2.1 安装之前先卸载已经存在的驱动版本

sudo apt-get remove --purge nvidia*
sudo /usr/bin/nvidia-uninstall
sudo apt-get update
sudo apt-get install dkms build-essential linux-headers-generic

2.2 禁用 nouveau

  • 只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,通过以下命令打开:

    sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行加上:

blacklist nouveau
options nouveau modeset=0

将Ubuntu自带显卡驱动加入黑名单

使禁用生效

sudo update-initramfs -u

2.3 开始安装驱动

重启,不要登录,使用Ctrl+ALt+F2进入文字界面,输入账户名密码登录;

  • 安装Lighdm

    sudo apt-get install lightdm
  • 关闭Lightdm

    sudo service lightdm stop
  • 安装Nvidia驱动

    # 修改驱动文件权限
    sudo chmod 777 NVIDIA-Linux-x86_64-430.xx.run
    #执行安装文件
    sudo sh ./NVIDIA-Linux-x86_64-430.xx.run –no-opengl-files
  • 开启Lightdm

    sudo service lightdm start
  • Ctrl+F1登录

  • 验证安装

    sudo nvidia-smi

3. 安装CUDA 10.0

  • 下载

1

3.1 安装依赖

sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

3.2 安装CUDA

sudo sh cuda_10.0.130_410.48_linux.run
  • 根据提示安装:

    Do you accept the previously read EULA?
    accept
    Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
    No
    Install the CUDA 10.0 Toolkit?
    yes
    Enter Toolkit Location
    回车
    Do you want to install a symbolic link at /usr/local/cuda?
    yes
    Install the CUDA 10.0 Samples?
    yes
    Enter CUDA Samples Location
    回车
  • 添加环境变量

    sudo gedit ~/.bashrc

    在末尾添加:

    export PATH=$PATH:/usr/local/cuda-10.0/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
    export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-10.0/lib64

    生效:

    # 必须开启另一个终端执行
    source .bashrc
  • 验证安装

    nvcc -V

    出现版本信息则安装成功

4. 安装Cudnn 7.6.3

搜索Cudnn官网,弄一个号进去,选择历史版本,选择7.6.3, 下载libaray for linux, 不要选ubuntu版本

  • 安装

    #cudnn安装(文件名自己换)
    tar -zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgz
    #这三句不用换
    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*

5. 安装Anaconda

  • 下载

    搜索清华源,进入清华大学镜像网站, 进入 anaconda/archive

    搜索Anaconda3-2019.10-Linux-x86_64.sh

  • 修改Anaconda文件夹权限

    sudo chown 用户名 anaconda3/ -R
    sudo chown 用户名 .conda/ -R
  • 修改Anaconda为清华源

    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --set show_channel_urls yes
  • 创建名为py36的Python3.6虚拟环境

    conda create -n py36 python=3.6
  • 切换环境

    source activate py36

6. 下载与设置Pycharm

  • 下载Pycharm社区版

  • 将Pycharm默认环境设置为py36

    /*
    settings ->
    Project Interpreter ->
    右上角小齿轮 ->
    add ->
    conda Enviornment ->
    Exisiting Environment ->
    设置路径 ->
    /home/你的用户名/anaconda3/envs/py36/bin/python3
    勾选 Make available to all projects
    */

7. 离线安装Pytorch和Torchvision

7.1 下载与安装

  • 进入清华源,进入anaconda/cloud/pytorch

  • 搜索pytorch1.3 py36 cuda100 linux

  • 搜索torchvision 0.4.0

  • 激活py36环境,用以下命令离线安装

    conda install --offline XXXX..tar.bz2

7.2 测试

导入有错的话,解决方式请看附录

from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)
import torch
print(torch.cuda.is_available())

8. 安装tensorFlow-gpu 1.13.1

8.1 激活py36环境,使用清华源安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.13.1

8.2 测试

import tensorflow as tf
with tf.device('/cpu:0'):
a = tf.constant([1.0, 2.0, 3.0], shape=[3], name='a')
b = tf.constant([1.0, 2.0, 3.0], shape=[3], name='b')
with tf.device('/gpu:1'):
c = a + b
# 注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
# 因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True))
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print(sess.run(c))

附录

pip使用清华源

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==1.13.1(换你要装的包)

Pycharm内置pip更换清华源

https://www.jianshu.com/p/21982f0f6b55

Pytorch与TensorFlow各种导入问题

  1. 更新numpy

    pip uninstall numpy
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
  2. 缺各种mkl文件的情况

    # libmkl_intel_lp64.so: cannot open shared object file: No such file or directory
    # 通过命令查找文件位置
    sudo find /home -name libmkl_intel_lp64.so
    # 将查到的文件路径复制到usr/local/lib目录下
    sudo cp /home/cesky001/anaconda3/lib/libmkl_intel_lp64.so /usr/local/lib/libmkl_intel_lp64.so && sudo ldconfig
  3. 缺各种cuda文件的情况

    # 将相应的库文件复制到/usr/lib(根据缺失文件自行修改)
    sudo cp /usr/local/cuda-10.0/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7 && sudo ldconfig
    #ldconfig命令是一个动态链接库管理命令,是为了让动态链接库为系统共享

设置Ubuntu屏幕分辨率

1. 查看工作模式

xrandr

2. 生成Modeline

cvt 1920 1080

3. 用modeline创建新的分辨率模式

xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

4. 用addmode将模式添加在显示器上

xrandr --addmode VGA1 "1920x1080_60.00"

5. 调用分辨率

xrandr --output VGA1 --mode "1920x1080_60.00"