0
0

模型格式与部署链路:PyTorch、ONNX、TensorFlow PB、MindIR 深入理解

1. 核心认知

深度学习模型从训练到部署,不是直接运行 Python 模型,而是经过多个抽象层:

模型开发框架
        ↓
计算图表示(IR)
        ↓
编译优化
        ↓
推理 Runtime
        ↓
硬件执行

典型链路:

PyTorch
  ↓
ONNX
  ↓
TensorRT
  ↓
CUDA Kernel
  ↓
NVIDIA GPU

昇腾生态:

MindSpore
  ↓
MindIR
  ↓
CANN
  ↓
Ascend Kernel
  ↓
昇腾 NPU

2. PyTorch 模型格式

.pt / .pth

PyTorch 原生保存格式:

torch.save(model.state_dict(), "model.pth")

主要保存:

  • Tensor 权重
  • 参数字典
  • optimizer 状态
  • checkpoint 信息

特点:

  • 强依赖 PyTorch
  • 适合训练恢复
  • 不适合作为通用部署格式

3. ONNX 是什么?

ONNX(Open Neural Network Exchange)是开放神经网络交换格式。

它不是 PyTorch 独有格式,而是一种通用模型中间表示(IR)。

关系:

            ONNX
              ↑
    ┌─────────┼─────────┐
    │         │         │
PyTorch TensorFlow MindSpore

任何支持导出的框架都可以生成 ONNX。


4. ONNX 保存什么?

ONNX主要包含:

计算图

例如:

Input
 ↓
MatMul
 ↓
Add
 ↓
Softmax
 ↓
Output

模型权重

例如:

  • Linear weight
  • Attention weight
  • Embedding weight

因此:

ONNX = 计算图 + 权重

不是:

Python代码
PyTorch对象

5. TensorFlow PB 格式

PB 是 Protocol Buffer 文件格式。

TensorFlow历史上使用:

model.pb

保存:

  • TensorFlow计算图
  • 算子
  • 参数

现代 TensorFlow 更常见:

SavedModel/
    saved_model.pb
    variables/

6. MindSpore 与昇思关系

昇思是 MindSpore 的中文品牌名称。

关系:

华为
 ↓
MindSpore
 ↓
昇思

MindSpore 是华为推出的深度学习框架。


7. MindIR 是什么?

MindIR:MindSpore Intermediate Representation。

文件格式:

model.mindir

定位类似 ONNX,但主要服务 MindSpore 和昇腾生态。

包含:

  • 计算图
  • 算子表示
  • 权重
  • 编译优化信息

8. 为什么昇腾需要 MindIR?

ONNX主要目标是跨框架兼容。

而昇腾希望实现软硬件协同优化:

MindSpore
 ↓
MindIR
 ↓
图优化
 ↓
CANN
 ↓
Ascend NPU

这样可以针对NPU进行:

  • 算子融合
  • 内存优化
  • 调度优化
  • Kernel优化

9. AI Infra 视角理解

真正重要的不是文件后缀,而是整个系统分层:

第一层:训练框架

负责:

  • 自动微分
  • 优化器
  • 分布式训练

代表:

  • PyTorch
  • TensorFlow
  • MindSpore

第二层:模型 IR

负责:

  • 表达计算图
  • 算子表示
  • 图优化

代表:

  • ONNX
  • MindIR
  • MLIR
  • StableHLO

第三层:编译器

负责:

  • 算子融合
  • Kernel生成
  • 调度优化

代表:

  • TensorRT
  • Triton Compiler
  • CUDA Compiler
  • CANN Compiler

第四层:硬件执行

CUDA Kernel → GPU
Ascend Kernel → NPU

10. 对 LLM Inference 工程师的意义

大模型推理竞争不仅是模型规模竞争,更是:

模型
 ↓
计算图优化
 ↓
编译器
 ↓
Kernel
 ↓
硬件

关键技术方向:

  • PyTorch Dynamo / FX Graph
  • ONNX Runtime
  • TensorRT-LLM
  • Triton
  • CUDA Kernel
  • MLIR
  • MindIR
  • CANN
  • NPU Compiler

总结

PyTorch、TensorFlow、MindSpore 是模型开发框架;

ONNX、PB、MindIR 是模型表示格式;

真正决定推理性能的是后面的编译器、Runtime 和 Kernel 优化。

对于 LLM Infra 学习路线:

理解模型格式
 ↓
理解计算图 IR
 ↓
理解编译器
 ↓
理解 Kernel 优化
 ↓
成为推理系统专家