forked from eaiadmin/rtos_llm_opt
145 lines
4.9 KiB
Markdown
145 lines
4.9 KiB
Markdown
# 实验设计与验证方法
|
||
|
||
## 1. 实验目标
|
||
|
||
验证静态联合编排是否能够在AI进入控制系统后,同时保证:
|
||
|
||
1. 控制任务时间边界;
|
||
2. AI任务质量与时效性;
|
||
3. 内存、功耗和启动预算;
|
||
4. 超时、过载和异常时的安全降级。
|
||
|
||
## 2. 平台分层
|
||
|
||
| 层级 | 平台 | 作用 |
|
||
|---|---|---|
|
||
| H0 | 4×V100服务器 | 训练、量化、转换和参考精度 |
|
||
| H1 | RK3588 16 GB | SylixOS方法原型和完整链路 |
|
||
| H2 | RK3588 8 GB限额 | 预算收缩与准入判定验证 |
|
||
| H3 | RK3568/RK3576 | 控制端迁移、低功耗和跨BSP验证 |
|
||
| H4 | 真正MCU | SRAM/Flash、快速启动和极限资源实证 |
|
||
|
||
## 3. 对照组
|
||
|
||
| 编号 | 配置 | 目的 |
|
||
|---|---|---|
|
||
| O0 | 无AI,仅控制任务 | 控制性能下界 |
|
||
| O1 | AI作为普通后台任务 | 观察未经治理的干扰 |
|
||
| O2 | 静态Arena + 固定优先级 | 验证基础静态机制 |
|
||
| O3 | O2 + 固定窗口/算子分段 | 验证时间编排 |
|
||
| O4 | O3 + 准入、超时和规则兜底 | 完整方案 |
|
||
|
||
在同硬件、同模型、同输入和同编译选项下进行机制消融。Linux/PREEMPT_RT与SylixOS比较属于系统方案对照,若推理后端不同,必须单独解释。
|
||
|
||
## 4. 负载场景
|
||
|
||
| 编号 | 场景 | 目的 |
|
||
|---|---|---|
|
||
| L0 | 仅周期控制 | 建立基线 |
|
||
| L1 | 仅AI任务 | 建立模型时间与能耗基线 |
|
||
| L2 | 控制 + AI | 核心共存场景 |
|
||
| L3 | L2 + CPU竞争 | 验证调度和抢占 |
|
||
| L4 | L2 + 内存/DMA竞争 | 验证内存与总线干扰 |
|
||
| L5 | L2 + CAN/网络/存储 | 验证中断和I/O污染 |
|
||
| L6 | L2 + 突发输入 | 验证队列、丢弃与准入 |
|
||
| L7 | L2 + 超时/崩溃/错误输出 | 验证规则兜底和恢复 |
|
||
|
||
## 5. 实验单元
|
||
|
||
### E0:设备和软件准入
|
||
|
||
- BSP启动、时钟、SMP、外设和看门狗;
|
||
- SylixOS/RealEvo版本冻结;
|
||
- 模型在CPU路径完成正确性验证;
|
||
- NPU路径单独设置准入门槛;
|
||
- 测量工具和时间戳校验。
|
||
|
||
### E1:控制任务基线
|
||
|
||
测量1 ms主任务及5/10 ms扩展任务的唤醒延迟、响应时间、抖动和GPIO端到端响应。
|
||
|
||
### E2:模型和算子基线
|
||
|
||
记录每个算子与完整模型的执行时间、峰值内存、工作区、任务质量和 `E/inference`。
|
||
|
||
### E3:内存方案对照
|
||
|
||
比较动态堆、固定Arena、生命周期复用和不同内存限额,观察峰值、碎片、失败点和长稳行为。
|
||
|
||
### E4:时间编排对照
|
||
|
||
比较普通后台运行、固定窗口和算子分段,观察控制任务尾延迟、AI完成率和切分开销。
|
||
|
||
### E5:混合干扰
|
||
|
||
依次增加CPU、内存、DMA、通信和存储干扰,不同时改变多个变量。
|
||
|
||
### E6:准入和过载
|
||
|
||
逐级增加AI到达率,记录队列峰值、拒绝率、过期输入、有效完成率和控制任务边界。
|
||
|
||
### E7:故障与规则兜底
|
||
|
||
注入模型超时、错误输出、任务崩溃和驱动不可用,测量切换时间、控制保持率和恢复时间。
|
||
|
||
### E8:启动、功耗和长稳
|
||
|
||
分别测量启动到安全控制、启动到AI就绪、平均功耗、单次推理能耗和24小时运行状态。
|
||
|
||
## 6. 指标
|
||
|
||
### 6.1 控制层
|
||
|
||
- deadline miss ratio;
|
||
- P50/P95/P99/P99.9 jitter;
|
||
- 观测最大响应时间;
|
||
- GPIO/CAN端到端响应;
|
||
- 降级期间控制任务保持率。
|
||
|
||
### 6.2 AI层
|
||
|
||
- 单次推理时延及分布;
|
||
- 完成率、拒绝率和过期率;
|
||
- 任务准确率、F1或业务指标;
|
||
- 权重、Arena、工作区和峰值内存。
|
||
|
||
### 6.3 系统层
|
||
|
||
- CPU占用和抢占次数;
|
||
- 队列长度;
|
||
- 内存安全余量;
|
||
- `E/inference`;
|
||
- 温度、频率和降频;
|
||
- 启动与恢复时间。
|
||
|
||
## 7. 统计与报告原则
|
||
|
||
1. 普通单元至少独立运行5次;
|
||
2. 控制任务报告样本数、分位数、最大值和违约分子/分母;
|
||
3. 零违约只表述为“在指定工况和样本数下未观测到违约”;
|
||
4. 不用P99.9或观测最大值冒充理论WCET;
|
||
5. 保存超时、拒绝、OOM和任务崩溃,不静默删除失败数据;
|
||
6. 预测与实测必须使用相同配置和版本;
|
||
7. 功耗报告说明测量边界、采样率和空载功率。
|
||
|
||
## 8. 数据产物
|
||
|
||
每次运行至少保存:
|
||
|
||
- `manifest.json`:硬件、SylixOS/BSP、模型、任务和编译配置;
|
||
- `control.csv`:释放、开始、完成、CPU、截止期状态;
|
||
- `inference.csv`:输入、开始、结束、结果、超时与拒绝原因;
|
||
- `memory.csv`:静态区、Arena、栈和峰值;
|
||
- `power.csv`:功率、温度和频率;
|
||
- `events.log`:看门狗、降级、重启和恢复;
|
||
- `summary.json`:指标、样本量和准入结论。
|
||
|
||
## 9. 阶段完成条件
|
||
|
||
- P0:RK3588 CPU路径完成E0~E7;
|
||
- P1:NPU或加速路径在准入后完成E2、E5、E7;
|
||
- P2:RK3568/RK3576复现实验并量化迁移成本;
|
||
- P3:真正MCU完成E0~E8,形成严格MCU论文证据。
|
||
|
||
若BSP、驱动或推理运行时不可用,停止对应路径,输出适配缺口,不把计划写成实测结果。
|