Benchmarking Edge Inference Strategies for Deep Learning Models in Industrial Machine Vision
本文对四种推理框架(PyTorch、ONNX Runtime、OpenVINO 和 TensorRT)在各种工业级硬件和模型架构上的表现进行了对比研究,结果表明 OpenVINO 和 TensorRT 分别在 CPU 和 GPU 性能方面表现最佳,尽管对于基于 Transformer 的模型,TensorRT 并不总是优于原生的 PyTorch。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正试图将一条信息从大脑(深度学习模型)传递给机械手(工业机器),而且要求尽可能快。在工业机器视觉的世界里,速度就是一切。如果机器人反应太慢,它就会错过汽车零件上的缺陷,或者无法正确分拣葡萄。通常情况下,将这些数据发送到巨大的云端服务器速度太慢或存在风险,因此工程师们尝试直接在机器人的本地计算机(即“边缘端”)上运行这个“大脑”。
但这里有个转折:仅仅拥有“大脑”并不意味着你拥有合适的“物流服务”。这篇论文就像是一场大规模的赛车场测试,通过对比四种不同的“运输卡车”(软件框架),来观察哪一个能最快地将信息传递给机器人。这四辆卡车分别是 PyTorch(标准且可靠的基准)、ONNX Runtime(灵活的全能选手)、OpenVINO(针对 Intel 引擎的专家)以及 TensorRT(针对 NVIDIA 引擎的速度猛兽)。
研究人员并没有凭空猜测;他们实际上在四种不同的“底盘”(计算机)上运行了同三种类型的“大脑”,并精确到了毫秒级进行计时。以下是这场比赛揭示的结果:
CPU 之赛:引擎品牌决定成败
当计算机使用标准的 Intel 处理器(许多台式机中常见的类型)时,结果出人意料地一致。OpenVINO 是明显的赢家,它就像是专门为该引擎设计的涡轮增压器。
- 在 Intel 台式机上,OpenVINO 在测试的所有模型中都是最快的。
- 对于 YOLOv8 模型(一种快速的目标检测器),OpenVINO 节省了大量的时间。在最快的 Intel 台式机(i9-9820X)上,它的完成时间仅为 10.9 毫秒,而标准的 PyTorch 则需要 28.7 毫秒。这是一个巨大的飞跃!
- ONNX Runtime 通常排名第二,而 PyTorch 最慢。
然而,当研究人员切换到 Jetson AGX Orin(一种用于机器人的小型强力计算机,使用的是 ARM 芯片而非 Intel)时,比赛情况发生了彻底的变化。突然间,OpenVINO 失效了。
- 在这种基于 ARM 的机器上,ONNX Runtime 摘得了金牌。
- 对于 Grounding DINO 模型(一种能够理解文本和图像的复杂模型)来说,差距令人震惊。在 Jetson CPU 上,OpenVINO 竟然耗时 102,720 毫秒(超过 100 秒!),而 ONNX Runtime 仅用了 13,580 毫秒。这快了七倍多!这表明,如果为你的特定引擎选错了“运输卡车”,可能会导致灾难性的后果。
GPU 之赛:CNN 与 Transformer 的对决
当研究人员切换到来自 NVIDIA 的强大图形处理器(GPU)时,故事变得更有趣了。他们测试了两类“大脑”:
- CNNs(如 YOLOv8 和 UNet):这些是计算机视觉领域经典且可靠的“劳模”。
- Transformers(Grounding DINO):这些是更新颖、更华丽的模型,能够理解语言。
对于经典的“劳模”(YOLOv8 和 UNet):
TensorRT 是无可争议的冠军。它就像是在赛道上驾驶着一级方程式赛车。
- 在桌面级 GPU 上,TensorRT 碾压了竞争对手。对于 RTX 2080 Ti 上的 YOLOv8,TensorRT 完成时间为 2.100 毫秒,而 PyTorch 则需要 5.270 毫秒。
- 即使是在微小的 Jetson GPU 上,TensorRT 也是最快的,完成 YOLOv8 仅需 10.57 毫秒,而 PyTorch 需要 20.84 毫秒。
- 论文指出,对于这类特定类型的模型,TensorRT 是 NVIDIA 硬件的最佳选择。
对于华丽的新型模型(Grounding DINO):
在这里,论文抛出了一个“曲线球”。那位“速度猛兽”(TensorRT)并没有获胜。
- 在 NVIDIA 桌面级 GPU 上,标准的 PyTorch 实际上是最快的,在所有测试案例中都提供了最低的推理时间。
- TensorRT 实际上比 PyTorch 更慢,完成任务的时间长了 1.6 到 2.1 倍。
- 例如,在 RTX 6000 上,PyTorch 耗时 7.780 毫秒,而 TensorRT 则明显慢得多。
- 唯一的例外是 Jetson GPU,在那里 TensorRT 略微领先于 PyTorch(1082.7 毫秒 vs 1290.8 毫秒),但它仍然比桌面级结果要慢得多。
核心启示
这篇论文的主要教训是:世界上不存在一种适合所有人的“最佳”软件。论文建议,你的选择完全取决于两件事:你拥有什么样的计算机 以及 你正在运行什么样的模型。
- 如果你拥有 Intel CPU,请使用 OpenVINO。
- 如果你拥有 ARM CPU(如 Jetson),请使用 ONNX Runtime。
- 如果你拥有 NVIDIA GPU 并且运行的是经典模型(如 YOLO 或 UNet),请使用 TensorRT。
- 但是,如果你拥有 NVIDIA GPU 并且运行的是新型文本模型(如 Grounding DINO),论文建议在桌面级 GPU 上,你最好坚持使用标准的 PyTorch,因为 TensorRT 中那些华丽的优化不仅没有提供帮助,反而拖慢了速度。
研究人员对这些时间进行了多次测量(每个测试运行 1,000 次!)以确保准确性。他们不仅仅是在模拟结果,而是直接在真实硬件上运行。因此,如果你正在制造工业机器人,不要仅仅根据你听到的“最快”软件来做决定。先检查你的“引擎”和“大脑”类型,否则你的机器人可能会动作迟缓!
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。