📘 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 |
所有评论(0)