本文主要参考 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 | FROM nvcr.io/nvidia/l4t-ml:r35.1.0-py3 |
编译自定义镜像
由于官方提供的镜像要么只集成了基础组件,要么集成了太多的开源库,因此当在生产环境使用时,需要根据项目需要编译自己的镜像。通常项目组会构建自己的基础镜像,在基础镜像上根据项目的需要再加入更多的组件库。