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

目录
相关文章
|
人工智能 边缘计算 测试技术
MLPerf推理基准测试引入Llama 2 新结果公布
【4月更文挑战第5天】MLCommons发布了最新MLPerf推理基准测试结果,涉及数据中心和边缘计算,引入了大型语言模型Llama 2进行性能评估。Llama 2在OPEN ORCA数据集上的表现提升测试复杂性,提供了更全面的性能数据。MLPerf测试涵盖图像分类、对象检测等边缘计算任务,为开发者和研究人员提供参考。测试结果存在硬件和软件配置影响的局限性,但仍是衡量AI系统性能的重要标准。
311 9
MLPerf推理基准测试引入Llama 2 新结果公布
|
2月前
|
机器学习/深度学习 PyTorch 测试技术
从训练到推理:Intel Extension for PyTorch混合精度优化完整指南
PyTorch作为主流深度学习框架,凭借动态计算图和异构计算支持,广泛应用于视觉与自然语言处理。Intel Extension for PyTorch针对Intel硬件深度优化,尤其在GPU上通过自动混合精度(AMP)提升训练与推理性能。本文以ResNet-50在CIFAR-10上的实验为例,详解如何利用该扩展实现高效深度学习优化。
116 0
|
5月前
|
机器学习/深度学习 存储 缓存
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
大型语言模型(LLM)的推理效率是AI领域的重要挑战。本文聚焦KV缓存技术,通过存储复用注意力机制中的Key和Value张量,减少冗余计算,显著提升推理效率。文章从理论到实践,详细解析KV缓存原理、实现与性能优势,并提供PyTorch代码示例。实验表明,该技术在长序列生成中可将推理时间降低近60%,为大模型优化提供了有效方案。
812 15
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
|
4月前
|
人工智能 自然语言处理 测试技术
UGMathBench:评估语言模型数学推理能力的动态基准测试数据集
近年来,人工智能蓬勃发展,自然语言模型(LLM)进展显著。语言模型被广泛应用于自动翻译、智能客服、甚至医疗、金融、天气等领域。而研究者们仍在不断努力,致力于提高语言模型的规模和性能。随着语言模型的蓬勃发展,评估一个语言模型的性能变得越来越重要。其中一个重要的评估指标,就是衡量语言模型的推理能力和解决数学问题的能力。
259 38
|
10月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
270 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
11月前
|
PyTorch TensorFlow 算法框架/工具
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
本文提供了在Ubuntu 18.04操作系统的NVIDIA Jetson平台上安装深度学习和计算机视觉相关库的详细步骤,包括PyTorch、OpenCV、ONNX、TensorFlow等。
930 1
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
|
10月前
|
缓存 自然语言处理 并行计算
基于NVIDIA A30 加速卡推理部署通义千问-72B-Chat测试过程
本文介绍了基于阿里云通义千问72B大模型(Qwen-72B-Chat)的性能基准测试,包括测试环境准备、模型部署、API测试等内容。测试环境配置为32核128G内存的ECS云主机,配备8块NVIDIA A30 GPU加速卡。软件环境包括Ubuntu 22.04、CUDA 12.4.0、PyTorch 2.4.0等。详细介绍了模型下载、部署命令及常见问题解决方法,并展示了API测试结果和性能分析。
3849 1
|
11月前
|
计算机视觉
目标检测笔记(二):测试YOLOv5各模块的推理速度
这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
453 3
|
机器学习/深度学习 人工智能 PyTorch
深度学习领域中pytorch、onnx和ncnn的关系
PyTorch、ONNX 和 NCNN 是深度学习领域中的三个重要工具或框架,它们在模型开发、转换和部署过程中扮演着不同但相互关联的角色。
613 12
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch 与 ONNX:模型的跨平台部署策略
【8月更文第27天】深度学习模型的训练通常是在具有强大计算能力的平台上完成的,比如配备有高性能 GPU 的服务器。然而,为了将这些模型应用到实际产品中,往往需要将其部署到各种不同的设备上,包括移动设备、边缘计算设备甚至是嵌入式系统。这就需要一种能够在多种平台上运行的模型格式。ONNX(Open Neural Network Exchange)作为一种开放的标准,旨在解决模型的可移植性问题,使得开发者可以在不同的框架之间无缝迁移模型。本文将介绍如何使用 PyTorch 将训练好的模型导出为 ONNX 格式,并进一步探讨如何在不同平台上部署这些模型。
1185 2

推荐镜像

更多