Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Inference Engine

推論エンジンは、レイヤーの融合、低精度化、最適化されたカーネルを使い、ターゲットハードウェア上で学習済みモデルを実行します。仕組みと一般的なエンジンについて解説します。

推論エンジンとは、学習済みのニューラルネットワークを実行し、新しいデータに対する予測を生成するソフトウェアです。学習フレームワークからエクスポートされたモデルを受け取り、通常はONNXファイルのような計算グラフとして読み込み、そのグラフを特定のプロセッサ向けに最適化して、推論レイテンシとメモリ使用量をできるだけ抑えて実行します。データセンターのGPUからスマートフォンやマイクロコントローラーまで、あらゆる種類のハードウェアに対応するエンジンがあります。モデルデプロイでは、エンジンがすべての予測を計算するコンポーネントです。

推論エンジンがモデルを高速化する仕組み#

デプロイ済みモデルの重みは更新されないため、エンジンは誤差逆伝播用に保存する活性化値など、学習に必要な要素をすべて省き、グラフを自由に書き換えられます。定数のみに依存する部分は事前計算し、畳み込み、正規化、活性化などのレイヤー列を単一のカーネルに融合して、中間結果を高速なオンチップメモリに保持し、バッファを再利用するようメモリを計画します。モデル量子化によって数値精度をFP16やINT8に下げることができ、INT8ではサンプルデータを使って活性化値の範囲を測定します。TensorRTなどのエンジンは、実際のデバイス上で各レイヤーの複数のカーネル候補を実行して時間を計測し、最速のものを採用するため、結果はそのハードウェアに依存します。

バッチ正規化を直前の畳み込みに畳み込む処理は、最も一般的な書き換えの1つです。推論時の正規化は、各チャネルを固定値でスケーリングしてシフトするだけなので、それらの値を畳み込みの重みとバイアスに統合できます。PyTorchでは、同じ変換をfuse_conv_bn_evalとして公開しています。

import torch
from torch.nn.utils.fusion import fuse_conv_bn_eval

torch.manual_seed(0)

# A trained convolution followed by batch normalization (random statistics here)
conv = torch.nn.Conv2d(16, 32, kernel_size=3, padding=1).eval()
bn = torch.nn.BatchNorm2d(32).eval()
bn.running_mean.uniform_(-1, 1)
bn.running_var.uniform_(0.5, 2.0)

# Fold the normalization's scale and shift into the convolution's weights and bias
fused = fuse_conv_bn_eval(conv, bn)

# One layer now replaces two and produces the same output
x = torch.randn(1, 16, 64, 64)
with torch.inference_mode():
    diff = (bn(conv(x)) - fused(x)).abs().max().item()
print(f"Max difference after fusing: {diff:.1e}")

最大差は2.1e-06と出力されます。これは浮動小数点の丸め誤差です。融合後の単一レイヤーは、メモリを2回ではなく1回走査して、元の2つのレイヤーと同じ関数を計算します。

一般的な推論エンジン#

  • TensorRT: データセンター向けGPUとJetsonモジュール用のNVIDIA製エンジンです。GPUモデルとTensorRTのバージョンを指定してプランを構築するため、どちらかが変わるとエンジンを再構築します。
  • OpenVINO: Intel製CPU、内蔵GPUとディスクリートGPU、NPU向けのツールキットです。
  • ONNX Runtime: ONNXモデル向けのMicrosoft製クロスプラットフォームエンジンです。CUDA、TensorRT、OpenVINO、Core MLなど、実行プロバイダーと呼ばれるハードウェアバックエンドに処理を委ねます。
  • LiteRT: 旧称TensorFlow LiteのGoogle製ランタイムです。Android、組み込みLinux、マイクロコントローラーに対応し、モバイルGPUやNPU向けのデリゲートを備えています。
  • Core ML: CPU、GPU、Neural Engineに処理を分散するApple製オンデバイスフレームワークです。
  • vLLM: 大規模言語モデル向けのオープンソースエンジンです。リクエストのスケジューリングとアテンションキャッシュ用のページングメモリを追加し、多数のユーザーに同時に応答できます。

Ultralytics YOLO APIは読み込むファイルに基づいてエンジンを選択するため、同じpredict呼び出しで、PyTorchの.ptチェックポイント、ONNX Runtimeの.onnxファイル、TensorRTの.engineファイル、またはOpenVINOのフォルダーを実行できます。Ultralytics YOLO26をOpenVINOにエクスポートして読み込めば、ほかのコードを変更せずにエンジンを切り替えられます。

from ultralytics import YOLO

# PyTorchモデルをOpenVINO形式にエクスポートします
model = YOLO("yolo26n.pt")
path = model.export(format="openvino")  # creates 'yolo26n_openvino_model/'

# エクスポートしたフォルダーを読み込むと、OpenVINOエンジンで予測が実行されます
ov_model = YOLO(path)
results = ov_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_openvino.jpg")
  • PyTorchなどの学習フレームワーク: グラフを柔軟に保ち、勾配計算用に操作を記録するため、モデルの設計と学習に適しています。推論も実行できますが、単一デバイス向けに構築されたエンジンよりオーバーヘッドが大きくなります。
  • ONNX: モデルのグラフと重みを記述するファイル形式です。ONNX RuntimeやTensorRTは、この形式を読み込むエンジンです。
  • モデルサービング: 1つ以上のエンジンを、API、リクエストのバッチ処理、バージョン管理を備えたネットワークサービスとして提供します。以前はTriton Inference Serverと呼ばれていたNVIDIA Dynamo-Tritonは、TensorRT、ONNX Runtime、PyTorchのモデルに対してこの機能を提供します。
  • エキスパートシステムの推論エンジン: この用語の古い意味であり、ルールベースAIにおいて、推論エンジンが前向き連鎖または後向き連鎖によって知識ベースにif-thenルールを適用するものです。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう