Benchmarking Edge Inference Strategies for Deep Learning Models in Industrial Machine Vision
本論文は、様々な産業用ハードウェアおよびモデルアーキテクチャにわたる4つの推論フレームワーク(PyTorch、ONNX Runtime、OpenVINO、およびTensorRT)の比較研究を提示しており、OpenVINOがCPUにおいて、TensorRTがGPUにおいてそれぞれ最高の性能を提供することを明らかにしているが、TransformerベースのモデルにおいてはTensorRTが必ずしも通常のPyTorchを上回るわけではない。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
脳(ディープラーニングモデル)からロボットの手(産業用機械)へ、いかに速くメッセージを届けるかを想像してみてください。産業用マシンビジョンの世界では、スピードこそがすべてです。ロボットの反応が遅すぎると、自動車部品の欠陥を見逃したり、ブドウの選別を失敗したりしてしまいます。通常、このデータを巨大なクラウドサーバーに送るのは遅すぎたり、リスクがあったりするため、エンジニアは「脳」をロボットのローカルコンピュータ(エッジ)上で直接動かそうと試みます。
しかし、ここにひねりがあります。たとえ「脳」を持っていても、適切な「配送サービス」を持っていなければなりません。この論文は、4つの異なる「配送トラック」(ソフトウェアフレームワーク)を比較し、どれが最も速くロボットにメッセージを届けるかを検証する、大規模なレーストラックのテストのようなものです。4つのトラックとは、PyTorch(標準的で信頼できるベースライン)、ONNX Runtime(柔軟なオールラウンダー)、OpenVINO(Intel製エンジン専用のスペシャリスト)、そしてTensorRT(NVIDIA製エンジンのスピード狂)です。
研究者たちは単に推測したわけではありません。実際に3種類の「脳」を4種類の「シャシー」(コンピュータ)上で走らせ、ミリ秒単位で時間を計測しました。レースの結果は以下の通りです。
CPUレース:エンジンブランドがすべてを決める
標準的なIntelプロセッサ(多くのデスクトップで見られるもの)を使用したコンピュータでは、結果は驚くほど一貫していました。OpenVINOが明確な勝者であり、そのエンジン専用に設計されたターボチャージャーのように機能しました。
- Intelデスクトップにおいて、OpenVINOはテストされたすべてのモデルで最速でした。
- YOLOv8モデル(高速な物体検出器)の場合、OpenVINOは膨大な時間を短縮しました。最も高速なIntelデスクトップ(i9-9820X)において、OpenVINOはわずか10.9 msで完了しましたが、標準的なPyTorchは28.7 msかかりました。これは劇的な向上です!
- ONNX Runtimeは通常2位に入り、PyTorchが最も遅い結果となりました。
しかし、Jetson AGX Orin(ロボットに使用される小型で強力な、IntelではなくARMチップを使用するコンピュータ)に切り替えると、レースの様相は一変しました。突然、OpenVINOの魔法は解けてしまいました。
- このARMベースのマシンでは、ONNX Runtimeが金メダルを獲得しました。
- Grounding DINOモデル(テキストと画像を理解する複雑なモデル)における差は衝撃的でした。Jetson CPUにおいて、OpenVINOは驚愕の102,720 ms(100秒以上!)を要したのに対し、ONNX Runtimeはわずか13,580 msで完了しました。7倍以上の速度差があります!これは、特定のエンジンに対して「間違った」配送トラックを使うことが、いかに災難をもたらすかを示唆しています。
GPUレース:CNN vs. Transformer の対決
研究者が強力なNVIDIA製グラフィックスカード(GPU)に切り替えると、物語はさらに面白くなりました。彼らは2種類の「脳」をテストしました。
- CNNs(YOLOv8やUNetなど):コンピュータビジョンの古典的で信頼できる働き手です。
- Transformers(Grounding DINO):言語を理解できる、より新しく華やかなモデルです。
古典的な働き手(YOLOv8およびUNet)の場合:
TensorRTが議論の余地のないチャンピオンでした。それはまるで、サーキットに現れたフォーミュラ1カーのようでした。
- デスクトップGPUにおいて、TensorRTは競合を圧倒しました。RTX 2080 Ti上のYOLOv8において、TensorRTは2.100 msで完了しましたが、PyTorchは5.270 msかかりました。
- 小さなJetson GPUにおいても、TensorRTは最速であり、PyTorchの20.84 msに対して10.57 msでYOLOv8を完了させました。
- 論文は、これらの特定のモデルについては、NVIDIAハードウェアにはTensorRTが最適であると示唆しています。
派手な新型モデル(Grounding DINO)の場合:
ここで、論文は予想外の展開を見せます。「スピード狂」(TensorRT)は勝利しませんでした。
- デスクトップNVIDIA GPUでは、標準的なPyTorchが実際には最速であり、テストされたすべてのケースで最も低い推論時間を提供しました。
- TensorRTは実際にはPyTorchよりも遅く、作業を完了するのに1.6倍から2.1倍長くかかりました。
- 例えば、RTX 6000において、PyTorchは7.780 msでしたが、TensorRTは著しく遅延しました。
- 唯一の例外はJetson GPUであり、そこではTensorRTがPyTorchをわずかに上回りました(1082.7 ms 対 1290.8 ms)が、それでもデスクトップの結果に比べればるかに低速でした。
大きな教訓
この論文の主な教訓は、誰にとっても「最高」のソフトウェアというものは存在しないということです。論文は、あなたの選択は完全に2つのこと、つまり「どのようなコンピュータを持っているか」と「どのようなモデルを実行しているか」に依存すると示唆しています。
- Intel CPUをお持ちなら、OpenVINOを使用してください。
- ARM CPU(Jetsonなど)をお持ちなら、ONNX Runtimeを使用してください。
- NVIDIA GPUを所有しており、古典的なモデル(YOLOやUNetなど)を実行しているなら、TensorRTを使用してください。
- しかし、もしNVIDIA GPUを所有しており、新しいテキストベースのモデル(Grounding DINOなど)を実行しているなら、この論文は、TensorRTの華やかな最適化が役に立たず、むしろ速度を低下させているため、デスクトップGPUでは標準的なPyTorchに留まる方が賢明かもしれないと示唆しています。
研究者たちは、確実を期すためにこれらの時間を何度も(各テストにつき1,000回!)計測しました。彼らは結果をシミュレーションしたのではなく、実際のハードウェア上で実行したのです。ですから、もしあなたが産業用ロボットを製作しているのであれば、単に耳にする「最速」のソフトウェアを手に取らないでください。まず、自分のエンジンと脳のタイプを確認してください。さもないと、あなたのロボットはスローモーションのような動きになってしまうかもしれません!
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。