登录服务器后,首先查看下系统版本:cat /proc/version ,我们这个服务器有点特殊是arm版本的,通过nvidia-smi查看服务器显卡配置, 这意味着我们要安装的cuda版本最高不能超过11.4,那么我们这里选择一个比较稳定的版本cuda 11.3。
安装显卡驱动:
- 1.查看显卡驱动
- cat /var/log/dpkg.log | grep nvidia
- ubuntu-drivers devices
-
- 2.更新前先把已经安装好的闭源驱动给卸载了。
- sudo apt purge nvidia-driver nvidia-kernel-dkms nvidia-*
- sudo apt autoremove
-
- 3.下载驱动run文件https://cn.download.nvidia.cn/XFree86/Linux-x86_64/535.54.03/NVIDIA-Linux-x86_64-535.54.03.run,执行以下代码,一路enter
- 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并存、切换以及各种第三方包安装问题。
- #一般用sh文件安装
- wget https://github.com/Archiconda/build-tools/releases/download/0.2.2/Archiconda3-0.2.2-Linux-aarch64.sh
- sh Archiconda3-0.2.2-Linux-aarch64.sh
- # 添加环境变量
- vi ~/.bashrc
- export PATH=/home/devuser/anaconda3/bin:$PATH
- # 保存退出后:
- 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
- # cuda版本号改为nvidia-smi显示的版本号
- wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_470.129.06_linux_sbsa.run
- sh cuda_11.3.0_470.129.06_linux_sbsa.run
-
- # 添加环境变量
- vi ~/.bashrc
- export PATH=/usr/local/cuda-11.3/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH
- export CUDA_HOME="/usr/local/cuda-11.3:$CUDA_HOME"
- source ~/.bashrc
-
-
验证cuda安装,nvcc -V,出现cuda信息即表明成功安装
3. 下载如下所示的cudnn:官网根据cuda版本11.3选择cudnn配套版本
- # 在cudnn官网选择好版本配套后,选择对应的方式,下载并解压deb包
- cudnn-local-repo-ubuntu1804-*_1.0-1_arm64.deb
- sudo dpkg -i xxx.deb
- # 添加缺少的文件
- cp cudnn/include/cudnn* /usr/local/cuda-11.3/include/
- cp cudnn/lib/libcudnn* /usr/local/cuda-11.3/lib64/
- chmod a+r /usr/local/cuda-11.3/include/cudnn.h
- 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
- # 注意git clone的时候最好写明版本
- git clone --recursive --branch v1.10.0 https://github.com/pytorch/pytorch.git
- cd pytorch
- # 下载第三方依赖
- git submodule update --init --recursive
Step2:安装依赖(可忽略)
- # 这一步要注意依赖的版本,先看下requirements.txt的版本有没有pytorch,
- # 否则会直接通过pip安装成cpu版本的pytorch
- pip3 install -U setuptools
- pip3 install -r requirements.txt
Step3:源码编译,直到最后有cmake编译完出现100%的字样
- # 添加环境变量
- export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
- source ~/.bashrc
- python3 setup.py build --cmake-only
- python3 setup.py install
Step4:安装torchvision,torchaudio,见版本配套关系
安装 torchvision 时避免更新 pytorch 到最新版本。
- # 另外,如果安装依赖库的时间过长,可以指定 pypi 源
- pip install 安装包==指定版本 -i https://pypi.tuna.tsinghua.edu.cn/simple
-
- pip install torchvision==0.11.1 --no-deps
-
- pip install torchaudio==0.10.0 --no-deps
5. 测试安装的pytorch和cuda,cudnn是否可用:
- python3
-
- print(torch.__version__) # 查看pytorch版本
- print(torch.cuda.is_available()) # 查看cuda是否可用 True
- print(torch.cuda.device_count()) # 查看cuda可用的数量
- print(torch.version.cuda) # 查看cuda版本
- from torch.backends import cudnn
- print(cudnn.is_available()) # 查看cudnn版本 True
- # <<< conda initialize <<<
- export CUDA_HOME=/usr/local/cuda
- export PATH=$PATH:$CUDA_HOME/bin
- export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PiATH}}
- export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
7. FAQ
1)conda基本命令:
- # 创建虚拟环境
- conda create -n 虚拟环境名称 python=3.8
- # 删除虚拟环境
- conda env remove --name 虚拟环境名称
- # 查看所安装的依赖包版本
- pip list
- # 查看pip安装的依赖包版本
- conda list|grep numpy
2)如果是源码安装的Pytorch,要卸载怎么办:
- pip uninstall torch
- python setup.py clean
同时卸载torchvision,torchaudio:
- pip uninstall torchvision
- pip uninstall torchaudio
在虚拟环境上通过pip安装的包在哪里:
- (BEVFormer) panxiying@ubuntu:~/Downloads$ pip -V
- pip 22.2.2 from /home/panxiying/.conda/envs/BEVFormer/lib/python3.8/site-packages/pip (python 3.8)
3)如果遇到问题怎么办:
一般谷歌/知乎搜索报错点,都能找到解决办法,以下是本人遇到的问题~~
- 1.解决pip找不到
- export PATH="/usr/local/bin:$PATH"
-
- 2.解决cuda和pytorch版本不配套
- cmake/Dependencies.cmake:43 (include)
- CMakeLists.txt:692 (include)
-
- pytorch1.12---》pytorch1.10
-
- 3.解决settools版本过低
- pip uninstall setuptools
- pip install setuptools==59.5.0
-
- 4.解决nvcc -V没找到
- export PATH=/usr/local/cuda-11.3/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH
linux下PATH环境变量覆盖问题:
当把最后一行注释后,能显示nvcc -V正常:
4) 如果远端服务器因为网络无法安装依赖,怎么办:
- # Colab制作arm的pytorch, 取包路径 https://drive.google.com/drive/my-drive
- https://colab.research.google.com/drive/#scrollTo=mFvs-1htHYcr
- # git下载仓
- from google.colab import drive
- drive.mount('/content/drive') # 资源都放这个路径下
- !rm -rf /content/pytorch1.10.0 && rm -rf /content/pytorch1.10.0.zip
- %cd /content
- !git clone --recursive --branch v1.10.0 https://github.com/pytorch/pytorch.git
- %cd /content/pytorch/
- !git submodule update --init --recursive --jobs 0
-
- # 打包
- !zip -r /content/pytorch1.10.0.zip /content/pytorch/
- %cd ..
- !cp ./pytorch1.10.0.zip /content/drive/MyDrive/
-