从0开始搭建Ubuntu20.04深度学习平台(CUDA, cuDNN, 显卡驱动)

前言

之前搭建的深度学习平台,只有100G,下载几个数据集和库就满了,拆东墙补西墙并不是一个权宜之计,所以只能换一个更大(256G)的固态硬盘。下面将会详细的阐述一个完善的深度学习平台是如何炼成的

1. Ubuntu安装篇

  1. 官方下载地址:

    • https://ubuntu.com/download/desktop/thank-you?version=20.04.2.0&architecture=amd64
  2. ISO文件下载完毕后,用UltraISO写入到U盘就行

  3. 特别注意:在安装Ubuntu20.04之前,如果是2020年下半年之后的主板(比如我用的tuf gaming b450m pro s自带Realtek8125b网卡),必须先确保自己有一个USB免驱网卡,这点很重要,后面网卡篇会提到!

  4. 在BIOS界面选择UEFI安装,Ubuntu -> Install Ubuntu,语言一定一定一定要选英文。如果选中文,默认用户路径会有中文:桌面,下载,文档等,且很难改成Desktop,Download,Document。但先选英文,再在settings选中文,就能保留英文路径。

  5. 具体选项记不太清,大概就是minimal installation,然后不要勾选第三方软件,不然装显卡驱动会崩溃(别人说的,不敢尝试)。安装类型选others (第三个)。

  6. 关于分区: 首先确定装Ubuntu的固态硬盘是MBR还是GPT,区别这里不做详解,我用的是MBR

    500MB, primary, 空间起始位置, Ext4, /Boot
    8000MB, primary, 空间起始位置, Swap 
    剩下的MB, primary, 空间起始位置, Ext4, /
    

    如果硬盘是GPT,则在/Boot分区前面加一个/EFI分区,其他分区一样

    500MB, primary, 空间起始位置, Ext4, /EFI
    

    对于swap,众说纷纭,但经本人归纳

    if 内存 < 16GB:
        swap = 内存 * 2
    else:
        swap = 8GB
    

    最后,安装启动引导器的设备:windows boot manager

  7. 一定不要安装Ubuntu商店里的VS Code,除非你不在VS Code里输入中文!

2. 网卡篇

由于Ubuntu20.04不含Realtek8125b网卡驱动,所以初进入Ubuntu,无法使用网络!这就是为什么需要自备USB免驱网卡,通过USB网卡下载编译环境。

  1. 准备编译环境:

    sudo apt-get install --reinstall linux-headers-$(uname -r) linux-headers-generic build-essential dkms
    
  2. 下载源码:

    • 官方下载地址:
      https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software
    • 如果是千兆网卡,就选择GBE(r8168)
    • 如果是2.5G网卡,就选择2.5G(r8125)
  3. 解压源码

    sudo tar xvf r8125-9.005.06.tar.bz2 -C /usr/src
    
  4. 添加dkms.conf文件到/usr/src/r8125-9.005.06/

    touch /usr/src/r8125-9.005.06/dkms.conf
    gedit /usr/src/r8125-9.005.06/dkms.conf
    

    内容如下:

    PACKAGE_NAME=Realtek_r8125
    PACKAGE_VERSION=9.005.06
    
    DEST_MODULE_LOCATION=/updates/dkms
    BUILT_MODULE_NAME=r8125
    BUILT_MODULE_LOCATION=src/
    
    MAKE="'make' -C src/ all"
    CLEAN="'make' -C src/ clean"
    AUTOINSTALL="yes"
    
  5. 编译:

    sudo dkms add -m r8125 -v 9.005.06
    sudo dkms build -m r8125 -v 9.005.06
    sudo dkms install -m r8125 -v 9.005.06
    sudo depmod -a
    sudo modprobe r8125
    
  6. 验证安装结果:

    sudo apt install ifconfig
    

    运行命令ifconfig -a即可看到enxxx的有线网接口。10秒之内,右上角会显示有线网络的图标。

  7. Linux内核版本升级后,任然需要重新编译安装,执行以下命令卸载后安装:

    sudo dkms remove r8125/9.005.06 --all
    

3. 安装必要软件篇

  1. 安装Google Chrome

     wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
     sudo dpkg -i google-chrome-stable_current_amd64.deb
    
  2. 安装搜狗拼音输入法

    1. 安装Fcitx输入框架

      sudo apt install fcitx-bin
      sudo apt-get install fcitx-table
      
    2. 下载Linux版本搜狗输入法

      • 官方下载地址:https://pinyin.sogou.com/linux/
    3. 安装

      sudo dpkg -i sogoupinyin_2.4.0.3469_amd64.deb
      
      遇到 dpkg: error processing package sogoupinyin (–install): dependency problems - leaving unconfigured
      输入 sudo apt-get install -f  (出现安装错误可以使用,检查修复依赖)
      中间有提示,Do you want to continue? [Y/n] 输入 Y 
      
    4. 进行相关设置
      settings–>Region&language–>Manage Installed Languages Input method改为fcitx
      然后点击上面的Apply System-Wide应用到全局。

    5. 重启后 (可以顺便做完4.1),在右上角出现一个键盘标志,点击进入,选择Configure Current Input Method
      进入下面的Input Method界面后,选择+号进入到Add input method界面,将下面的Only Show Current Language点掉后,在搜索栏搜索sogou,选中之后进行添加(建议不要把搜狗输入法移动到第一位,不然按shift切换中英文时,有时输入板会出现乱码)。搜狗 --> 设置,默认是shift切换中英文,可以把搜狗设置的中英文切换快捷键关掉,在fcitx的GlobalConfig 中Trigger Input Method 改为Lshift,这样也可以按shift切换中英文。

  3. VS Code官方下载网址:https://code.visualstudio.com/Download

4. 准备工作

  1. 在bios中务必关闭Secure Boot
     如果在bios中Secure Boot是灰色的,无法disable,请往下看:关于Secure Boot在bios中有一段话解释:Secure Boot be enabled only when: (1).Platform Key(PK) is enrolled and platform is operating in User mode; (2). CSM function is disabled in setup。
     因此,要Disable Secure Boot,首先如果PK(也就是bios中Key Managemnet有key,请全部 delete),其次Boot选项中,Launch CSM请设置为Disable。
    
  2. 禁用nouveau
    sudo vim /etc/modprobe.d/blacklist.conf
    
    输入以下两行:
    blacklist nouveau
    options nouveau modeset=0
    
    刷新内核
    sudo update-initramfs -u
    
    关闭驱动控制台
    sudo service lightdm stop
    
    如果提示 unit lightdm.service not loaded
    则先安装LightDm
    sudo apt install lightdm
    
    安装完毕后跳出一个界面,选择lightdm后,再
    sudo service lightdm stop
    
    查看是否安装成功,需先重启,若无输出,则表示关闭成功
    lsmod | grep nouveau
    

5. 安装显卡驱动

  1. 下载和安装N卡驱动:https://www.nvidia.cn/geforce/drivers/

    sudo chmod a+x NVIDIA-Linux-x86_64-460.84.run
    sudo ./NVIDIA-Linux-x86_64-460.84.run -no-x-check -no-nouveau-check -no-opengl-files
    

    问题选项:

    【YES】The distribution-provided pre-install script failed! Are you sure you want to continue?
    【NO】Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 
    【install without signing】问题忘了?
    【NO】Nvidia's 32-bit compatibility libraries? 
    【YES】Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 
    
  2. 挂载Nvidia驱动:

    modprobe nvidia
    
  3. 检查驱动是否安装成功:

    nvidia-smi
    nvidia-settings # 若弹出设置对话框,表示驱动安装成功
    
  4. 注意nvidia-smi显示的cuda版本可以nvcc -V显示的cuda版本不同。因为CUDA有两种API,分别是驱动API(Runtime API)和运行时API(Driver API)

6. 安装CUDA与cuDNN

简单说下两者的区别,CUDA是并行计算架构,cuDNN是深度神经网络的GPU加速库。CUDA类似于工作台,而cuDNN则是螺丝刀,合则两利,分则可能不如CPU(doge)。

  1. 官方下载CUDA toolkit:
    https://developer.nvidia.com/cuda-toolkit-archive

    # 我装的是CUDA 10.2
    wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
    
  2. 下载 gcc7
    CUDA 10.2只支持gcc7,Ubuntu20.04默认安装gcc9

    sudo apt-get install gcc-7
    sudo apt-get install g++-7
    

    将gcc7,g++7设为默认选项

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
    sudo update-alternatives --config gcc
    
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 50
    sudo update-alternatives --config g++
    

    查看是否成功:

    gcc --version
    g++ --version
    
  3. 安装CUDA toolkit

    sudo sh cuda_10.2.89_440.33.01_linux.run
    # toolkit包自带驱动,如果之前安了驱动,可不选Driver
    
  4. 配置环境变量

    gedit ~/.bashrc
    
     export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
     export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    
    source ~/.bashrc
    
  5. 选择下载合适的版本安装cuDNN,需使用Nvidia账号

    • https://developer.nvidia.com/cudnn
    • 这里还是以10.2为例
    wget https://developer.nvidia.com/compute/machine-learning/cudnn/secure/8.2.1.32/10.2_06072021/cudnn-10.2-linux-x64-v8.2.1.32.tgz
    

    解压cuDNN压缩包后

    sudo cp cuda/include/cudnn.h /usr/local/cuda-10.2/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.2/lib64
    sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h
    sudo chmod a+r /usr/local/cuda-10.2/lib64/libcudnn*
    
  6. 检查是否安装成功

    nvcc -V
    

    如果成功,则会显示

    Cuda compilation tools, release 10.2, V10.2.89
    

7. 安装Anaconda

  1. 官方下载地址:
    https://www.anaconda.com/products/individual
    
  2. 安装(全部回车 + yes)
    bash Anaconda3-2020.02-Linux-x86_64.sh
    
  3. 配置环境变量
    gedit ~/.bashrc
    
     export PATH=“/home/用户名/anaconda3/bin:$PATH”
    
    source ~/.bashrc
    
  4. 检查是否安装成功
    • python
    [GCC 7.5.0] :: Anaconda, Inc. on linux
    

8. 改为清华源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

9. 搭建深度学习环境

  1. 新建conda环境

    conda create -n env_name python=3.8
    conda remove -n env_name --all
    
  2. 安装opencv

    pip install opencv-python==4.1.1.26
    
  3. 安装jupyter notebook

    conda install jupyter notebook
    
  4. 安装Open3D

    pip install open3d
    

    检验是否安装成功

    python -c "import open3d as o3d; print(o3d)"
    
  5. 安装 Pytorch

    # pytorch 1.9
    conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
    
    # pytorch 1.8
    conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch-lts
    
  6. 检验Pytorch是否安装成功

    torch.cuda.is_available()
    

10. 关闭自动更新

当Linux内核版本更新之后,会自动切换到新的版本,但原来安装的显卡驱动却还是停留在了原来的内核版本,为了防止此情况发生,需要关闭自动更新。

  1. 显示所有内核
    dpkg --get-selections|grep linux
    
    删除不必要的内核
    sudo apt-get purge 【image/head/module】
    
  2. 关闭自动更新
    $sudo apt-mark hold linux-image-5.8.0-59-generic
    linux-image-5.8.0-59-generic set on hold.
    
    $sudo apt-mark hold linux-headers-5.8.0-59-generic
    linux-headers-5.8.0-59-generic set on hold.
    
    $sudo apt-mark hold linux-modules-extra-5.8.0-59-generic
    linux-modules-extra-5.8.0-59-generic set on hold.(设置为保留)
    
  3. 打开内核配置文件:
    sudo gedit /etc/apt/apt.conf.d/10periodic
    
    0为关闭
    APT::Periodic::Update-Package-Lists "0";
    APT::Periodic::Download-Upgradeable-Packages "0";
    APT::Periodic::AutocleanInterval "0";
    APT::Periodic::Unattended-Upgrade "0";
    

11. Snap(非必要)

  1. 安装

    sudo apt-get install snapd
    sudo apt-get install snapcraft 
    
  2. 配置环境

    gedit ~/.bahsrc
    export PATH=$PATH:/snap/bin
    source ~/.bashrc
    
  3. 列出已经安装的snap包

    sudo snap list
    
  4. 搜索要安装的snap包

    sudo snap find 
    
  5. 安装一个snap包

    sudo snap install 
    
  6. 更新一个snap包,如果你后面不加包的名字的话那就是更新所有的snap包

    sudo snap refresh 
    
  7. 把一个包还原到以前安装的版本

    sudo snap revert 
    
  8. 删除一个snap包

    sudo snap remove 
    

12. 其他

  1. clion
    sudo snap install clion --classic
    
  2. pycharm
    sudo snap install pycharm-professional --classic
    
  3. 网易云音乐
    sudo snap install netease-music --devmode --beta
    

你可能感兴趣的:(深度学习,自动驾驶,pytorch,机器学习,神经网络)