• ubuntu 18.04下安装Anaconda、Cuda、Cudnn、gpu-Pytorch


            登录服务器后,首先查看下系统版本:cat /proc/version ,我们这个服务器有点特殊是arm版本的,通过nvidia-smi查看服务器显卡配置, 这意味着我们要安装的cuda版本最高不能超过11.4,那么我们这里选择一个比较稳定的版本cuda 11.3。

    安装显卡驱动:

    1. 1.查看显卡驱动
    2. cat /var/log/dpkg.log | grep nvidia
    3. ubuntu-drivers devices
    4. 2.更新前先把已经安装好的闭源驱动给卸载了。
    5. sudo apt purge nvidia-driver nvidia-kernel-dkms nvidia-*
    6. sudo apt autoremove
    7. 3.下载驱动run文件https://cn.download.nvidia.cn/XFree86/Linux-x86_64/535.54.03/NVIDIA-Linux-x86_64-535.54.03.run,执行以下代码,一路enter
    8. sudo ./NVIDIA-Linux-x86_64-535.54.03.run --no-x-check

    1. anaconda安装:由于cpu不是intel的,需要安装arm版本的anaconda

    那么肯定会问,为什么要安装它呢:

    Anaconda是一个打包的集合,官网,它里面预装好了conda、某个版本的python、众多packages、科学计算工具等等。Anaconda支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。

    1. #一般用sh文件安装
    2. wget https://github.com/Archiconda/build-tools/releases/download/0.2.2/Archiconda3-0.2.2-Linux-aarch64.sh
    3. sh Archiconda3-0.2.2-Linux-aarch64.sh
    4. # 添加环境变量
    5. vi ~/.bashrc
    6. export PATH=/home/devuser/anaconda3/bin:$PATH
    7. # 保存退出后:
    8. source ~/.bashrc

    PackagesNotFoundError: The following packages are not available from current channels
    应该是路径中没有添加需要安装包所在的channel导致,可以通过下面的方法彻底解决:

    conda config --add channels conda-forge

    再通过conda或者pip安装自己需要的包就不会再出问题了
     

    2. ARM64平台cuda安装:官网

    下载arm64-sbsa版本cuda

    1. # cuda版本号改为nvidia-smi显示的版本号
    2. wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_470.129.06_linux_sbsa.run
    3. sh cuda_11.3.0_470.129.06_linux_sbsa.run
    4. # 添加环境变量
    5. vi ~/.bashrc
    6. export PATH=/usr/local/cuda-11.3/bin:$PATH
    7. export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH
    8. export CUDA_HOME="/usr/local/cuda-11.3:$CUDA_HOME"
    9. source ~/.bashrc

    验证cuda安装,nvcc -V,出现cuda信息即表明成功安装

    3. 下载如下所示的cudnn:官网根据cuda版本11.3选择cudnn配套版本

    1. # 在cudnn官网选择好版本配套后,选择对应的方式,下载并解压deb包
    2. cudnn-local-repo-ubuntu1804-*_1.0-1_arm64.deb
    3. sudo dpkg -i xxx.deb
    1. # 添加缺少的文件
    2. cp cudnn/include/cudnn* /usr/local/cuda-11.3/include/
    3. cp cudnn/lib/libcudnn* /usr/local/cuda-11.3/lib64/
    4. chmod a+r /usr/local/cuda-11.3/include/cudnn.h
    5. chmod a+r /usr/local/cuda-11.3/lib64/libcudnn*

    4. 安装gpu-pytorch

    为了使创建的多个虚拟环境间能实现资源隔离和版本不冲突,anaconda自带base环境,这个base环境可以认为是基础包的集合,意味着创建的虚拟环境是可以共享这些基础包的。

    conda create -n pytorch python=3.8 (创建虚拟环境pytorch)
    

    Step1:下载源码

    ARM版本的gpu-pytorch需要手动cmake编译,那么没办法,需要github上下载代码。大概等15min

    1. # 注意git clone的时候最好写明版本
    2. git clone --recursive --branch v1.10.0 https://github.com/pytorch/pytorch.git
    3. cd pytorch
    4. # 下载第三方依赖
    5. git submodule update --init --recursive

    Step2:安装依赖(可忽略)

    1. # 这一步要注意依赖的版本,先看下requirements.txt的版本有没有pytorch,
    2. # 否则会直接通过pip安装成cpu版本的pytorch
    3. pip3 install -U setuptools
    4. pip3 install -r requirements.txt

    Step3:源码编译,直到最后有cmake编译完出现100%的字样

    1. # 添加环境变量
    2. export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    3. source ~/.bashrc
    4. python3 setup.py build --cmake-only
    5. python3 setup.py install

    Step4:安装torchvision,torchaudio,见版本配套关系 

    安装 torchvision 时避免更新 pytorch 到最新版本。

    1. # 另外,如果安装依赖库的时间过长,可以指定 pypi 源
    2. pip install 安装包==指定版本 -i https://pypi.tuna.tsinghua.edu.cn/simple
    3. pip install torchvision==0.11.1 --no-deps  
    4. pip install torchaudio==0.10.0 --no-deps

    5. 测试安装的pytorchcudacudnn是否可用:

    1. python3
    2. print(torch.__version__)  # 查看pytorch版本
    3. print(torch.cuda.is_available()) # 查看cuda是否可用 True
    4. print(torch.cuda.device_count()) # 查看cuda可用的数量
    5. print(torch.version.cuda) # 查看cuda版本
    6. from torch.backends import  cudnn
    7. print(cudnn.is_available()) # 查看cudnn版本 True

    6. 环境变量配置

    修改.bashrc, 每次修改完后base下要更新此文件 source ~/.bashrc

    1. # <<< conda initialize <<<
    2. export CUDA_HOME=/usr/local/cuda
    3. export PATH=$PATH:$CUDA_HOME/bin
    4. export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PiATH}}
    5. export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

    7. FAQ

    1)conda基本命令:

    1. # 创建虚拟环境
    2. conda create -n 虚拟环境名称 python=3.8
    3. # 删除虚拟环境
    4. conda env remove --name 虚拟环境名称
    5. # 查看所安装的依赖包版本
    6. pip list
    7. # 查看pip安装的依赖包版本
    8. conda list|grep numpy

    2)如果是源码安装的Pytorch,要卸载怎么办:

    1. pip uninstall torch
    2. python setup.py clean

    同时卸载torchvision,torchaudio:

    1. pip uninstall torchvision
    2. pip uninstall torchaudio

    在虚拟环境上通过pip安装的包在哪里:

    1. (BEVFormer) panxiying@ubuntu:~/Downloads$ pip -V
    2. pip 22.2.2 from /home/panxiying/.conda/envs/BEVFormer/lib/python3.8/site-packages/pip (python 3.8)

    3)如果遇到问题怎么办:

    一般谷歌/知乎搜索报错点,都能找到解决办法,以下是本人遇到的问题~~

    1. 1.解决pip找不到
    2. export PATH="/usr/local/bin:$PATH"
    3. 2.解决cuda和pytorch版本不配套
    4. cmake/Dependencies.cmake:43 (include)
    5. CMakeLists.txt:692 (include)
    6. pytorch1.12---》pytorch1.10
    7. 3.解决settools版本过低
    8. pip uninstall setuptools
    9. pip install setuptools==59.5.0
    10. 4.解决nvcc -V没找到
    11. export PATH=/usr/local/cuda-11.3/bin:$PATH
    12. export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH

     linux下PATH环境变量覆盖问题:

     当把最后一行注释后,能显示nvcc -V正常:

    4) 如果远端服务器因为网络无法安装依赖,怎么办:

    1. # Colab制作arm的pytorch, 取包路径 https://drive.google.com/drive/my-drive
    2. https://colab.research.google.com/drive/#scrollTo=mFvs-1htHYcr
    3. # git下载仓
    4. from google.colab import drive
    5. drive.mount('/content/drive') # 资源都放这个路径下
    6. !rm -rf /content/pytorch1.10.0 && rm -rf /content/pytorch1.10.0.zip
    7. %cd /content
    8. !git clone --recursive --branch v1.10.0 https://github.com/pytorch/pytorch.git
    9. %cd /content/pytorch/
    10. !git submodule update --init --recursive --jobs 0
    11. # 打包
    12. !zip -r /content/pytorch1.10.0.zip /content/pytorch/
    13. %cd ..
    14. !cp ./pytorch1.10.0.zip /content/drive/MyDrive/

  • 相关阅读:
    QT 使用mysql
    APICloud AVM框架 封装车牌号输入键盘组件
    【设计模式】Java设计模式 - 备忘录模式
    牛客网—链表分割
    英语六级day-1
    警惕Faust勒索病毒的最新变种faust,您需要知道的预防和恢复方法。
    C# 窗体设计中 调用 控制台输出
    OpenCV 实现霍夫圆变换
    【Linux】-进程间通信-命名管道文件(没有关系的进程间进行通信),以及写一个日志模板
    FastJSON2 学习笔记
  • 原文地址:https://blog.csdn.net/panxiying1993/article/details/127695392