Nvidia jetson从零搭建深度学习环境

最近要用orin跑深度学习部署,我的设备:jetson orin AGX 8核。

注:nvidia jeson orin nano和orin nx模组已经可以升级成super模式了。

一. 环境准备

1. orin安装conda

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

选择aarch64架构

下载后运行:

sh ./Anaconda3-2021.04-Linux-aarch64.sh

一直回车,中间需要输入两次yes,安装成功。

2. 安装jetpack、cuda、cudnn

Jetpack可以理解为Jetson系列板上的软件开发工具包,所有常用的开发kit里面都有。apt安装Jetpack时默认直接装上与jetson版本号适配的cuda、cudnn、TensorRT。

sudo apt upgrade
sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack

安装pip:

sudo apt install python3-pip

修改pip默认源为清华源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装 Jtop

sudo -H pip3 install -U pip
sudo -H pip install jetson-stats

安装完成后reboot,输入jtop:

 输入:sudo jetson_release

 cuda已经默认安装在/usr/local/cuda下,运行:

sudo nano ~/.bashrc

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

保存后更新:

source ~/.bashrc

运行nvcc -V查看cuda版本号:

进行头文件的动态链接:

#复制文件到cuda目录下
cd /usr/include && sudo cp cudnn* /usr/local/cuda/include
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda/lib64

#修改文件权限,修改复制完的头文件与库文件的权限,所有用户都可读,可写,可执行:
sudo chmod 777 /usr/local/cuda/include/cudnn.h
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*

#重新软链接,这里的8.6.0和8对应安装的cudnn版本号和首数字
cd /usr/local/cuda/lib64

sudo ln -sf libcudnn.so.8.6.0 libcudnn.so.8

sudo ln -sf libcudnn_ops_train.so.8.6.0 libcudnn_ops_train.so.8
sudo ln -sf libcudnn_ops_infer.so.8.6.0 libcudnn_ops_infer.so.8

sudo ln -sf libcudnn_adv_train.so.8.6.0 libcudnn_adv_train.so.8
sudo ln -sf libcudnn_adv_infer.so.8.6.0 libcudnn_adv_infer.so.8

sudo ln -sf libcudnn_cnn_train.so.8.6.0 libcudnn_cnn_train.so.8
sudo ln -sf libcudnn_cnn_infer.so.8.6.0 libcudnn_cnn_infer.so.8

sudo ldconfig

 测试cudnn:

sudo cp -r /usr/src/cudnn_samples_v8/ ~/
cd ~/cudnn_samples_v8/mnistCUDNN
sudo chmod 777 ~/cudnn_samples_v8
sudo make clean && sudo make
./mnistCUDNN

 报错:

 补充配置:

sudo apt-get install libfreeimage3 libfreeimage-dev

重新运行。配置成功后显示:test passed!

3. 安装pytorch、torchvision

我的jetpack版本为5.1.2,对应相关库版本参照官网zoo:

Jetson Zoo - eLinux.org

前往Nvidia论坛,下载Jetson NX专用的pytorch安装包。

传送门:PyTorch for Jetson - Announcements - NVIDIA Developer Forums

我下载V2.1.0

创建conda环境:conda create --name loc python=3.8

安装nvidia编译好的pytorch库文件:下载2.1.0版本
conda activate loc
sudo apt-get -y update

sudo apt-get -y install autoconf bc build-essential g++-8 gcc-8 clang-8 lld-8 gettext-base gfortran-8 iputils-ping libbz2-dev libc++-dev libcgal-dev libffi-dev libfreetype6-dev libhdf5-dev libjpeg-dev liblzma-dev libncurses5-dev libncursesw5-dev libpng-dev libreadline-dev libssl-dev libsqlite3-dev libxml2-dev libxslt-dev locales moreutils openssl python-openssl rsync scons python3-pip libopenblas-dev

pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl

安装torchvision
PyTorch中torch、torchvision、torchaudio、torchtext版本对应关系_torch2.0.1对应的torchvision-优快云博客

对应找torchvision版本,我需要安装 0.16.1

PyTorch v1.8 - torchvision v0.9.0
PyTorch v1.9 - torchvision v0.10.0
PyTorch v1.10 - torchvision v0.11.1
PyTorch v1.11 - torchvision v0.12.0
PyTorch v1.12 - torchvision v0.13.0
PyTorch v1.13 - torchvision v0.13.0
PyTorch v1.14 - torchvision v0.14.1
PyTorch v2.0 - torchvision v0.15.1
PyTorch v2.1 - torchvision v0.16.1
PyTorch v2.2 - torchvision v0.17.1
PyTorch v2.3 - torchvision v0.18.0

jetson上的gpu版本torchvision没有现成的安装包,需要自己编译安装(之前直接pip install torchvision,安装的是cpu版本,导致最后跑算法的时候用不了cuda)

# 安装工具链
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
# 下载torchvision
git clone --branch v0.16.1 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.16.1  # v0.16.1 为torchvision版本
python3 setup.py install --user

这里一直出错,报: 

running build_ext
error: [Errno 2] No such file or directory: ':/usr/local/cuda/bin/nvcc'

 解决方法:

执行:

export CUDA_HOME=/usr/local/cuda

后再重新安装。

后面又出现了一个报错:

/home/priscilla/Downloads/torchvision/torchvision/csrc/io/decoder/stream.cpp:68:42: error: ‘AV_CODEC_CAP_INTRA_ONLY’ was not declared in this scope; did you mean ‘AV_CODEC_PROP_INTRA_ONLY’? 68 | if (codecCtx_->codec->capabilities & AV_CODEC_CAP_INTRA_ONLY) { | ^~~~~~~~~~~~~~~~~~~~~~~ | AV_CODEC_PROP_INTRA_ONLY error: command '/usr/bin/g++' failed with exit code 1

解决方式:

应用修复:

sed -i 's/AV_CODEC_CAP_INTRA_ONLY/AV_CODEC_PROP_INTRA_ONLY/g'     torchvision/csrc/io/decoder/stream.cpp

测试修复:

grep -n "INTRA_ONLY" torchvision/csrc/io/decoder/stream.cpp^C

再次编译,终于成功。。。

4. 软链接tensorrt

jetpack自动安装的tensorrt路径在:/usr/lib/python3.8/dist-packages/

运行:

sudo ln -s /usr/lib/python3.8/dist-packages/tensorrt* /home/priscilla/anaconda3/envs/loc/lib/python3.8/site-packages

测试:

python -c "import tensorrt;print(tensorrt.__version__)"

出现版本号,则安装成功。

5. 检查cuda使用:

python -c "import torch; import torchvision; print('PyTorch version:', torch.__version__); print('CUDA available:', torch.cuda.is_available()); print('CUDA version:', torch.version.cuda); print('cuDNN enabled:', torch.backends.cudnn.enabled); print('cuDNN version:', torch.backends.cudnn.version()); print('Torchvision version:', torchvision.__version__)"

运行:

python

import torch

print(torch.cuda.is_available())

终于显示为true了。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codieyoung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值