FMQL平台 AI模型开发扫盲:从模型训练到悟空开发板部署(yolov5实战)

一、为什么要写这篇文章

对于大多数嵌入式软件工程师来说,第一次接触 AI模型部署平台 时,往往会遇到几个典型问题:

  • AI模型 .pt / .pth 文件到底是什么?
  • 为什么模型不能直接跑在芯片上?
  • json + raw 是什么?
  • Icraft 编译到底在做什么?
  • PC仿真和板卡运行有什么区别?

官方文档通常分为两类:

  1. 算法类文档(讲神经网络原理)
  2. 工程操作文档(教你运行 demo)

但缺少一类文档:

从嵌入式工程师视角,解释 AI 模型是如何一步步部署到芯片上的。

本文的目标是:

帮助嵌入式软件工程师快速扫盲 FMQL AI模型开发流程

本文使用:

tutorial-runtime-tt3.6.2

工程,并以 yolov5 模型 为例,介绍完整流程:

模型训练 → 模型编译 → PC仿真 → 板卡部署

二、FMQL AI开发整体流程

在 FMQL AI平台上运行一个 AI 模型,整体流程如下:

数据集
   │
   ▼
模型训练 (PyTorch)
   │
   ▼
模型文件 (.pt / .pth)
   │
   ▼
Icraft 编译模型
(parse → optimize → quantize → adapt → generate)
   │
   ▼
生成部署模型
(json + raw)
   │
   ▼
PC仿真验证
   │
   ▼
部署到开发板
   │
   ▼
Runtime推理

如果用嵌入式开发类比:

AI开发 嵌入式开发
训练模型 写代码
.pt模型 源代码
Icraft compile gcc编译
json/raw ELF
runtime OS运行程序

本质就是:

把 AI模型编译成 AI芯片可以执行的指令

三、FMQL AI平台架构(简化理解)

FMQL100TAI 是一颗 AI FPGA SoC

简化结构如下:

                +-------------------+
                |        CPU        |
                |   Linux + APP     |
                +---------+---------+
                          |
                          | DDR
                          |
       +------------------+------------------+
       |                                     |
+------v------+                       +------v------+
|    FPGA      |                      |     NPU      |
| 前处理/后处理 |                      | 神经网络计算 |
| ImageMake等IP |                     | Conv / MAC   |
+-------------+                      +--------------+

职责:

模块 作用
CPU 控制程序运行
NPU 神经网络推理计算
FPGA 前处理 / 后处理加速

典型推理流程:

输入图片
   │
   ▼
前处理
   │
   ▼
NPU神经网络推理
   │
   ▼
后处理

四、AI模型是怎么来的

AI模型通常使用 深度学习框架训练

常见框架:

PyTorch
TensorFlow

以 YOLOv5 为例:

训练完成后会得到模型文件:

yolov5s.pt

model.pth

这些文件包含:

  • 网络结构
  • 权重参数

但这些模型 只能在深度学习框架中运行,AI芯片并不能直接识别这些格式。

因此需要通过 AI编译器进行转换


五、模型格式说明(pt 与 ONNX)

在 AI 模型部署流程中,常见模型格式包括:

格式 说明
.pt / .pth PyTorch 模型
.onnx 通用模型交换格式
json/raw AI芯片部署模型

很多 AI部署流程会使用:

PyTorch → ONNX → 芯片模型

但在 FMQL tutorial-runtime 示例工程中,并不需要 ONNX。

工程配置文件 toml 中可以看到:

framework = "pytorch"
network = "./fmodel/yolov5s_640x640.pt"
frame_version = "1.9"

因此本示例工程走的是:

PyTorch (.pt)
      │
      ▼
Icraft compile
      │
      ▼
json + raw

也就是说:

本工程示例可以直接编译 pt 模型
不需要 ONNX 文件

ONNX 在 FMQL 平台中 属于可选中间格式,主要用于:

  • 跨框架模型转换
  • 第三方模型兼容
  • 统一模型格式

但并不是 Icraft 编译的必经步骤。


六、Icraft 编译流程

FMQL AI平台提供的模型编译工具:

Icraft

作用:

把 AI模型转换成 AI芯片可执行模型

编译命令:

icraft compile config/yolov5s_hard.toml

编译流程包括五个阶段:

parse
optimize
quantize
adapt
generate

1 parse

解析模型结构:

.pt → 计算图

2 optimize

优化网络结构,例如:

Conv + BatchNorm 融合

减少计算量。


3 quantize(量化)

把:

float32

转换为:

int8

原因:

AI芯片主要使用 INT8 运算

量化需要:

校准数据集

通常使用几十张图片即可。


4 adapt

适配硬件架构,例如:

通道对齐
数据格式转换

5 generate

生成最终部署模型:

BY.json
BY.raw

七、json 和 raw 是什么

Icraft 编译完成后会生成:

json + raw

例如:

imodel/yolov5s_hard/

目录:

yolov5s_hard_BY.json
yolov5s_hard_BY.raw

含义:

文件 作用
json 神经网络计算图
raw 权重参数 + 芯片指令

简单理解:

json = 程序结构
raw = 程序数据

八、PC仿真验证

部署到板卡之前,可以在 PC 上进行 模型仿真验证

主要目的:

验证模型转换是否正确
验证量化精度

示例工程中提供:

python_demo
C++_demo

可以直接在 PC 上运行推理测试。


九、部署到悟空开发板

准备硬件:

悟空开发板
SD卡
串口
网口

启动 Linux 系统后运行:

icraft serve

作用:

启动 AI设备服务

之后应用程序即可加载模型并运行推理。


十、AI模型运行流程

部署完成后的推理流程:

加载模型
   │
   ▼
读取输入数据
   │
   ▼
NPU执行神经网络
   │
   ▼
输出结果

Runtime 负责:

解析 json
加载 raw
调度算子执行

推理接口示例:

runtime.forward()

CPU 负责控制流程,NPU负责计算。


十一、tutorial-runtime 工程结构

本文示例工程:

tutorial-runtime-tt3.6.2

主要目录:

examples/
│
├─ compile
│   └─ 模型编译配置
│
├─ deploy
│   ├─ C++_demo
│   └─ python_demo
│
└─ imodel
    └─ 编译生成模型

关键配置文件:

config/yolov5s_hard.toml

配置内容包括:

  • 输入模型
  • 量化参数
  • 硬件算子

十二、总结

AI模型部署本质上就是:

训练模型
   ↓
导出模型
   ↓
Icraft编译
   ↓
生成 json/raw
   ↓
PC仿真
   ↓
部署到板卡
   ↓
Runtime运行

对于嵌入式工程师来说,可以简单理解为:

AI模型 = 程序
Icraft = AI编译器
NPU = AI专用CPU

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐