📘 AI 模型部署体系全景:从 PyTorch 到 RKNN 的嵌入式类比解析
🧠 一、AI 模型部署的整体流程
AI 模型的部署流程可以类比嵌入式系统的启动流程:
| 阶段 | 嵌入式系统 | AI 模型部署 |
|---|---|---|
| 源码定义 | DTS + SPL + U-Boot | PyTorch / TensorFlow 模型结构 |
| 编译构建 | U-Boot.img | ONNX / TFLite / RKNN / TensorRT |
| 烧录部署 | 烧录到 eMMC / SPI | 推理引擎加载模型 |
| 执行运行 | SPL/U-Boot 启动 | GPU/NPU 执行推理逻辑 |
🧩 二、主流 AI 框架与模型格式对照表
| 框架 | 常见模型 | 原始格式 | 可导出格式 | 推理引擎 | 典型后缀 |
|---|---|---|---|---|---|
| PyTorch | YOLO, LLM, Qwen | .pt, .pth |
.onnx |
TensorRT, ONNX Runtime | .pt, .onnx, .engine |
| TensorFlow | SSD, MobileNet | .pb, .ckpt |
.tflite, .onnx |
TFLite, TensorRT | .pb, .tflite, .onnx |
| Caffe | AlexNet, VGG | .caffemodel, .prototxt |
.onnx |
Caffe, TensorRT | .caffemodel, .prototxt, .onnx |
| Darknet | YOLOv3/v4 | .weights, .cfg |
.onnx |
TensorRT, OpenCV DNN | .weights, .cfg, .onnx |
| PaddlePaddle | PP-YOLO, ERNIE | .pdmodel, .pdparams |
.onnx |
Paddle Lite, ONNX Runtime | .pdmodel, .onnx |
| Keras | 简化版 TF 模型 | .h5 |
.tflite, .onnx |
TFLite, ONNX Runtime | .h5, .tflite, .onnx |
| RKNN Toolkit | 任意模型转 Rockchip 格式 | .onnx, .tflite, .pb → .rknn |
.rknn |
RKNN Lite, RKNN API | .rknn |
📦 三、模型文件后缀详解
| 后缀 | 来源 | 含义 | 特点 |
|---|---|---|---|
.pt / .pth |
PyTorch | 原始模型文件 | 包含结构和权重,训练环境使用 |
.onnx |
通用 | 中间交换格式 | 跨框架部署,支持多平台 |
.pb |
TensorFlow | Protocol Buffer 格式 | TF 原始模型,适合服务器部署 |
.tflite |
TensorFlow Lite | 轻量模型 | 适合移动端和嵌入式设备 |
.caffemodel |
Caffe | 权重文件 | 与 .prototxt 配合使用 |
.prototxt |
Caffe | 网络结构定义 | 类似设备树结构定义 |
.weights |
Darknet | 权重文件 | YOLOv3/v4 原始格式 |
.cfg |
Darknet | 网络结构定义 | 配合 .weights 使用 |
.h5 |
Keras | 模型结构 + 权重 | 可导出为 .tflite 或 .onnx |
.rknn |
Rockchip | Rockchip 专用格式 | 用于 RK3588/NPU 推理 |
.engine |
TensorRT | 编译后的推理引擎 | 高速执行,适合 Jetson |
.pdmodel / .pdparams |
PaddlePaddle | Paddle 模型结构与参数 | Paddle 专用格式 |
🔄 四、ONNX 的核心作用与转换流程
ONNX 是 AI 模型部署中的"中间格式",类似于嵌入式系统中的 .dtb:
- 跨平台兼容:支持 PyTorch、TensorFlow、Caffe、Keras 等框架导出
- 部署灵活:可用于 TensorRT、ONNX Runtime、RKNN Toolkit 等推理引擎
- 便于优化:支持量化、剪枝、融合等模型优化操作
示例转换流程(YOLOv8)
YOLOv8.pt → YOLOv8.onnx → YOLOv8.engine(Jetson)
↓
YOLOv8.rknn(RK3588)
🚀 五、典型平台部署路径
Jetson 平台(NVIDIA)
| 步骤 | 工具 | 文件 |
|---|---|---|
| 模型训练 | PyTorch | .pt |
| 导出中间格式 | ONNX | .onnx |
| 编译推理引擎 | TensorRT | .engine |
| 推理执行 | C++/Python + TensorRT | 实时目标检测 |
RK3588 平台(Rockchip)
| 步骤 | 工具 | 文件 |
|---|---|---|
| 模型准备 | ONNX / TFLite | .onnx / .tflite |
| 转换为 RKNN | RKNN Toolkit | .rknn |
| 推理执行 | RKNN API / Lite | NPU 加速推理 |
Android 平台
| 步骤 | 工具 | 文件 |
|---|---|---|
| 模型训练 | TensorFlow / Keras | .pb / .h5 |
| 导出轻量模型 | TFLite Converter | .tflite |
| 推理执行 | TFLite Runtime | 手机端部署推理 |
🧠 六、LLM 与 Qwen 的位置
| 名称 | 类型 | 说明 |
|---|---|---|
| LLM(Large Language Model) | 模型类型 | 用于自然语言理解与生成,参数量巨大 |
| Qwen(通义千问) | 模型实例 | 阿里巴巴推出的 LLM,支持中文、代码、多模态输入 |
| 部署方式 | 推理引擎 | 可导出为 ONNX,部署到服务器或边缘设备 |
| 类比嵌入式 | 脚本解释器 | 类似复杂 shell 脚本系统,支持上下文理解与生成 |
📘 七、嵌入式类比总结表
| AI 概念 | 嵌入式类比 | 说明 |
|---|---|---|
| PyTorch 模型(.pt) | U-Boot 源码 | 原始模型定义 |
| ONNX 模型(.onnx) | 编译后的设备树(.dtb) | 中间格式,跨平台 |
| TensorRT 引擎(.engine) | 烧录后的 U-Boot 镜像 | 高速执行体 |
| 推理执行 | SPL/U-Boot 启动 | 实际运行逻辑 |
| 模型结构定义(cfg, prototxt) | DTS | 网络结构描述 |
| 模型转换工具链 | 编译器 | 模型构建与优化流程 |
🛠️ 八、推荐工具链与脚本模板
| 平台 | 工具链 | 推荐脚本 |
|---|---|---|
| Jetson | PyTorch → ONNX → TensorRT | trtexec, torch.onnx.export |
| RK3588 | ONNX → RKNN | rknn_toolkit, rknn_convert.py |
| Android | TF → TFLite | tflite_convert, FlatBuffer |
| 通用服务器 | ONNX → ONNX Runtime | onnxruntime.InferenceSession |