模型推理
介绍 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 代码 速度 一般 更快(图优化) 部署 仅限 Python C++ / 移动端 / 服务端 使用场景 开发、调试、测试 生产部署、上线 保存文件 .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→ 超快推理
-
对比
方式 原生 PyTorch ONNX 推理 TensorRT 推理 依赖 Python + 模型代码 ONNX Runtime NVIDIA GPU + TensorRT 图类型 动态图 静态图 高度优化静态图 速度 最慢 中等 最快 跨平台 差 强(CPU/GPU/ 端侧) 仅 NVIDIA GPU 用途 开发调试 跨框架部署 服务端极致加速 文件 .pth .onnx .engine/.trt
这篇文档有帮助吗?