Jetson Orin Nano Super之 onnxruntime 编译安装

1. 源由

onnxruntime 受到TensorRT版本的限制,在8.x TensorRT阶段支持的并不太好,尤其由于接口的变化,兼容性并不理想。

从 Jetson Orin Nano Super 开始,也就是Jetpack 6.2之后,TensorRT据反馈说是能够升级,从前面的软件版本和API设计/维护看,非常吃力!!!

2. 步骤

步骤一:安装3.26 cmake

$ sudo apt remove --purge cmake
$ wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-aarch64.sh
$ sudo mkdir -p /opt/cmake
$ sudo sh cmake-3.26.4-linux-aarch64.sh --prefix=/opt/cmake --skip-license
$ echo 'export PATH=/opt/cmake/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc

确认版本安装成功:

$ cmake --version

步骤二:下载代码

$ git clone https://github.com/SnapDragonfly/onnxruntime.git
$ cd onnxruntime
$ git checkout nvidia_v1.19.2

步骤三:编译代码

$ export PATH="/usr/local/cuda/bin:${PATH}"
$ export CUDACXX="/usr/local/cuda/bin/nvcc"

$ ./build.sh --config Release --update --build --parallel --build_wheel \
    --use_tensorrt --cuda_home /usr/local/cuda --cudnn_home /usr/lib/aarch64-linux-gnu \
    --tensorrt_home /usr/lib/aarch64-linux-gnu

步骤四:找到安装包

或者进入到该目录下进行安装。

$ ls build/Linux/Release/dist/
build/Linux/Release/dist/onnxruntime_gpu-1.19.2-cp310-cp310-linux_aarch64.whl

步骤五:安装whl包

$ cd build/Linux/Release/dist/
$ python3 -m pip install --no-cache onnxruntime_gpu-1.19.2-cp310-cp310-linux_aarch64.whl

3. 注意

编译过程需要注意onnxruntime和TensorRT的API兼容性问题。

4. 参考资料

【1】Jetson Orin Nano Super之pytorch + torchvision安装
【2】Jetson Orin Nano Super之jetson-fpv开源代码下载
【3】Ardupilot开源无人机之Geek SDK进展2024-2025

### 部署和运行 ONNX 模型于 Jetson Orin Nano #### 准备工作 为了确保能够在 Jetson Orin Nano 上顺利部署和运行 ONNX 模型,需先完成必要的准备工作。这包括但不限于安装所需的依赖库以及配置开发环境。 - 安装 TensorRT 和其他必需工具包,这些可以通过 NVIDIA 提供的官方文档获取指导[^1]。 ```bash sudo apt-get update && sudo apt-get install -y tensorrt python3-libnvinfer-dev uff-converter-tf onnx-graphsurgeon ``` #### 转换 ONNX 至 TensorRT Engine 文件 直接利用 `trtexec` 工具转换可能会遇到兼容性问题或错误报告[^2]。推荐采用 Python API 或者通过编写自定义脚本来实现更稳定的转换流程: ```python import tensorrt as trt from polygraphy.backend.common import bytes_from_path from polygraphy.comparator import DataLoader, CompareFunc, Comparator from polygraphy.logger import G_LOGGER from polygraphy.backend.trt import CreateConfig, engine_from_bytes, NetworkFromOnnxPath, SaveEngine def build_engine(onnx_file_path="model.onnx", output_engine_path="model.engine"): with trt.Builder(TRT_LOGGER) as builder, \ builder.create_network() as network, \ trt.OnnxParser(network, TRT_LOGGER) as parser: config = builder.create_builder_config() config.max_workspace_size = 1 << 30 model_stream = open(onnx_file_path, 'rb').read() if not parser.parse(model_stream): for error in range(parser.num_errors): print(parser.get_error(error)) serialized_engine = builder.build_serialized_network(network, config) with open(output_engine_path, "wb") as f: f.write(serialized_engine) if __name__ == "__main__": build_engine() ``` 此方法允许更加灵活地调整参数设置,并能有效规避潜在的问题。 #### 使用 DeepStream 进行推理 一旦成功创建了 `.engine` 文件,则可以借助 DeepStream SDK 来加载该模型并执行实时视频分析任务。具体操作可参照 NVIDIA 发布的相关教程来构建应用管道。 ```bash deepstream-app -c <path_to_your_config_file> ``` 其中 `<path_to_your_config_file>` 是指向已编辑好的配置文件路径,在这里应当指定之前生成的 TensorRT 模型位置以及其他必要的选项。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值