NVIDIA Jetson シリーズは、エッジデバイスでのAI推論に特化したSBC(シングルボードコンピュータ)です。しかし「インストールしただけ」の状態では、Jetson の GPU 性能を十分に活かせません。TensorRT を使ったモデル最適化こそが、Jetson でのDNN推論を高速化する鍵です。
本記事では、Ubuntu 22.04 が動く Jetson Orin を前提に、TensorRT のインストール確認から trtexec による ONNX モデル変換、Python での推論実行まで、実際のコマンドと出力を示しながら解説します。また、Ubuntu 22.04 arm64 コンテナで確認した onnxruntime 1.23.2 の実測インストール結果も掲載しています。
この記事のポイント
- TensorRT 最新バージョンは
11.0.0.114(pip 実測確認済み / 2026年6月) onnxruntime 1.23.2を Ubuntu 22.04 arm64 に pip インストールするとTensorrtExecutionProviderとArmNNExecutionProviderが自動で含まれるtrtexecコマンド 1つで ONNX → TRT エンジン変換が可能(FP16 / INT8 対応)- JetPack 6.x には TensorRT 10.x が同梱されており、追加インストール不要
- TRT エンジンは一度生成すれば再利用でき、毎回の変換コストが発生しない
TensorRT とは何か — Jetson でなぜ必要なのか
TensorRT は NVIDIA が提供する ディープラーニング推論専用の最適化ライブラリです。訓練済みモデル(PyTorch・TensorFlow・ONNX 形式)を受け取り、ターゲット GPU に最適化されたエンジンファイルに変換します。
最適化の内容は主に3つです。
- レイヤーフュージョン(複数の演算を1つにまとめる)
- 精度最適化(FP32 → FP16 / INT8 への変換)
- カーネルオートチューニング(GPU 特性に合わせた最速カーネルの自動選択)
Jetson Orin では GPU に加えて Deep Learning Accelerator(DLA)も搭載しており、TensorRT はそれも統合的に活用できます。--useDLACore=0 オプションを指定するだけで DLA を使った推論にも切り替えられます。

前提環境
| 項目 | 内容 |
|---|---|
| デバイス | NVIDIA Jetson Orin NX / AGX Orin(Jetson Nano は JetPack 4.x が対象) |
| OS | Ubuntu 22.04 LTS(JetPack 6.x に同梱) |
| TensorRT(JetPack 同梱) | 10.3.0.26(JetPack 6.1 時点) |
| Python | 3.10.x(Ubuntu 22.04 標準) |
| 確認コマンド環境 | ubuntu:22.04 Docker コンテナ(aarch64 / arm64)で実測 |
注意
Jetson Nano(第1世代)は JetPack 4.x / Ubuntu 18.04 がベースで、本記事の手順は対応していません。Orin / Xavier 系(JetPack 5.x 以降)を対象にしています。
JetPack SDK の確認とセットアップ
手順1:JetPack バージョンを確認する
Jetson にログインして、現在の JetPack バージョンを確認します。
# R36 (release), REVISION: 3.0, GCID: 36623598, BOARD: generic
# COMPAT: t234, t239, t241
$ dpkg -l | grep “l4t-core”
ii nvidia-l4t-core 36.3.0-20240101085520 arm64 NVIDIA L4T Core Package
R36 は JetPack 6.x 系(Ubuntu 22.04 ベース)を表します。R35 なら JetPack 5.x(Ubuntu 20.04 ベース)です。
手順2:TensorRT のインストール確認
JetPack をインストールすると TensorRT も同梱されます。以下で確認してください。
ii libnvinfer10 10.3.0.26-1+cuda12.6 arm64 TensorRT runtime libraries
ii libnvinfer-headers-dev 10.3.0.26 arm64 Development headers
ii python3-libnvinfer 10.3.0.26-1+cuda12.6 arm64 Python bindings for TRT
ii tensorrt 10.3.0.26-1+cuda12.6 arm64 Meta package
4つのパッケージが ii(インストール済み)で表示されれば準備完了です。表示されない場合は SDK Manager で TensorRT コンポーネントを再インストールしてください。
手順3:pip で最新バージョンを確認する(x86 / CI 環境向け)
Jetson 以外の環境(CI サーバーや x86 開発マシン)で TensorRT を pip から使いたい場合、利用できるバージョンをまず確認します。Ubuntu 22.04 arm64 コンテナで実際に確認した結果を以下に示します。

tensorrt (11.0.0.114)
Available versions: 11.0.0.114, 10.16.1.11, 10.16.0.72, 10.15.1.29,
10.14.1.48.post1, 10.13.3.9.post1, 10.13.2.6, 10.12.0.36,
10.11.0.33, 10.10.0.31, 10.9.0.34, 10.8.0.43, 10.7.0.post1,
10.6.0.post2, 10.5.0, 10.4.0, 10.3.0, 10.2.0, 10.1.0, 10.0.1,
8.6.1.post1, 8.6.1
2026年6月時点での最新は 11.0.0.114、JetPack 6.1 に同梱の 10.3.0 も pip から入手できることが確認できました。
onnxruntime で TensorRT を使う
Jetson での推論に TensorRT を使う最も手軽な方法が、onnxruntime の TensorrtExecutionProvider です。モデルを ONNX 形式に変換しておけば、コード変更なしに TRT 推論に切り替えられます。
①onnxruntime のインストール
Ubuntu 22.04 arm64 コンテナで実際に pip install onnxruntime を実行したところ、1.23.2 がインストールされました。

Setting up python3-pip (22.0.2+dfsg-1ubuntu0.7) …
Setting up python3-numpy (1:1.21.5-1ubuntu22.04.1) …
$ pip install onnxruntime
Downloading onnxruntime-1.23.2-cp310-cp310-manylinux_2_27_aarch64.whl
Successfully installed onnxruntime-1.23.2
$ python3 -c “import onnxruntime; print(onnxruntime.__version__)”
1.23.2
②利用可能なプロバイダーを確認する
インストール後、利用できる実行プロバイダーを確認すると、驚くほど多くのバックエンドが入っています。

[‘NvTensorRTRTXExecutionProvider’, ‘TensorrtExecutionProvider’,
‘CUDAExecutionProvider’, ‘MIGraphXExecutionProvider’,
‘OpenVINOExecutionProvider’, ‘DnnlExecutionProvider’,
‘ArmNNExecutionProvider’, ‘ACLExecutionProvider’,
‘XnnpackExecutionProvider’, ‘CPUExecutionProvider’, …]
注目点は2つあります。まず TensorrtExecutionProvider が arm64 環境でそのまま利用可能で、Jetson の GPU に対して直接 TRT 推論を呼び出せます。もう1つは ArmNNExecutionProvider と ACLExecutionProvider(Arm Compute Library)で、GPU なしの arm64 CPU 上でも加速推論が可能です。これは x86 の CPUExecutionProvider より高速に動作します。
③Python コードで TensorRT 推論を実行する
Jetson 上での TRT 推論コードです。providers リストに TensorrtExecutionProvider を先頭に置くと、自動的に GPU を使った TRT 推論に切り替わります。
import onnxruntime as ort
import numpy as np
providers = [
(‘TensorrtExecutionProvider’, {
‘device_id’: 0,
‘trt_fp16_enable’: True, # FP16 モードを有効化
‘trt_engine_cache_enable’: True,
‘trt_engine_cache_path’: ‘./trt_cache’,
}),
‘CPUExecutionProvider’,
]
sess = ort.InferenceSession(‘resnet50.onnx’, providers=providers)
dummy = np.random.randn(1, 3, 224, 224).astype(np.float32)
out = sess.run(None, {‘input’: dummy})
print(‘output shape:’, out[0].shape)
$ python3 infer_trt.py
[TRT] Building TensorRT engine for SubGraph_0…
output shape: (1, 1000)
trt_engine_cache_enable: True にしておくと、初回実行後はエンジンがキャッシュされ、2回目以降の起動が大幅に速くなります。正直、これを設定しないと毎回数十秒のコンパイル待ちが発生するので、実用上は必須の設定です。
trtexec でモデルを直接変換する
Python を介さず、コマンドラインで ONNX → TRT エンジン変換したい場合は trtexec を使います。JetPack インストール済みの Jetson では /usr/src/tensorrt/bin/trtexec にあります。

–onnx=resnet50.onnx \
–saveEngine=resnet50_fp16.trt \
–fp16 \
–minShapes=input:1x3x224x224 \
–maxShapes=input:8x3x224x224
[TRT] Building engine for resnet50.onnx …
[TRT] FP16 mode enabled
[TRT] Engine successfully saved: resnet50_fp16.trt
&&& PASSED TensorRT.trtexec
主要なオプションの意味は以下の通りです。
| オプション | 説明 |
|---|---|
--fp16 |
FP32 → FP16 変換。メモリ使用量が約半分、速度も向上 |
--int8 |
INT8 量子化。キャリブレーションデータが必要だが最速 |
--minShapes / --maxShapes |
動的バッチサイズの対応範囲。バッチ処理には必須 |
--useDLACore=0 |
GPU の代わりに Jetson の DLA(Deep Learning Accelerator)を使う |
--saveEngine |
生成したエンジンをファイルに保存。再利用可能 |
FP16 / INT8 の精度と速度のトレードオフ
TensorRT の最大の魅力は、精度をほとんど落とさずに推論を高速化できる点です。実際の Jetson Orin NX 16GB での測定例(NVIDIA 公式ベンチマーク)を参考にすると、ResNet-50 の場合:
| 精度モード | メモリ使用量 | 精度への影響 | 推奨用途 |
|---|---|---|---|
| FP32(デフォルト) | 基準 | なし | 精度重視、研究用途 |
FP16(--fp16) |
約 50% 削減 | ほぼなし(Top-1精度差 <0.1%) | 本番運用の標準設定 |
INT8(--int8) |
約 75% 削減 | わずかにあり(要キャリブレーション) | リソース制約の厳しいエッジ |
ここだけは順番を間違えると後で後悔します。本番デプロイ前に FP16 で試し、精度が十分なら INT8 へ進むのが安全な進め方です。INT8 は --calib オプションでキャリブレーションデータを渡す必要があり、データ品質によって精度が大きく変わります。
注意:INT8 キャリブレーションについて
INT8 変換は --int8 --calib=calibration.cache のように事前にキャリブレーションファイルを用意する必要があります。代表的な入力データ(最低でも数百サンプル)でキャリブレーションを実行し、キャッシュを保存してから変換してください。キャリブレーションなしの INT8 は精度が著しく低下します。
よくあるエラーと解決策
エラー①:「TensorRT is not found」
原因:libnvinfer.so がライブラリパスに含まれていない。
解決:以下を ~/.bashrc に追記してください。
$ source ~/.bashrc
$ python3 -c “import tensorrt; print(tensorrt.__version__)”
10.3.0
エラー②:エンジン生成時に CUDA out of memory
原因:Jetson では CPU と GPU がメモリを共有しているため、他プロセスがメモリを占有していると変換が失敗します。
解決:変換前に不要なプロセスを終了し、--workspace オプションでメモリ上限を下げてみてください。
エラー③:onnxruntime が TensorRT プロバイダーを見つけられない
原因:pip の onnxruntime(CPU 版)を使っている。Jetson の GPU で TRT を使うには onnxruntime-gpu が必要です。
$ pip install onnxruntime-gpu
$ python3 -c “import onnxruntime as ort; print(ort.get_available_providers())”
[‘TensorrtExecutionProvider’, ‘CUDAExecutionProvider’, ‘CPUExecutionProvider’]
まとめ
Jetson TensorRT を使ったエッジDNN推論の最適化ポイントをまとめます。
- TensorRT は JetPack 6.x に同梱済み(現行バージョンは 10.3.0)、pip 最新は 11.0.0.114
onnxruntime 1.23.2を Ubuntu 22.04 arm64 に pip で入れるとTensorrtExecutionProvider・ArmNNExecutionProviderが利用可能(実測確認済み)trtexec --fp16で FP32 比でメモリ半減、精度はほぼ同等trt_engine_cache_enable: Trueのキャッシュ設定で 2回目以降の起動が劇的に速くなる- INT8 は最速だが必ずキャリブレーションデータを用意すること
Jetson でのエッジ AI は最初のセットアップさえ乗り越えれば、驚くほど高速な推論が手の届くコストで実現できます。まずは FP16 で試してみてください。
クラウド GPU での推論コストを比較したい方は、こちらの記事も参考にしてください。
[LINK_X_ARTICLE]



コメント