0%

Build Onnx Runtime For Jetson Xavier NX

本文主要参考 Onnx Runtime 官方dockerfiles编译指南

查看Jetson版本

1
jtop

根据jtop输出确定Jetson的系统版本号

测试镜像

在Nvidia镜像仓库中搜索自己需要的基础镜像。

当前常用的镜像有:

l4t-base

从概述中可知自r34.1及以后的版本中不再集成CUDA,CuDNN和TensorRT等组件。对于高度定制化的需求,可以使用此镜像安装特定的CUDA和TensorRT版本。并且官方很贴心的提供了可参考的Dockerfile模板

l4t-cuda

从名字可以得知此镜像集成了CUDA组件。

l4t-tensorrt

从名字可以得知此镜像集成了TensorRT组件。

l4t-jetpack

从概述中可以得知,此镜像集成了CUDA,CuDNN和TensorRT等组件,可作为通用程序开发的基础镜像。但是因为集成了CUDA等组件,此镜像磁盘空间占用较大。

l4t-ml

从概述中可知此镜像集成了非常多的常用组件,包括TensorFlow, PyTorch, JupyterLab和其他常用的机器学习库,并且包含了scikit-learn, scipy和Pandas等一些数据分析库。因此此镜像磁盘空间占用非常大,但是因为集成了很多库所以省去了很多的编译时间。

另外,对于一些常用的python库,Nvidia官方为Jetson专门提供了一个集合链接,可以从中查找需要的库进行下载安装。

我测试的系统版本是4.4 r35.1.0,可以选择l4t-ml镜像,省去了安装环境的时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FROM nvcr.io/nvidia/l4t-ml:r35.1.0-py3

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR ./app

ADD . .

RUN pip3 install --no-cache-dir onnxruntime_gpu-1.12.1-cp38-cp38-linux_aarch64.whl && rm onnxruntime_gpu-1.12.1-cp38-cp38-linux_aarch64.whl

RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

EXPOSE 8080
CMD ["python3", "./main.py"]

编译自定义镜像

由于官方提供的镜像要么只集成了基础组件,要么集成了太多的开源库,因此当在生产环境使用时,需要根据项目需要编译自己的镜像。通常项目组会构建自己的基础镜像,在基础镜像上根据项目的需要再加入更多的组件库。