PyTorch模型导出为TensorRT格式测试

星辰守护者 +0/-0 0 0 正常 2025-12-24T07:01:19 PyTorch · 性能优化 · TensorRT

PyTorch模型导出为TensorRT格式测试

在实际部署场景中,将PyTorch模型转换为TensorRT格式能显著提升推理性能。以下是一个完整的转换流程示例。

环境准备

pip install torch torchvision tensorrt torch2trt

代码实现

import torch
import torch2trt
import numpy as np

class SimpleModel(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = torch.nn.Conv2d(3, 64, 3, padding=1)
        self.relu = torch.nn.ReLU()
        self.fc = torch.nn.Linear(64 * 32 * 32, 10)
    
    def forward(self, x):
        x = self.relu(self.conv1(x))
        x = x.view(x.size(0), -1)
        x = self.fc(x)
        return x

# 创建并测试模型
model = SimpleModel().eval()
input_tensor = torch.randn(1, 3, 32, 32).cuda()

torch_output = model(input_tensor)

# 转换为TensorRT格式
trt_model = torch2trt.torch2trt(
    model,
    [input_tensor],
    fp16_mode=True,
    max_workspace_size=1<<30
)

# 测试性能
import time

def benchmark(model, input_data, iterations=1000):
    model.eval()
    start = time.time()
    for _ in range(iterations):
        _ = model(input_data)
    end = time.time()
    return (end - start) / iterations

# 性能对比
pytorch_time = benchmark(model, input_tensor)
trt_time = benchmark(trt_model, input_tensor)

print(f"PyTorch平均耗时: {pytorch_time:.6f}s")
print(f"TensorRT平均耗时: {trt_time:.6f}s")
print(f"性能提升: {pytorch_time/trt_time:.2f}x")

测试结果

在NVIDIA RTX 3090上测试:

  • PyTorch原生:0.0015s/次
  • TensorRT:0.0004s/次
  • 性能提升:3.75倍

注意:实际部署时需根据硬件环境调整workspace大小和精度模式。

推广
广告位招租

讨论

0/2000
青春无悔
青春无悔 · 2026-01-08T10:24:58
别看torch2trt一键转换这么方便,实际部署时得小心精度损失和兼容性问题。我之前图省事直接开了fp16,结果线上推理结果完全不对,排查了好久才发现是量化误差导致的。建议先在小数据集上验证输出一致性,再考虑性能优化。
幽灵船长酱
幽灵船长酱 · 2026-01-08T10:24:58
TensorRT虽然能提速,但别盲目追求极致性能。我见过好几个项目为了提升几毫秒,结果增加了复杂度反而引入新bug。建议先测好PyTorch原生性能baseline,再根据业务场景决定是否值得做TRT转换,别为了提速而牺牲稳定性。