forked from eaiadmin/rtos_llm_opt
172 lines
5.8 KiB
Markdown
172 lines
5.8 KiB
Markdown
# 技术路线:静态编排、工具链与芯片协同
|
||
|
||
## 1. 总体架构
|
||
|
||
本子课题采用“离线联合编排 + SylixOS有界运行时 + 规则兜底”的结构。
|
||
|
||
```text
|
||
模型与数据集 控制任务与安全规则
|
||
│ │
|
||
├──模型解析/量化 ├──周期/截止期/WCET
|
||
├──算子图/张量生命周期 ├──中断/DMA/通信开销
|
||
└──质量阈值 └──降级与恢复条件
|
||
│ │
|
||
└────┬─────┘
|
||
▼
|
||
离线联合编排器
|
||
内存规划/时间编排/准入判定
|
||
│
|
||
┌───────────┴───────────┐
|
||
▼ ▼
|
||
拒绝或降级建议 SylixOS工程产物
|
||
│
|
||
▼
|
||
固定任务、静态内存、有界队列
|
||
│
|
||
▼
|
||
超时检测、规则兜底、恢复
|
||
```
|
||
|
||
## 2. 四层技术结构
|
||
|
||
### 2.1 模型与算子层
|
||
|
||
- 固定模型版本、输入尺寸和任务质量标准;
|
||
- INT8等目标量化;
|
||
- 有限算子集合;
|
||
- 统计权重、Tensor Arena和工作区;
|
||
- 建立目标板算子执行时间和能耗数据库。
|
||
|
||
### 2.2 离线编排层
|
||
|
||
- 分析控制任务周期、截止期、执行时间与干扰;
|
||
- 规划静态内存和张量复用;
|
||
- 选择完整推理窗口或算子分段窗口;
|
||
- 计算响应时间和安全余量;
|
||
- 输出 `PASS / PASS WITH LIMITS / REJECT`。
|
||
|
||
### 2.3 SylixOS执行层
|
||
|
||
- 固定优先级与周期释放;
|
||
- 控制任务、AI任务和安全任务分级;
|
||
- 任务核绑定与中断治理;
|
||
- 静态区、固定Arena和DMA缓冲;
|
||
- 高精度时间戳、看门狗和异常恢复。
|
||
|
||
### 2.4 规则与闭环层
|
||
|
||
- AI输出范围、状态机和置信度检查;
|
||
- 超时或过载时丢弃过期结果;
|
||
- 默认动作或规则控制接管;
|
||
- 恢复前连续自检;
|
||
- 保证控制内环不等待AI。
|
||
|
||
## 3. 核心机制
|
||
|
||
### 3.1 静态内存
|
||
|
||
部署前计算:
|
||
|
||
\[
|
||
M_{AI}=M_{weights}+M_{arena}+M_{workspace}+M_{IO}+M_{stack}
|
||
\]
|
||
|
||
并保证:
|
||
|
||
\[
|
||
M_{AI}\leq M_{total}-M_{OS}-M_{control}-M_{comm}-M_{safety}
|
||
\]
|
||
|
||
运行阶段避免模型路径使用无界动态分配;权重、张量、DMA和控制缓冲分区管理。
|
||
|
||
### 3.2 静态时间
|
||
|
||
控制任务始终高于AI任务。AI采用以下两种方式之一:
|
||
|
||
- 固定周期内完成一次完整推理;
|
||
- 把算子图切分成若干有界片段,分布在多个控制周期的空闲窗口执行。
|
||
|
||
必须分析AI不可抢占片段、中断和DMA对关键任务造成的最大阻塞。
|
||
|
||
### 3.3 有界通信
|
||
|
||
- 固定长度队列或环形缓冲;
|
||
- 最新值优先,过期输入可丢弃;
|
||
- 控制任务不得因等待AI队列而阻塞;
|
||
- 结果携带时间戳和有效期;
|
||
- 超时结果不得晚到生效。
|
||
|
||
### 3.4 部署准入
|
||
|
||
在编译和烧录前检查:
|
||
|
||
- Flash/RAM是否超限;
|
||
- 算子是否受支持;
|
||
- 模型质量是否达标;
|
||
- 推理窗口是否满足;
|
||
- 控制任务是否仍可调度;
|
||
- 是否存在规则兜底和故障恢复路径。
|
||
|
||
## 4. 工具链路线
|
||
|
||
```text
|
||
ONNX/TFLite/其他固定模型
|
||
→ 解析与校验
|
||
→ 量化和算子合法化
|
||
→ 目标芯片算子映射
|
||
→ 张量生命周期与静态内存规划
|
||
→ 控制任务联合调度分析
|
||
→ SylixOS C/C++、链接段和任务配置生成
|
||
→ RealEvo编译、部署、调试
|
||
→ 板端数据回灌
|
||
```
|
||
|
||
建议研究团队开发独立的编排器,不重复实现IDE。编排器负责模型、资源和任务分析;RealEvo继续负责BSP/App工程、交叉编译、部署和调试。
|
||
|
||
## 5. 结合现有设备的实现
|
||
|
||
### 5.1 4×V100服务器
|
||
|
||
负责训练、剪枝、量化校准、参考精度、模型转换和编排工具运行。服务器结果只提供模型侧基线,不作为控制端实时性证据。
|
||
|
||
### 5.2 RK3588工业盒
|
||
|
||
首期以CPU路径打通端到端流程,再把NPU作为条件扩展:
|
||
|
||
1. SylixOS BSP和控制任务准入;
|
||
2. CPU小模型运行;
|
||
3. 静态Arena和任务生成;
|
||
4. 固定核、共享核与干扰对照;
|
||
5. 超时、过载和规则兜底;
|
||
6. NPU运行时可用后增加DMA、统一内存和中断实验。
|
||
|
||
### 5.3 RK3568/RK3576
|
||
|
||
用于验证生成代码和资源描述能否跨BSP迁移,并逐步缩小内存、算力和功耗预算。两者仍归类为控制端SoC。
|
||
|
||
### 5.4 真正MCU
|
||
|
||
必须在BSP、最小系统、模型运行时和测量链路确认后选型。真正MCU阶段应把模型收敛到1D CNN、DS-CNN、MLP、决策树等有限任务,不延续大模型口径。
|
||
|
||
## 6. SylixOS技术映射
|
||
|
||
| 研究机制 | SylixOS/RealEvo落点 | 待确认项 |
|
||
|---|---|---|
|
||
| 周期任务与优先级 | 线程、定时器、RMS/固定优先级 | API和实际调度配置 |
|
||
| 核绑定 | SMP与大小核调度 | RK3588具体亲和性接口 |
|
||
| 静态内存 | BSP内存映射、链接脚本、静态区 | 内存域和限额能力 |
|
||
| DMA/Cache | BSP与驱动接口 | NPU、摄像头等设备一致性路径 |
|
||
| 异常恢复 | 看门狗、任务/进程恢复 | 推荐的局部重启方式 |
|
||
| 代码部署 | RealEvo BSP/App构建、上传和调试 | 外部生成工程接口 |
|
||
| MCU落地 | lite/tiny与目标BSP | 芯片清单和最小资源占用 |
|
||
|
||
## 7. 技术边界
|
||
|
||
- 不把GPU/NPU内部执行时间直接归因于RTOS;
|
||
- 不把不同推理后端的整栈差异写成操作系统差异;
|
||
- 不用观测最大值替代理论WCET;
|
||
- 不在驱动未准入时承诺NPU路径;
|
||
- 不用SoC受限配置替代真正MCU功耗和存储结论。
|
||
|
||
六步编排、配置产物和准入门槛详见 [01-离线联合编排研究框架.md](./01-离线联合编排研究框架.md)。
|