📘 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 |