模型推理

介绍 PyTorch 模型推理的核心方式,包括原生模型推理和 TorchScript 推理,并对比它们的特点和适用场景,同时介绍 ONNX 和 TensorRT 两种常见的模型推理加速工具

模型推理

  • PyTorch 模型推理有两种核心方式:

    • 原生模型推理(model.eval () + torch.no_grad ())
    • TorchScript 推理(torch.jit 序列化模型)
  • 原生动态图推理

    • 加载模型权重
    • model.eval () 切换到推理模式
    • with torch.no_grad (): 关闭梯度计算
    • 前向传播 output = model(input)
  • TorchScript 推理

    • 训练好模型
    • torch.jit.trace/torch.jit.script 转成静态图
    • 保存为 .pt 文件
    • 加载 torch.jit.load() 直接推理
  • 对比

    方式原生推理 (eval + no_grad)TorchScript 推理
    图类型动态图静态图
    依赖需要 Python + 模型代码不需要 Python 代码
    速度一般更快(图优化)
    部署仅限 PythonC++ / 移动端 / 服务端
    使用场景开发、调试、测试生产部署、上线
    保存文件.pth(仅权重).pt(权重 + 结构)
  • ONNX:通用中间格式,跨框架、跨硬件,做模型转换

    • Open Neural Network Exchange:开放式神经网络交换格式,是一个中间表示(IR)
    • 把 PyTorch / TensorFlow / Caffe 模型转成统一格式 .onnx,让不同框架、不同硬件都能读
    • 不依赖 Python,可 C++ 部署,通用性强,但加速能力一般
  • TensorRT:NVIDIA 专用推理引擎,做极致加速

    • NVIDIA 自家的 GPU 推理优化引擎,只跑在 NVIDIA GPU 上,专门做推理加速
    • 推理流程:PyTorch → ONNX → TensorRT 构建引擎 → 生成 .trt/.engine → 超快推理
  • 对比

    方式原生 PyTorchONNX 推理TensorRT 推理
    依赖Python + 模型代码ONNX RuntimeNVIDIA GPU + TensorRT
    图类型动态图静态图高度优化静态图
    速度最慢中等最快
    跨平台差强(CPU/GPU/ 端侧)仅 NVIDIA GPU
    用途开发调试跨框架部署服务端极致加速
    文件.pth.onnx.engine/.trt
这篇文档有帮助吗?

On this page

页面信息