一、概述
AI模型从训练完成到实际部署,通常需要经过模型保存、格式转换、图优化、量化、硬件编译和运行时执行等多个阶段。在这一过程中,经常会接触到 ONNX、OpenVINO、TensorRT、TFLite、SavedModel、Safetensors、GGUF 等名称。
这些名称并不都属于同一类别。有些是保存模型结构和权重的文件格式,有些是执行模型的推理引擎,还有一些则同时包含模型格式、优化工具、硬件后端和运行时。
可以将整个部署体系划分为四个层次:
训练框架
PyTorch / TensorFlow / Keras
│
▼
模型文件或中间表示
ONNX / SavedModel / Safetensors / .keras
│
▼
模型优化与推理引擎
ONNX Runtime / OpenVINO / TensorRT / LiteRT
│
▼
硬件执行后端
CPU / NVIDIA GPU / Intel GPU / NPU / DSP / MCU
因此,比较主流AI模型技术时,首先要区分两个核心概念:
- 模型文件格式:负责保存模型结构、参数、元数据或计算图;
- 推理引擎:负责读取模型、优化计算图并在具体硬件上执行。
一个模型格式可以被多个推理引擎使用;一个推理引擎也可能支持多种模型格式。

二、模型文件格式与推理引擎的区别
1. 模型文件格式
模型文件格式回答的是:
模型以什么形式保存和传递?
一个完整或部分完整的模型文件可能包含:
- 神经网络结构;
- 算子和计算图;
- 权重、偏置和常量;
- 输入输出名称;
- 输入输出数据类型;
- 动态或静态形状;
- 量化参数;
- Tokenizer或标签信息;
- 训练配置和优化器状态;
- 模型版本和元数据。
典型格式包括:
- ONNX
.onnx - PyTorch
.pt、.pth - Safetensors
.safetensors - TensorFlow SavedModel
- Keras
.keras - LiteRT/TFLite
.tflite - OpenVINO IR
.xml+.bin - Core ML
.mlpackage - GGUF
.gguf
2. 推理引擎
推理引擎回答的是:
模型怎样在CPU、GPU、NPU等硬件上高效运行?
推理引擎通常负责:
- 解析模型;
- 检查算子兼容性;
- 常量折叠;
- 算子融合;
- 内存规划;
- 多线程调度;
- 硬件指令优化;
- FP16、INT8等低精度计算;
- 动态输入处理;
- GPU或NPU任务调度;
- 模型编译和缓存。
典型推理引擎包括:
- ONNX Runtime
- OpenVINO Runtime
- NVIDIA TensorRT
- LiteRT Runtime
- TensorFlow Runtime
- PyTorch Runtime
- Core ML Runtime
- llama.cpp
- NCNN
- MNN
- Apache TVM
- OpenXLA
三、主流AI模型文件格式
1. ONNX
基本定位
ONNX是一种开放的、跨框架的神经网络中间表示。它主要用于在不同训练框架、推理引擎和硬件平台之间交换模型。
典型流程为:
PyTorch
│
▼
ONNX
├── ONNX Runtime
├── OpenVINO
├── TensorRT
├── DirectML
├── Qualcomm QNN
└── 其他推理后端
ONNX文件通常包含:
- 计算图;
- 算子;
- 模型权重;
- 输入输出信息;
- 张量类型和形状;
- Opset版本;
- 模型元数据。
优点
- 跨训练框架能力强;
- 跨操作系统能力较强;
- 支持多种CPU、GPU和NPU后端;
- 生态成熟;
- 可通过Netron等工具查看模型结构;
- 适合作为长期保存的部署母版;
- 便于从同一模型生成不同硬件的部署版本。
局限
- ONNX本身不是推理引擎;
- 模型能否运行取决于具体Runtime;
- 不同引擎对ONNX算子的支持程度不同;
- 自定义算子、动态控制流和复杂模型可能转换失败;
- ONNX模型转换成功不等于结果完全一致;
- 不适合作为完整训练恢复文件。
适用场景
- 跨平台工业软件;
- Windows和Linux统一部署;
- 同一模型适配Intel、NVIDIA、AMD或高通设备;
- 建立统一模型仓库;
- 模型格式标准化。
2. PyTorch .pt与.pth
.pt和.pth只是常用扩展名,并不代表严格统一的内部格式。文件中可能保存:
state_dict;- 完整Python模型对象;
- 优化器状态;
- 学习率调度器状态;
- 任意Python数据;
- TorchScript模型。
优点
- 与PyTorch训练流程结合紧密;
- 适合恢复训练;
- 可以保存优化器和训练状态;
- 开发和调试方便;
- 适合科研和模型迭代。
局限
- 跨框架能力弱;
- 可能依赖Python代码和类定义;
- 不适合直接交付给C++、Java等应用;
- 完整对象序列化存在安全风险;
- 不宜作为长期通用部署格式。
适用场景
- PyTorch训练检查点;
- 模型微调;
- 研究验证;
- 训练恢复;
- 内部算法开发。
3. Safetensors
Safetensors是一种专门保存张量权重的格式。它不保存完整计算图,也不直接描述模型怎样执行。
通常需要与模型配置配合:
config.json
model.safetensors
tokenizer.json
优点
- 不依赖Python Pickle;
- 安全性较高;
- 加载速度快;
- 支持内存映射;
- 支持大模型权重分片;
- 适合大型Transformer模型。
局限
- 只保存权重;
- 不包含完整网络计算图;
- 需要模型代码或配置才能恢复模型;
- 不能单独被通用推理引擎执行。
适用场景
- 大语言模型;
- 视觉Transformer;
- 扩散模型;
- Hugging Face模型发布;
- 训练权重长期保存。
4. TensorFlow SavedModel
SavedModel是一种目录形式的模型格式,通常包括:
saved_model.pb
variables/
assets/
fingerprint.pb
它可以保存:
- TensorFlow计算图;
- 模型变量;
- 函数签名;
- 输入输出定义;
- 资源文件;
- 部分预处理逻辑。
优点
- TensorFlow语义保存较完整;
- 支持多个推理函数;
- 适合TensorFlow Serving;
- 可以继续转换为TFLite等格式;
- 适合服务器部署。
局限
- 文件结构较复杂;
- 对TensorFlow生态依赖明显;
- 跨框架能力弱于ONNX;
- 不适合资源有限的嵌入式设备直接运行。
适用场景
- TensorFlow训练与部署;
- 云端推理服务;
- TensorFlow Serving;
- 需要保存多个模型函数的系统。
5. Keras .keras
.keras是Keras推荐的完整模型格式,通常可以保存:
- 模型结构;
- 模型权重;
- 优化器状态;
- 损失函数配置;
- 训练配置;
- 模型元数据。
优点
- 保存和恢复Keras模型方便;
- 适合继续训练;
- 单文件管理较方便;
- 比传统HDF5格式更符合当前Keras架构。
局限
- 主要面向Keras生态;
- 自定义层可能仍需要对应Python代码;
- 不适合直接交给非Keras推理引擎;
- 跨硬件部署通常还需要转换。
适用场景
- Keras模型训练;
- 模型微调;
- 训练检查点;
- TensorFlow/Keras内部交付。
6. LiteRT/TFLite .tflite
TFLite目前逐渐归入LiteRT体系,但.tflite文件仍是移动端和嵌入式AI部署的重要格式。
该格式基于FlatBuffers,通常将模型结构、权重和量化信息保存在单个文件中。
优点
- 文件紧凑;
- Runtime体积较小;
- INT8量化成熟;
- Android生态完善;
- 适合ARM处理器;
- 可通过Delegate调用GPU、DSP或NPU;
- 支持微控制器版本。
局限
- 算子支持不如桌面推理引擎完整;
- 不同设备的Delegate兼容性差异较大;
- 某些复杂模型需要自定义算子;
- 模型转换链可能较复杂。
适用场景
- Android应用;
- 嵌入式Linux;
- ARM边缘设备;
- MCU;
- 低功耗端侧AI。
7. OpenVINO IR
OpenVINO IR通常由两个文件组成:
model.xml
model.bin
其中:
.xml保存网络拓扑、算子、连接关系和属性;.bin保存权重、偏置和常量数据。
OpenVINO IR是设备无关的模型表示,模型在加载后还会根据目标CPU、GPU或NPU进一步编译。
优点
- 与OpenVINO Runtime高度匹配;
- 在Intel CPU、GPU和NPU上优化充分;
- 适合C++工业软件;
- 可减少运行时模型转换过程;
- 部署结构明确;
- 支持量化和算子融合。
局限
- 主要面向OpenVINO生态;
- 在非Intel硬件上的优势有限;
- 通用性不如ONNX;
- 编译后的缓存文件仍可能与硬件或软件版本相关。
适用场景
- Intel CPU工控机;
- Intel核显和独立显卡;
- Intel Core Ultra NPU;
- Windows或Linux工业边缘设备。
8. TensorRT Engine
TensorRT通常将ONNX等模型编译为:
model.engine
model.plan
TensorRT Engine不是普通的模型交换格式,而是针对具体NVIDIA GPU编译生成的二进制执行计划。
它通常包含:
- 优化后的网络图;
- 算子融合结果;
- CUDA Kernel选择结果;
- 内存分配方案;
- 精度配置;
- 动态形状Profile;
- 插件信息。
优点
- NVIDIA GPU上性能非常高;
- 能充分利用Tensor Core;
- 支持FP16、INT8及更低精度;
- 内存规划能力强;
- 适合低延迟和高吞吐推理;
- 适合Jetson及数据中心GPU。
局限
- 跨硬件能力差;
- 与GPU架构、TensorRT版本和操作系统相关;
- Engine不适合长期作为唯一模型文件;
- 构建Engine可能耗时;
- 不支持的算子需要插件;
- 动态输入需要配置Optimization Profile。
适用场景
- NVIDIA服务器GPU;
- Jetson Orin;
- 高性能视觉推理;
- 实时目标检测;
- 低延迟生产系统。
9. Core ML格式
Apple Core ML常见格式包括:
.mlmodel.mlpackage.mlmodelc
其中.mlpackage更适合较新的ML Program模型,编译后可生成.mlmodelc供应用运行。
优点
- 可利用Apple CPU、GPU和Neural Engine;
- 与iOS和macOS集成紧密;
- 能耗控制较好;
- 适合Apple设备端侧推理。
局限
- 主要服务于Apple生态;
- Windows和Android不能直接使用;
- 模型转换后需要验证算子和数值一致性。
适用场景
- iPhone;
- iPad;
- Mac;
- Apple Vision Pro;
- Apple端侧AI应用。
10. GGUF
GGUF主要用于llama.cpp、GGML等本地大模型推理生态。
GGUF文件通常包含:
- 模型权重;
- 模型架构信息;
- 量化信息;
- Tokenizer;
- 上下文长度;
- 模型元数据。
优点
- 单文件部署;
- CPU推理友好;
- 支持多种低比特量化;
- 适合普通电脑运行大语言模型;
- 支持部分层卸载到GPU;
- 部署简单。
局限
- 主要适用于生成式模型;
- 不是通用神经网络交换格式;
- 不适合一般工业CNN、LSTM或Autoencoder部署;
- 与llama.cpp等特定运行时关系紧密。
适用场景
- 本地大语言模型;
- CPU端LLM推理;
- 个人电脑离线AI;
- 边缘生成式AI。
四、主流推理引擎
1. ONNX Runtime
ONNX Runtime是面向ONNX模型的跨平台推理引擎。
其核心机制是Execution Provider。不同Execution Provider可以将模型交给不同硬件后端执行。
常见后端包括:
- CPU Execution Provider;
- CUDA;
- TensorRT;
- OpenVINO;
- DirectML;
- ROCm;
- Core ML;
- Qualcomm QNN;
- XNNPACK。
工作机制
ONNX模型
│
▼
ONNX Runtime图优化
│
├── CPU执行
├── CUDA执行
├── TensorRT执行
├── OpenVINO执行
└── DirectML执行
如果某个硬件后端不支持全部算子,ONNX Runtime可以将模型划分成多个子图,并将不支持的节点回退到其他后端。
优点
- 跨平台能力强;
- C、C++、C#、Python、Java等接口完善;
- 易于集成Windows桌面软件;
- 支持多种硬件;
- 同一个ONNX模型可切换不同后端;
- 部署灵活。
局限
- 性能取决于Execution Provider;
- 算子回退可能带来数据传输开销;
- 不一定达到专用引擎的极限性能;
- 不同后端的行为和精度可能存在差异。
综合定位
ONNX Runtime适合作为通用型、跨平台推理引擎,是工业软件和桌面应用中最稳妥的选择之一。
2. OpenVINO Runtime
OpenVINO Runtime是Intel主导的模型推理与优化平台,支持:
- Intel CPU;
- Intel核显;
- Intel独立显卡;
- Intel NPU;
- 自动设备选择;
- 多设备执行。
OpenVINO既可以直接加载ONNX,也可以加载OpenVINO IR。
优点
- Intel硬件优化程度高;
- CPU低延迟推理表现优秀;
- 支持自动设备选择;
- 支持异步推理;
- 支持模型缓存;
- C++接口适合产品化;
- 对小Batch工业模型较友好。
局限
- 主要优势集中在Intel平台;
- 与其他厂商NPU的结合能力有限;
- 某些新模型可能依赖较新的OpenVINO版本;
- 设备插件和驱动版本需要统一管理。
综合定位
OpenVINO适合Intel平台上的工业边缘AI,尤其适合没有NVIDIA独立显卡的Windows或Linux工控机。
3. NVIDIA TensorRT
TensorRT是NVIDIA面向GPU的高性能推理引擎。
典型流程为:
PyTorch
│
▼
ONNX
│
▼
TensorRT Builder
├── 图优化
├── 算子融合
├── 精度选择
├── Kernel搜索
├── 显存规划
└── Tactic选择
▼
TensorRT Engine
│
▼
TensorRT Runtime
优点
- NVIDIA GPU上性能突出;
- 对卷积、Transformer和矩阵计算优化充分;
- 低延迟;
- 高吞吐;
- 支持多种低精度;
- 能够利用Tensor Core;
- 适合Jetson边缘计算。
局限
- 只适合NVIDIA GPU;
- Engine可移植性较差;
- 构建和调试复杂度较高;
- 自定义算子可能需要编写Plugin;
- 动态输入管理较复杂;
- 不宜作为模型唯一存档形式。
综合定位
TensorRT适合目标硬件已经确定为NVIDIA GPU,并且对推理性能有较高要求的系统。
4. LiteRT Runtime
LiteRT主要面向移动端和嵌入式设备,可以通过Delegate调用不同硬件。
常见Delegate包括:
- CPU;
- GPU;
- Android NNAPI;
- Edge TPU;
- 特定厂商NPU或DSP。
优点
- Runtime较小;
- 适合ARM;
- 功耗低;
- 移动端生态成熟;
- INT8量化支持好;
- 适合离线端侧推理。
局限
- 不同Delegate的算子支持不一致;
- 模型在不同手机上的性能差异可能较大;
- 复杂模型适配工作量较高;
- 桌面和服务器能力不如ONNX Runtime。
5. PyTorch Runtime与ExecuTorch
PyTorch模型可以直接通过PyTorch Runtime执行,但完整PyTorch运行环境通常较大。
ExecuTorch是面向移动端和嵌入式设备的轻量化运行时,其模型通常从torch.export产生,并转换为.pte文件。
优点
- 与PyTorch训练体系衔接自然;
- 减少格式转换;
- 适合移动端和嵌入式PyTorch部署;
- 支持XNNPACK、Core ML、Vulkan等后端。
局限
- 生态成熟度仍不如ONNX Runtime和TFLite;
- 设备后端能力取决于具体版本;
- 跨训练框架能力有限。
6. NCNN与MNN
NCNN和MNN是国内较常见的轻量级端侧推理引擎。
NCNN
主要特点:
- C++实现;
- 对ARM和移动GPU优化较好;
- 依赖少;
- Runtime体积小;
- 常用于Android视觉应用。
MNN
主要特点:
- 支持Android、iOS和嵌入式平台;
- 支持CPU、OpenCL、Vulkan、Metal等后端;
- 对移动端模型部署较友好。
局限
- 通用模型生态不如ONNX Runtime;
- 模型转换和算子兼容需要额外验证;
- 适合移动视觉模型多于大型生成式模型。
7. Apache TVM
Apache TVM是一种机器学习编译框架。它能够将模型计算图编译为针对具体硬件优化的代码。
优点
- 支持多种硬件架构;
- 可进行自动调优;
- 可生成设备专用代码;
- 适合定制芯片和特殊硬件;
- 可用于CPU、GPU、NPU和微控制器。
局限
- 学习和使用门槛较高;
- 工程链复杂;
- 自动调优耗时;
- 不适合追求快速落地的小型项目。
综合定位
TVM适合芯片厂商、研究机构以及需要深度定制推理性能的项目。
五、综合比较
1. 模型文件格式比较
| 格式 | 是否包含计算图 | 是否包含权重 | 能否恢复训练 | 跨平台性 | 主要用途 |
|---|---|---|---|---|---|
| ONNX | 是 | 是 | 通常不能 | 高 | 跨框架部署 |
PyTorch .pth | 视保存方式而定 | 是 | 是 | 低 | 训练与微调 |
| Safetensors | 否 | 是 | 可以加载权重 | 中 | 安全保存权重 |
| SavedModel | 是 | 是 | 部分可以 | 中 | TensorFlow部署 |
.keras | 是 | 是 | 是 | 较低 | Keras完整模型 |
.tflite | 是 | 是 | 否 | 中 | 移动和嵌入式 |
| OpenVINO IR | 是 | 是 | 否 | 中 | Intel平台部署 |
| TensorRT Engine | 是 | 是 | 否 | 很低 | NVIDIA GPU执行 |
| Core ML | 是 | 是 | 否 | 低 | Apple设备 |
| GGUF | 包含特定架构信息 | 是 | 通常否 | 中 | 本地大模型推理 |
2. 推理引擎比较
| 推理引擎 | 主要硬件 | 跨平台性 | 性能特点 | 工程复杂度 | 典型场景 |
|---|---|---|---|---|---|
| ONNX Runtime | CPU、GPU、NPU | 高 | 均衡 | 低 | 通用工业软件 |
| OpenVINO | Intel CPU/GPU/NPU | 较高 | Intel平台优秀 | 中 | Intel工控机 |
| TensorRT | NVIDIA GPU | 低 | GPU性能很高 | 高 | Jetson、GPU服务器 |
| LiteRT | ARM、移动GPU、NPU | 中 | 低功耗 | 中 | Android、嵌入式 |
| Core ML | Apple芯片 | 低 | Apple设备优秀 | 中 | iOS、macOS |
| ExecuTorch | 移动和嵌入式 | 中 | 与PyTorch结合紧密 | 中 | PyTorch端侧部署 |
| NCNN | ARM、移动GPU | 中 | 轻量、高效 | 中 | Android视觉应用 |
| MNN | ARM、GPU、Metal | 中 | 移动端优化 | 中 | 手机端AI |
| TVM | CPU、GPU、NPU、MCU | 高 | 可深度优化 | 高 | 定制硬件 |
六、文件大小与推理性能的关系
模型文件格式本身通常不是决定模型体积的主要因素。模型大小主要取决于:
模型大小 ≈ 参数数量 × 每个参数占用字节数
例如,一个包含一亿参数的模型:
| 精度 | 单参数理论大小 | 一亿参数理论大小 |
|---|---|---|
| FP32 | 4字节 | 约400 MB |
| FP16/BF16 | 2字节 | 约200 MB |
| INT8 | 1字节 | 约100 MB |
| INT4 | 0.5字节 | 约50 MB |
实际模型文件还可能包含:
- 量化Scale和Zero Point;
- 模型元数据;
- Tokenizer;
- 算子属性;
- 外部权重索引;
- 优化器状态;
- TensorRT执行计划;
- 多个输入尺寸Profile。
因此:
- 文件扩展名不能直接代表模型性能;
- ONNX文件不一定比PyTorch文件小;
- TensorRT Engine不一定比ONNX小;
- 量化通常比更换模型容器更能减小体积;
- 推理速度主要由运行时、硬件和图优化决定。
七、模型格式与推理引擎的典型组合
1. 通用跨平台方案
PyTorch训练
│
▼
ONNX
│
▼
ONNX Runtime
│
├── Windows CPU
├── Linux CPU
├── CUDA GPU
├── DirectML
└── OpenVINO
特点:
- 开发成本低;
- 适配范围广;
- 方便从Linux迁移到Windows;
- 适合工业软件产品化。
2. Intel平台方案
PyTorch / TensorFlow
│
▼
ONNX
│
▼
OpenVINO Model或IR
│
▼
CPU / Intel GPU / Intel NPU
特点:
- 适合Intel工控机;
- 小Batch延迟表现好;
- 可以利用Intel NPU;
- 适合长期稳定运行。
3. NVIDIA平台方案
PyTorch
│
▼
ONNX
│
▼
TensorRT Engine
│
▼
NVIDIA GPU / Jetson
特点:
- 性能高;
- 设备针对性强;
- 适合实时视频和大型模型;
- 需要严格管理GPU和TensorRT版本。
4. 移动端方案
训练模型
│
├── LiteRT/TFLite → Android
├── Core ML → iOS/macOS
└── ExecuTorch → PyTorch移动端
5. 本地大语言模型方案
Safetensors原始权重
│
▼
GGUF
│
▼
llama.cpp / 本地推理软件
八、不同应用场景的选型建议
| 应用场景 | 推荐模型格式 | 推荐推理引擎 |
|---|---|---|
| Windows和Linux通用软件 | ONNX | ONNX Runtime |
| Intel CPU工控机 | ONNX或OpenVINO IR | OpenVINO |
| Intel Core Ultra NPU | OpenVINO IR | OpenVINO |
| NVIDIA独立显卡 | ONNX+Engine | TensorRT |
| Jetson边缘设备 | ONNX+Engine | TensorRT |
| Windows不同品牌显卡 | ONNX | ONNX Runtime+DirectML |
| Android手机 | .tflite或.pte | LiteRT或ExecuTorch |
| iPhone和Mac | .mlpackage | Core ML |
| PyTorch继续训练 | .pth或Safetensors | PyTorch |
| TensorFlow服务器 | SavedModel | TensorFlow Serving |
| 本地大语言模型 | GGUF | llama.cpp |
| 定制NPU或AI芯片 | ONNX等中间格式 | 厂商Runtime或TVM |
九、工程化模型管理建议
实际项目不宜只保存一种模型文件。建议建立三层模型管理体系。
第一层:训练源模型
用于继续训练、微调和追溯。
model.safetensors
training_config.yaml
optimizer_state.pth
label_map.json
这一层保存:
- 原始权重;
- 模型结构配置;
- 优化器状态;
- 训练参数;
- 数据集版本;
- 特征和标签定义。
第二层:通用部署母版
建议使用:
model.onnx
preprocessing.json
metadata.json
test_vectors.npz
这一层用于:
- 跨平台交付;
- 模型结构验证;
- 生成不同设备版本;
- 自动化精度测试;
- 部署版本追溯。
第三层:设备专用模型
根据目标设备生成:
openvino/model.xml
openvino/model.bin
tensorrt/model_orin_fp16.engine
tensorrt/model_rtx4060_fp16.engine
android/model_int8.tflite
ios/model.mlpackage
设备专用模型应同时记录:
- 训练模型版本;
- ONNX文件哈希;
- Opset版本;
- 转换工具版本;
- 运行时版本;
- 目标硬件型号;
- 输入尺寸;
- 动态形状范围;
- 量化精度;
- 校准数据版本;
- 推理精度;
- 推理时间;
- 内存占用。
十、工业设备状态识别项目建议
对于以全连接网络、Autoencoder、LSTM、一维卷积或小型Transformer为主的设备状态识别系统,建议采用以下架构:
PyTorch训练模型
│
├── 保存Safetensors或state_dict
│
▼
导出经过验证的ONNX
│
├── Windows普通CPU:ONNX Runtime
├── Intel CPU/NPU:OpenVINO
├── NVIDIA GPU:TensorRT
└── ARM设备:LiteRT或ExecuTorch
如果最终产品是Windows平板或工控机,推荐按以下优先级实施:
第一阶段:ONNX Runtime CPU
优点:
- Windows部署简单;
- 不要求特定GPU;
- C++和Qt集成方便;
- 可以覆盖多数工控机;
- 模型迁移成本较低。
第二阶段:OpenVINO优化
当设备采用Intel CPU或Intel Core Ultra时,可进一步使用:
- OpenVINO Runtime;
- OpenVINO IR;
- ONNX Runtime OpenVINO Execution Provider。
这类小型时序模型通常计算量有限,CPU推理已经足够。相比使用独立GPU,OpenVINO可能获得更低的端到端延迟和更低的系统复杂度。
第三阶段:TensorRT加速
只有在以下条件同时满足时,才有必要使用TensorRT:
- 设备明确配置NVIDIA GPU;
- 模型计算量较大;
- CPU推理不能满足实时要求;
- 输入尺寸相对固定;
- 能接受针对不同GPU分别生成Engine;
- 产品具备版本管理和模型重新编译能力。
对于小型Autoencoder、Dense或LSTM模型,GPU数据传输和Kernel启动时间可能占据较大比例,TensorRT未必能显著改善端到端延迟。
十一、综合结论
主流AI模型文件格式和推理引擎不存在单一的“最好方案”,其定位各不相同。
从模型文件角度看:
- PyTorch
.pth和Safetensors适合保存训练权重; - ONNX适合跨框架、跨硬件模型交换;
- OpenVINO IR适合Intel平台部署;
- TensorRT Engine适合NVIDIA GPU最终执行;
- TFLite适合Android和嵌入式设备;
- Core ML适合Apple设备;
- GGUF适合本地大语言模型。
从推理引擎角度看:
- ONNX Runtime通用性和工程便利性较好;
- OpenVINO适合Intel CPU、GPU和NPU;
- TensorRT适合NVIDIA GPU极致性能;
- LiteRT适合移动和低功耗设备;
- Core ML适合Apple端侧AI;
- TVM适合定制芯片和深度编译优化。
比较ONNX、OpenVINO和TensorRT时,最重要的结论是:
ONNX主要承担通用模型交换和部署母版的角色;OpenVINO主要承担Intel硬件优化和推理运行的角色;TensorRT主要承担NVIDIA GPU模型编译和高性能执行的角色。
三者并不是简单的竞争或替代关系,而可以构成一条完整部署链:
训练框架
│
▼
ONNX通用模型
│
├── OpenVINO → Intel CPU/GPU/NPU
└── TensorRT → NVIDIA GPU
对于需要长期维护、支持多种硬件的工业AI产品,最稳妥的总体策略是:
训练格式用于继续训练,ONNX用于统一交付,硬件专用格式用于最终加速,推理引擎根据实际设备选择。