第16章 学生项目冲刺四:接入智能能力

v0.1已经用真实设备完成产品闭环。本周接入《人工智能数据科学》课程形成的模型发布包。模型运行器将替换基线判断。主机、设备和产品事件三层验证通过后,项目发布v0.5。

v0.1稳定接口
+ 数据集版本
+ 模型发布包
→ 接收检查
→ 模型运行器
→ 资源与数值验证
→ 事件策略
→ v0.5

一周内无法同时完成大规模重新采集、反复模型研究和多平台部署。本章首先检查输入是否已经具备;不具备时立即采用降级路线,而不是在周末才发现模型无法进入产品。

模型在测试集上的指标只描述规定条件下的表现。产品还要处理设备输入、运行资源、事件规则和用户反馈。模型接入把这些边界连接起来,因此可能暴露训练阶段未出现的问题,也会增加跨课程协调成本。

完成本章后,应当能够:

16.1 执行周初接入门禁

必须回答:

[ ] 数据来自已记录采集会话
[ ] 正例、反例和主要干扰均有样本
[ ] 数据授权范围支持当前用途
[ ] 标签定义稳定
[ ] 采样率、单位、窗口和通道顺序已固定
[ ] 训练/验证/测试划分可追溯
[ ] 基线模型已有实际评价
[ ] 模型格式能被计划运行环境支持
[ ] 模型包交付时间不晚于本周中段

若前三项不满足,不能靠生成合成数字填补数据。可选择:

降级决定写入技术决策记录和README.md。

16.2 固定数据和标签接口

16.2.1 数据集版本

dataset-manifest.json至少记录:

dataset_version
source_sessions
sensor_schema
sampling_configuration
label_definition_version
split_artifacts_and_hashes
generation_code_commit
access_and_authorization

标签定义文件说明:

本课程不评价标注算法,但检查标签和产品event_type是否存在清楚映射。

16.2.2 输入一致性

| 参数 | v0.1设备 | 数据集 | 模型 | 处理 |
|---|---|---|---|---|
| 传感器/通道 |  |  |  |  |
| 单位 |  |  |  |  |
| 采样率 |  |  |  |  |
| 窗口长度 |  |  |  |  |
| 步长 |  |  |  |  |
| 数据类型 |  |  |  |  |

任何不一致必须显式转换或重新生成构建物。不能只修改文档数字。

16.3 接收基线模型发布包

最小发布包:

model-manifest.json
model-card.md
labels.txt
preprocessing.json
evaluation-summary.json
golden-input
golden-output
模型二进制或受控取得信息

接收检查:

python tools/project.py fetch-model <model-version>
python tools/project.py verify-model <model-version>
python tools/project.py model-golden-test <model-version>

记录:

model_version
model_sha256
dataset_version
training_commit
run_id
input/output
evaluation_file
known_limitations

评价摘要中的数字来自数据科学课程实际测试。产品团队不能为了满足发布要求自行补写。

16.4 决定模型运行位置

16.4.1 三种基本方案

方案 优点 主要代价
端侧推理 低网络依赖、原始数据可留在设备 资源、功耗和算子受限
服务器推理 资源充足、模型更新方便 网络、延迟、数据上传和隐私
混合判断 设备初筛,服务器进一步分析 接口和版本更复杂

选择依据:

沿用教师项目的端侧方案不一定适合所有学生项目。决定写入技术决策记录,并设定重新评估条件。

16.4.2 一周内的降级顺序

若端侧资源不满足:

  1. 检查集成错误和重复缓冲;
  2. 请求数据科学课程提供已评价的轻量发布包;
  3. 评估在隐私和网络允许时采用服务器推理;
  4. 继续使用v0.1基线判断并记录限制。

不在本周无计划地更换多个推理框架和主控。

16.5 实现模型运行器

保持v0.1的DecisionEngine接口:

class ModelDecisionEngine final : public DecisionEngine {
 public:
  bool begin(const ModelPackage& package);
  DecisionResult evaluate(const InputFrame& frame) override;
  ModelResourceUsage resources() const;
};

初始化检查:

模型散列
输入输出形状
预处理版本
标签数量和顺序
运行时与算子
内存分配
模型版本日志

推理失败返回无效结果,不能复用上一次分数。

16.6 约束AI完成集成

规划请求:

任务:把<model-version>接入v0.1 DecisionEngine。

只读取:
- 模型清单、预处理、标签和基准样例文件
- v0.1 DecisionEngine接口
- 数据窗口配置
- 当前构建文件

先检查:
1. 输入、输出和标签是否一致;
2. 工具链是否支持模型格式;
3. 需要的文件和资源;
4. 计划修改范围;
5. 基准样例与资源验证方法。

禁止:
- 修改模型包和数据Manifest;
- 改变事件契约;
- 调整模型指标或策略阈值;
- 下载未知模型;
- 添加未批准依赖;
- 提交、推送和烧录。

实施后检查:

[ ] 没有复制另一套输入参数
[ ] 模型版本来自构建物
[ ] 缓冲区有上限
[ ] 量化与类型转换明确
[ ] 错误不会产生有效事件
[ ] 只修改当前议题文件
[ ] 本地构建命令可以复现

16.7 完成三层验证

16.7.1 主机接收验证

python tools/project.py verify-model <model-version>
python tools/project.py model-golden-test <model-version>

证明模型包、预处理和参考运行接口一致。

16.7.2 目标运行环境验证

端侧项目:

python tools/project.py build --profile golden
python tools/project.py flash
python tools/project.py monitor

服务器项目运行相同基准样例输入到部署服务。记录实际:

16.7.3 产品事件验证

模型分数经过事件策略后,使用:

核对事件携带:

model_version
policy_version
firmware_or_service_version
event_id
event_type

模型正确运行不等于用户事件正确。三层结果分别保存。

16.8 选择初始事件策略

根据项目设置:

每项参数来自数据验证或产品风险,不由AI凭经验给出。策略配置与模型版本绑定:

policy-0.5.0
↔ model-<实际版本>
↔ dataset-<实际版本>

修改参数建立议题,附数据或场景证据。

16.9 处理跨课程变更

模型输入与设备不一致

建立跨课程议题,列出三处实际值。由数据课程决定重新导出,或由硬件课程确认设备端转换。转换进入版本化预处理并重新评价。

模型资源超过预算

附构建映射、内存和时延实测。不要只写“模型太大”。比较轻量模型、服务器推理或硬件方案。

真实场景效果低于测试集

记录具体场景、硬件、模型和事件。数据课程分析分布和错误样本,产品团队检查安装与策略。本周不把全部问题归因于阈值。

模型包临时更新

已接收的模型文件不可原地覆盖。新内容使用新版本和散列,重新执行三层验证。

16.10 合并智能能力

建议合并请求:

数据与模型清单合并请求
→ 模型接收检查MR
→ `ModelDecisionEngine`合并请求
→ 事件策略MR
→ v0.5集成MR

模型、固件和事件策略由不同成员评审。合并请求说明AI参与、实际模型版本、验证层级和已知限制。

不要把大模型二进制的普通Git差异与大量集成代码混在一个无法审查的提交中。按课程规定使用Git LFS或受控构建物存储。

16.11 发布v0.5

README.md更新:

发布检查:

[ ] 数据集与授权可追溯
[ ] 模型包完整且散列一致
[ ] 输入和输出接口一致
[ ] 主机基准样例测试通过
[ ] 目标环境基准样例测试通过
[ ] 资源有实际测量
[ ] 事件策略测试通过
[ ] 真实正例、反例和干扰有记录
[ ] 事件能追溯模型与策略
[ ] 回退路径可执行
[ ] README.md没有把模型指标写成产品承诺

创建:

git switch main
git pull --ff-only
git tag -a v0.5.0 -m "v0.5.0 integrated intelligent capability"
git push origin v0.5.0

16.12 本章小结

本章把数据科学课程的模型发布包接入学生项目。模型清单、散列值和基准样例固定输入输出。资源测量和事件策略把模型结果转化为产品能力。

模型未达到工程接收条件时,团队使用明确降级路线,而不是让AI补写数据、指标或接口。v0.5保留v0.1闭环,并为第17章的系统测试和用户试用提供智能版本基线。

16.13 综合实践

  1. 对数据和模型执行接入门禁。选择最危险的缺失项,形成继续、降级或延后的工程决定。
  2. 建立设备、数据集和模型输入一致性表。对一个不一致项提出跨课程议题,并附实际证据。
  3. 比较端侧、服务器和混合推理,依据本组约束选择方案。决定写入技术决策记录。
  4. 接入模型包,完成基准样例、资源和产品事件3层验证。说明每层能够和不能够证明什么。
  5. 用数据或风险证据确定事件策略参数,形成v0.5.0发布说明,并追溯到数据集、模型和代码版本。