1 安装miniforge

1.1 miniforge简介

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.2 miniforge安装教程

(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
# 增加环境变量, 将<username>换成你的用户名
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/ 

安装完毕。

2 安装PyTorch

2.1 安装新的虚拟环境

这个教程是在miniforge上安装PyTorch的,如果你不想装在虚拟环境上,可以参考​​这篇博客​​。

安装完miniforge后,打开终端,命令行前面应该有个​​(base)​​,表示base环境,就像下图一样。如果没有,那就输入:​​source activate​​激活miniforge。

NVIDIA Jetson Xavier NX入门(3)——安装miniforge和Pytorch_环境变量 输入以下命令创建一个虚拟环境,输入y继续。这里推荐的python版本是3.6,因为英伟达官方提供的PyTorch安装包是python3.6的,如果选择其他版本就要自己去找安装包了。 ```bash conda create -n pytorch python=3.6 ``` 激活该环境 ```bash conda activate pytorch ```

2.2 PyTorch 1.8

直接输入命令安装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​

NVIDIA Jetson Xavier NX入门(3)——安装miniforge和Pytorch_python_02 将对应的.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​

排错1

如果出现​​ 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

2.3 torchvision v0.9.0

Pytorch除了torch包之外还需要安装对应的torchvision才能运行,两者的版本对应关系如下图:

NVIDIA Jetson Xavier NX入门(3)——安装miniforge和Pytorch_vim_03 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://cognitivexr.at/blog/2021/03/11/installing-pytorch-and-yolov5-on-an-nvidia-jetson-xavier-nx.html​