PyTorch 2.0 推理速度测试:与 TensorRT 、ONNX Runtime 进行对比

简介: PyTorch 2.0 于 2022 年 12 月上旬在 NeurIPS 2022 上发布,它新增的 torch.compile 组件引起了广泛关注,因为该组件声称比 PyTorch 的先前版本带来更大的计算速度提升。

这对我们来说是一个好消息,训练时间改进的结果令人印象深刻。PyTorch 团队在发布新闻稿和 PyTorch GitHub 上没有提到的是 PyTorch 2.0 推理性能。所以我们来对推理的速度做一个简单的研究,这样可以了解 PyTorch 2.0 如何与其他推理加速器(如 Nvidia TensorRT 和 ONNX Runtime)是否还有差距。

我们使用 Nebuly 的开源库 Speedster 运行了一些推理测试,对于这个我们这个测试,Speedster 允许我们运行 TensorRT、ONNX Runtime,并将它们与 16 位和 8 位动态和静态量化相结合(仅用 2 行代码)。在测试期间,我们还使用 Speedster 收集有关顶级策略的性能信息,以减少推理延迟。

这次测试是在带有 ResNet 的 Nvidia 3090Ti GPU 进行的,与 PyTorch 2.0 新闻稿中示例中使用的模型相同。

PyTorch 2.0 的推理性能结果如下图:

以下是测试结果的 4个要点总结:

  • 批量大小越大PyTorch 2.0 的速度提升越明显(与前版本相比)。fp16的精度在大批次时比fp32编译版本更有效,这应该是因为Pytorch 2.0编译主要是为训练而设计的,训练的批大小一般会高于推理(线上产品使用时)。对fp16的优化是很正常的,因为在训练时,我们一般都会使用混合精度,特别是对于大型模型来说。
  • ONNX Runtime 在较小的批量大小下比 PyTorch 2.0 表现更好,而在较大的批量大小下结果恰恰相反。这也是因为 ONNX Runtime 主要是为推理而设计的(通常使用较小的批大小),而PyTorch 2.0 的主要目标是训练。
  • PyTorch eager 模式和 PyTorch 2.0(已编译)都显示批大小 1 和 8 的运行时间相同。这说明批大小等于 1 时没有使用全部计算能力,而其他推理的优化器,如 ONNX 运行时能够更好地管理计算能力。还是那句话这可能与 PyTorch 编译器主要为训练而设计有关,它会忽略批大小不足以使用其内核的所有计算能力的情况。
  • 在经过测试的 Nvidia GPU 上,TensorRT 在小批量和大批量方面的表现都远远优于其他。随着批量大小的增加,相对速度变得更快。这显示了 Nvidia 能够在推理时更好地利用硬件缓存,因为激活占用的内存随着批量大小线性增长,适当的内存使用可以大大提高性能。

基准测试高度依赖于所使用的数据、模型、硬件和优化技术。为了在推理中获得最佳性能,始终建议在将模型部署到生产环境之前测试。

参考

Speedster 是一个开源工具,可硬件上自动应用 SOTA 优化技术实现最大的推理加速。

本文的代码在这里:

https://avoid.overfit.cn/post/0db857b606044b1db30210e32ca071af

目录
相关文章
|
4月前
|
人工智能 边缘计算 测试技术
MLPerf推理基准测试引入Llama 2 新结果公布
【4月更文挑战第5天】MLCommons发布了最新MLPerf推理基准测试结果,涉及数据中心和边缘计算,引入了大型语言模型Llama 2进行性能评估。Llama 2在OPEN ORCA数据集上的表现提升测试复杂性,提供了更全面的性能数据。MLPerf测试涵盖图像分类、对象检测等边缘计算任务,为开发者和研究人员提供参考。测试结果存在硬件和软件配置影响的局限性,但仍是衡量AI系统性能的重要标准。
90 9
MLPerf推理基准测试引入Llama 2 新结果公布
|
4月前
|
机器学习/深度学习 并行计算 PyTorch
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
763 0
|
22天前
|
机器学习/深度学习 人工智能 PyTorch
深度学习领域中pytorch、onnx和ncnn的关系
PyTorch、ONNX 和 NCNN 是深度学习领域中的三个重要工具或框架,它们在模型开发、转换和部署过程中扮演着不同但相互关联的角色。
54 11
|
1月前
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch 与 ONNX:模型的跨平台部署策略
【8月更文第27天】深度学习模型的训练通常是在具有强大计算能力的平台上完成的,比如配备有高性能 GPU 的服务器。然而,为了将这些模型应用到实际产品中,往往需要将其部署到各种不同的设备上,包括移动设备、边缘计算设备甚至是嵌入式系统。这就需要一种能够在多种平台上运行的模型格式。ONNX(Open Neural Network Exchange)作为一种开放的标准,旨在解决模型的可移植性问题,使得开发者可以在不同的框架之间无缝迁移模型。本文将介绍如何使用 PyTorch 将训练好的模型导出为 ONNX 格式,并进一步探讨如何在不同平台上部署这些模型。
86 2
|
1月前
|
Linux C#
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
|
1月前
|
Docker 容器
FunASR离线文件转写软件包3.0问题之推理效率测试的配置如何解决
FunASR离线文件转写软件包3.0问题之推理效率测试的配置如何解决
26 0
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
2024年5月大语言模型论文推荐:模型优化、缩放到推理、基准测试和增强性能
本文汇总了2024年5月发布的七篇重要大语言模型论文,涉及模型优化、缩放、推理及性能增强。
177 2
|
4月前
|
并行计算 Ubuntu PyTorch
一文看懂pytorch转换ONNX再转换TenserRT
一文看懂pytorch转换ONNX再转换TenserRT
96 3
|
4月前
|
并行计算 计算机视觉
YOLOv8太卷啦 | YOLOv8官方仓库正式支持RT-DETR训练、测试以及推理
YOLOv8太卷啦 | YOLOv8官方仓库正式支持RT-DETR训练、测试以及推理
344 0
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习模型加速:Pytorch模型转TensorRT模型
深度学习模型加速:Pytorch模型转TensorRT模型
253 0