conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。搞深度学习的应该都十分熟悉anaconda,但是NVIDIA Jetson Xavier NX是arm架构的,anaconda及其精简版miniconda并不支持arm64架构。现在主流的CPU架构分为Intel的x86/x64架构和ARM的ARM/ARM64两种,平常用的电脑大部分都是x86/x64的(苹果除外),Xavier使用的是ARM64,所以很多在x86/x64上能用的的东西到了它这里就不能用了。这一点请谨记,如果你在Jetson上遇到什么奇奇怪怪的例如“No such file or directory”之类的问题,第一时间要考虑是不是版本不是ARM64的版本。
在ARM64上的anaconda替代品是miniforge,miniforge与miniconda的区别在于miniforge的下载通道是conda-forge,其他基本没什么不同。
(1)先到miniforge的官方下载地址下载对应的sh文件:https://github.com/conda-forge/miniforge/releases
别下错了,例如我下载的是Miniforge-pypy3-4.10.3-3-Linux-aarch64.sh
,代表适用于arrch64架构下的Linux系统。(ARM64对应32位和64位分为arrch32和arrch64)
(2)进入到miniforge的sh文件所在目录,右键打开Terminal,输入以下命令进行安装:
sh Miniforge-pypy3-4.10.3-3-Linux-aarch64.sh
(3)安装完毕后,添加环境变量,否则会出现bash:conda Command not found
的错误。顺便提一下vim编辑器按a是进入编辑模式,编辑完毕后按ESC退出编辑模式,再输入:wq!是保存并退出。总感觉有人不知道。
# 编辑环境变量
vim ~/.bashrc
# 增加环境变量, 将换成你的用户名
export PATH=/home/<username>/miniforge-pypy3/bin:$PATH
# 激活环境变量
source ~/.bashrc
# 显示(base)
source activate
(4)更换下载源为清华源
conda config --prepend channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --prepend channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
(5)更换pip源
创建并进入pip.conf文件
mkdir ~/.pip
cd ~/.pip
vim pip.conf
在pip.conf 文件中添加
[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple/
安装完毕。
这个教程是在miniforge上安装PyTorch的,如果你不想装在虚拟环境上,可以参考这篇博客。
安装完miniforge后,打开终端,命令行前面应该有个(base)
,表示base环境,就像下图一样。如果没有,那就输入:source activate
激活miniforge。
直接输入命令安装PyTorch,pip3
是python3的pip,如果没装,就换成pip
。
pip3 install -U future psutil dataclasses typing-extensions pyyaml tqdm seaborn
wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl
pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl
如果网络不好的话,也可以先把PyTorch的whl文件下载下来,NVIDIA官方网址是:https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-9-0-now-available/72048
将对应的.whl放到Xavier上,cd进入目录,输入pip3 install torch-1.8.0-cp36-cp36m-linux_aarch64.whl
安装完毕后可以在终端输入以下命令检验PyTorch是否正确安装:
python3 -c 'import torch; print(torch.cuda.is_available())'
正常来说,会返回True
如果出现Illegal instruction (core dumped)
的错误,这是由于numpy 1.19.5和OpenBLAS冲突引起的,修改其中一项即可。选择以下两种做法之一:
(1)降低numpy版本
pip3 install -U "numpy==1.19.4"
(2)设置OpenBLAS
vim ~/.bashrc
加入
export OPENBLAS_CORETYPE=ARMV8
然后激活.bashrc
source ~/.bashrc
Pytorch除了torch包之外还需要安装对应的torchvision才能运行,两者的版本对应关系如下图:
PyTorch 1.8对应的是torchvision v0.9.0 输入以下命令完成安装sudo apt install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
pip3 install --upgrade pillow
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.9.0
python3 setup.py install --user
cd .. # running torch from torchvision/ will fail
之后可以尝试跑自己的代码测试PyTorch功能了。
https://blog.csdn.net/qq_39567427/article/details/109158918
https://cognitivexr.at/blog/2021/03/11/installing-pytorch-and-yolov5-on-an-nvidia-jetson-xavier-nx.html