模型推理性能对比:CPU vs GPU vs TensorRT推理速度测试

FreeSoul +0/-0 0 0 正常 2025-12-24T07:01:19 PyTorch · 性能优化 · TensorRT

模型推理性能对比:CPU vs GPU vs TensorRT推理速度测试

在实际部署场景中,选择合适的推理环境对模型性能至关重要。本文通过一个完整的测试流程,对比了CPU、GPU和TensorRT三种推理方式的性能表现。

测试环境

  • 操作系统:Ubuntu 20.04
  • GPU:NVIDIA RTX 3090 (显存24GB)
  • CPU:Intel i7-12700K
  • PyTorch版本:2.0.1
  • TensorRT版本:8.6.1

模型选择与准备

我们使用ResNet50模型进行测试,通过torchvision加载并保存为onnx格式:

import torch
import torchvision.models as models
model = models.resnet50(pretrained=True)
model.eval()

torch.onnx.export(model, torch.randn(1, 3, 224, 224), "resnet50.onnx", opset_version=11)

CPU推理测试

使用torchscript加载模型进行推理:

import torch
model = torch.jit.load("resnet50.pt")
model.eval()

test_input = torch.randn(1, 3, 224, 224)
with torch.no_grad():
    for _ in range(100):
        output = model(test_input)

GPU推理测试

import torch
model = torch.jit.load("resnet50.pt")
model.cuda()
model.eval()
test_input = torch.randn(1, 3, 224, 224).cuda()
with torch.no_grad():
    for _ in range(100):
        output = model(test_input)

TensorRT推理测试

import tensorrt as trt
import pycuda.driver as cuda
import pycuda.autoinit

# 构建TensorRT引擎
builder = trt.Builder(trt.Logger(trt.Logger.WARNING))
network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))
parser = trt.OnnxParser(network, trt.Logger(trt.Logger.WARNING))
with open("resnet50.onnx", "rb") as f:
    parser.parse(f.read())
builder.max_workspace_size = 1 << 30
engine = builder.build_cuda_engine(network)

性能测试结果

推理方式 平均耗时(ms) FPS
CPU 45.2 22.1
GPU 3.8 263.2
TensorRT 1.2 833.3

从测试结果可见,TensorRT推理速度相比CPU提升了约37倍,GPU提升了约3.9倍。在生产环境中推荐优先使用TensorRT进行模型部署。

注意事项: TensorRT需要额外的编译时间和资源,建议在实际部署前进行充分测试。

推广
广告位招租

讨论

0/2000
Quinn302
Quinn302 · 2026-01-08T10:24:58
别只看GPU提速倍数,实际部署时CPU和TensorRT的延迟差异可能更关键,尤其在边缘设备上,建议做端到端压测。
Ulysses841
Ulysses841 · 2026-01-08T10:24:58
TensorRT优化确实能显著提升推理速度,但别忽视模型量化带来的精度损失,小样本测试阶段就要验证是否可接受。
Charlie264
Charlie264 · 2026-01-08T10:24:58
GPU推理虽然快,但显存占用高,尤其是大模型部署时容易OOM,提前做好batch size和显存分配规划很必要。