• 腾讯云Ubuntu18.04配置深度学习环境


    版本说明

    版本信息汇总

    本篇博客安装的版本信息汇总如下表

    名称版本查看命令
    服务器腾讯云GPU计算型GN7, 8核32G
    Ubuntu18.04
    python3.7.13python -V
    CUDA Driver API418.39nvidia-smi
    CUDA Runtime API10.1nvcc -V
    cudnn7.6.5cat /usr/local/cuda/include/cudnn.h
    torch1.7.1+cu101import torch; print(torch.__version__); print(torch.cuda.is_available())
    torchvision0.8.2+cu101import torchvision; print(torchvision.__version__);
    torchaudio0.7.2import torchaudio;print(torchaudio.__version__)
    cmake3.15.3cmake --version
    spconv1.2.1
    pcdet
    vtk8.1.2
    open3d0.9.0

    版本制约关系

    CUDA驱动及CUDA Toolkit最高对应版本

    在这里插入图片描述
    更多匹配组合可以到cuda官网上去查看

    使用nvidia-smi查询驱动版本。
    例如如下图,我的driver版本是418.39, 可安装的cuda toolkit 的最高版本是10.1
    在这里插入图片描述

    注:驱动是向下兼容的,其决定了可安装的CUDA Toolkit的最高版本

    cuda 和cudnn 的版本匹配

    在这里插入图片描述
    更多匹配组合可以到cudnn官网上去查看(一会也会在这个网站上下载cudnn)

    CUDA Toolkit和PyTorch对应版本

    在这里插入图片描述
    更多匹配组合可以到pytorch官网上查看
    如下图所示,v1.7.1表示的是pytorch版本号。
    然后复制红框中的代码(对应的是cuda10.1),粘贴到终端下载。其中上面一个是cpu版本,下面一个是gpu版本(带有cu标志)
    在这里插入图片描述

    tensorflow-gpu 与cudnn、cuda、python的匹配

    在这里插入图片描述
    更多匹配组合可以到tensorflow官网上查看

    一. 服务器购买和配置

    我选择腾讯云目前的主流机型GPU计算机型GN7,其中搭载一颗Tesla T4 GPU。

    为啥要买服务器? 因为我的电脑是windows系统,然后我也懒得去装双系统。其次vm上运行的ubuntu虚拟机不能装navida驱动!

    在这里插入图片描述

    此处一定要注意选择是GPU型的服务器!! (博主第一次没有看清楚,买的CPU版本的云服务器,安装了半天的显卡驱动装不上,浪费了好长时间呜呜)
    GPU型的服务器分为计算型和渲染型。其中渲染型主要用于3d图像渲染。计算型多适用于一般的深度学习计算等。
    具体的型号选择如下表在这里插入图片描述

    二、安装显卡驱动

    腾讯云官网教程

    2.1 自动安装方式

    强烈推荐这个方法!! ( 本人因为忘记选择自动安装,被迫又手动安装了一遍wuwu,详见方法2.2)
    在这里插入图片描述

    2.2 手动安装方式

    • 执行以下命令,并输入 root 用户密码,切换至 root 用户。
    su
    
    • 1
    • 执行以下命令,查看当前系统中是否已安装 dkms。
    dpkg -l | grep -i dkms
    
    • 1

    返回结果如下图,则表示已安装 dkms。
    在这里插入图片描述

    若返回结果为空,则表明未安装 dkms,执行以下命令进行安装。
    apt-get install dkms

    这个版本选择也是个坑,,这个型号要和自己购买的云服务器上的型号对应

    • 查找结果如下,然后点击download
      在这里插入图片描述

    • 如有填写个人信息的页面可选择直接跳过,当出现以下页面时,右键单击 AGREE&DOWNLOAD 并选择菜单中的复制链接地址。如下图所示:
      在这里插入图片描述

    • 使用 wget 命令,粘贴上一步 中复制的链接地址,下载安装包。

    wget https://us.download.nvidia.com/tesla/418.226.00/NVIDIA-Linux-x86_64-418.226.00.run
    
    • 1
    • 执行以下命令,修改安装包权限。请将命令中的 xxx 替换为您实际的驱动版本号。
    chmod +x NVIDIA-Linux-x86_64-418.226.00.run
    
    • 1
    • 由于 NVIDIA 动的安装需要依赖 gcc 和 linux-kernel-headers,请依次执行以下命令,检查当前系统中是否已安装 gcc 和 kernel-devel 包。
    dpkg -l | grep -i gcc
    dpkg -l | grep -i linux-headers
    
    • 1
    • 2

    返回结果如下,则表示已安装 gcc 和 kernel-devel。
    在这里插入图片描述
    若返回结果为空,则表明未安装,执行以下命令进行安装。
    sudo apt-get install gcc linux-kernel-headers

    • 执行命令安装驱动程序,根据提示进行后续操作。请将命令中的 xxx 替换为您实际的驱动版本号。
    sudo sh NVIDIA-Linux-x86_64-xxxx.run --ui=none --disable-nouveau --no-install-libglvnd --dkms -s
    
    • 1
    • 安装完成后,执行以下命令进行验证。
      nvidia-smi
      如返回信息类似下图中的 GPU 信息,则说明驱动安装成功。
      在这里插入图片描述
      从上图中可以看出,当前设备独显驱动版本为:418.39

    2.3 debug记录

    Linux安装NVIDIA驱动报错An NVIDIA kernel module ‘nvidia-drm‘ appears to already be loaded in your kernel…
    在这里插入图片描述

    • 解决方案:卸载旧版本,再安装新版本,以消除冲突
    # 卸载旧版本
    sudo nvidia-uninstall
    # 重启
    reboot
    # 安装新版
    sudo sh NVIDIA......
    # 查看
    nvidia-smi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三、安装cuda

    3.1 安装cuda

    • 选择合适的cuda版本
      根据前两步的查询结果安装对应版本的CUDA。独显驱动版本为:435.21,根据下表可以看出我们需要安装10.2.89以下版本的CUDA,这里我选择安装了10.1版本的CUDA
      下图的完整链接
      在这里插入图片描述
    • 下载安装包
      官网下载地址
      在这里插入图片描述
      在CUDA安装包所在的文件夹下打开终端,执行如下命令进行安装:
    chmod +x ./cuda_10.1.105_418.39_linux.run
    sudo ./cuda_10.1.105_418.39_linux.run
    
    • 1
    • 2

    注意这个文件名,前面的cuda_10.1.105代表cuda的版本,后面的418.39代表的对应的NVIDIA驱动的版本

    安装过程中在建立软链接时需要注意一下,如果你是第一次安装cuda,那么毫无疑问输入y(yes),但是如果你是安装额外版本的cuda,是否选择y(yes)就要看你的具体需求而定,简言之,就是如果你希望启用当前安装的cuda版本,就选y,如果你只是想安装这个版本,而暂时还不想启用该版本时,就选n

    在这里插入图片描述

    3.2 配置cuda相关的环境变量

    • 添加环境变量
    vim ~/.bashrc #修改配置文件(如果你用的是zsh,则需要修改 ~/.zshrc文件)
    
    #在文件结尾处添加
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    export PATH=$PATH:/usr/local/cuda/bin
    export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    • 保存文件并退出,然后在终端输入以下命令刷新环境变量:
      source ~/.bashrc
    • 在终端输入以下命令,如果显示下图中的结果,则说明CUDA安装成功
      nvcc -V
      在这里插入图片描述

    3.3 不同cuda版本间的切换

    在安装了多个cuda版本后,可以在/usr/local/目录下查看自己安装的cuda版本,如下图所示
    在这里插入图片描述
    这里,cuda-10.1和cuda-11.2就是我们安装的两个cuda版本了,而cuda是一个软链接,它指向我们指定的cuda版本

    sudo rm -rf cuda
    sudo ln -s /usr/local/cuda-9.1 /usr/local/cuda
    
    • 1
    • 2

    四、安装cudnn

    • 下载cudnn
      官方下载链接
      在这里插入图片描述

    • 解压tar zxvf cudnn-10.1-linux-x64-v7.6.5.32.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 
    sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    • 打开终端,输入以下命令,查看CUDNN是否安装成功:
    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    
    • 1

    在这里插入图片描述
    依次输出7、6、5,即为CUDNN7.6.5版本。

    五、安装Anaconda

    • 先安装一些必备的库
    $ sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
    
    • 1

    ​ - 然后从官网里面下载Anaconda的安装脚本

    $ wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
    
    • 1

    ​- 然后给脚本赋予执行权限

    $ chmod +x Anaconda3-2020.11-Linux-x86_64.sh
    
    • 1

    ​ 然后运行安装脚本即可

    $ ./Anaconda3-2020.11-Linux-x86_64.sh
    
    • 1

    这里不建议使用root权限安装,如果你自己使用的用户就不是root账户的话
    这里如果出现找不到conda命令的情况可能需要手动修改shell的环境配置

    $ sudo vim ~/.bashrc
    
    • 1

    ​ 然后就修改为类似这样的实际安装路径

    export PATH="/home/ubuntu/anaconda3/bin:$PATH"
    
    • 1

    ​ 然后刷新重新运行

    $ source ~/.bashrc
    
    • 1

    六. 安装pytorch和Tensorflow

    6.1 创建虚拟环境

    • 创建虚拟环境openpcdet
    conda create -n openpcdet python=3.7
    
    • 1

    在这里插入图片描述

    • 进入该虚拟环境
    conda activate openpcdet
    
    • 1

    在这里插入图片描述

    6.2 安装pytorch

    • 方法1:运行官网命令

    注:安装的是gpu版本,安装之后可以测试一下,torch是否能调用cuda。
    安装命令,建议去官网复制粘贴,不容易出现cuda和torch版本不匹配的问题。

    如下图,从官网上复制对应版本的命令,然后复制到终端运行。
    在这里插入图片描述

    pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
    
    • 1
    • 方法2

    如果方法1比较慢的话,可以先从官网上下载轮子
    官网下载地址

    具体选择如下:
    cu表示gpu版本的;
    101表示cuda的版本是10.1;
    torch-1.7.1表示torch的版本号;
    cp37表示对应的python版本是3.7
    linux表示安装在linux系统上。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    然后把下载好的文件通过xftp软件传输到服务器上。
    在这里插入图片描述
    切换路径到这两个whl文件所在的文件夹下,然后再pip install 文件名

    pip install torch-1.7.1+cu101-cp37-cp37m-linux_x86_64.whl
    pip install torchvision-0.8.2+cu101-cp37-cp37m-linux_x86_64.whl
    pip install torchaudio-0.7.2-cp37-cp37m-linux_x86_64.whl
    
    • 1
    • 2
    • 3

    6.3 安装tesorflow

    • 安装tensorflow

    如果不安装tensorflow,则无法使用tensorboard、tensorboardX这些可视化工具

    我这里选择的是和cuda10.1相匹配的 tensorflow-gpu==2.2.0

    pip install tensorflow-gpu==2.2.0
    
    • 1

    6.4 安装下载其他第三方库

    pip install + 如下的文件名

    numpy
    numba
    tensorboard
    tensorboardX
    easydict
    pyyaml
    scikit-image
    tqdm
    SharedArray
    vtk==8.1.2
    mayavi==4.7.3
    PyQt5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6.5 安装cmake-3.15.3

    先从百度网盘上下载cmake压缩包,然后上传到服务器上

    cmake百度网盘下载链接:
    链接:https://pan.baidu.com/s/1d4IuDzmnIWeu8Mz9pUXx5A
    提取码:9unt
    –来自百度网盘超级会员V4的分享

    tar -xvzf cmake-3.15.3.tar.gz
    cd cmake-3.15.3
    ./bootstrap    #执行引导文件
    #该命令执行需要一定时间,请耐心等待。成功执行结束之后,末尾提示:CMake has 	#bootstrapped.  Now run make.
    make
    sudo make install
    cmake --version
    cd ..
    rm -rf cmake-3.15.3  #清理安装源代码
    pip install cmake==3.15.3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    七、安装spconv

    7.1 安装sponv

    • 安装spconv
      从百度网盘上下载spconv-1.2.1,并上传到云服务器上。

    spconv-1.2.1 百度网盘下载链接
    链接:https://pan.baidu.com/s/1ERxzmrvinvo53Y__Wba4hg
    提取码:j3o5
    –来自百度网盘超级会员V4的分享

    unzip spconv-1.2.1.zip
    cd spconv-1.2.1
    python setup.py bdist_wheel
    cd dist
    pip install spconv-1.2.1-cp37-cp37m-linux_x86_64.whl
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    验证是否安装成功

    python
    import spconv
    
    • 1
    • 2

    在这里插入图片描述

    7.2 debug记录

    • debug1

    报错如下:

    /usr/include/c++/7/bits/basic_string.tcc:1067:16: error: cannot call member function 
    ‘void std::basic_string<_CharT, _Traits, _Alloc>::_Rep::_M_set_sharable() [with _CharT = char16_t; _Traits = std::char_traits<char16_t>; _Alloc = std::allocator<char16_t>]’
     without object
           __p->_M_set_sharable();
    
    • 1
    • 2
    • 3
    • 4

    解决办法:将/usr/include/c++/7/bits/basic_string.tcc:1067:16

    sudo gedit /usr/include/c++/7/bits/basic_string.tcc
    
    • 1

    __p->_M_set_sharable() 改为 (*__p)._M_set_sharable()

    • debug2

    报错如下:

    OSError: /home/ubuntu/anaconda3/envs/openpcdet/lib/python3.7/site-packages/spconv/libspconv.so: 
    undefined symbol: _ZN6caffe28TypeMeta21_typeMetaDataInstanceIdEEPKNS_6detail12TypeMetaDataEv
    
    • 1
    • 2

    检查自己的pytorch版本是否安装的正确。
    如果不正确,需要卸载之前的版本,安装新的pytorch版本。
    然后需要重新安装spconv, 运行如下命令

    pip install spconv-1.2.1-cp37-cp37m-linux_x86_64.whl  --force-reinstall
    
    • 1

    在这里插入图片描述

    八、安装OpenPCDet

    • 安装OpenPCDet
    git clone https://ghproxy.com/https://github.com/open-mmlab/OpenPCDet.git
    cd OpenPCDet
    python setup.py develop 
    
    • 1
    • 2
    • 3
    • 验证pcdet是否安装成功
    python 
    import pcdet
    
    • 1
    • 2

    在这里插入图片描述

    九、安装open3d

    • 安装open3d
    conda install -c open3d-admin open3d==0.9.0
    pip install open3d-python
    
    • 1
    • 2
    • 验证是否安装成功
    python
    import open3d
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    LeetCode //C - 918. Maximum Sum Circular Subarray
    回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测
    痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的QPI/OPI模式
    【MySQL】字符串截取函数 SUBSTR() 详解
    python作业
    算法训练 | 贪心算法Part1 | 455.分发饼干、376.摆动序列、53.最大子序和
    Python Opencv实践 - 视频目标追踪CamShift
    PHP require、include、require_once 和 include_once 的区别
    JavaScript循环语句
    jdk8更新到333了,你确定不更新你的Java吗
  • 原文地址:https://blog.csdn.net/zyw2002/article/details/127380364