项目背景与目标
项目将设备事件转换为固定 JSON:风险等级、简短摘要和建议动作。重点不是用几条样本训练出“专家模型”,而是建立数据审计、Prompt 基线、训练配置、离线评估与交付清单。
完整项目位于 examples/09.8-fault-sft。默认评估只使用标准库;GPU 训练配置单独生成,避免没有硬件时伪造训练结果。
整体架构
text
自创 JSONL
├── validate_data.py:Schema、重复、实体泄漏
├── baseline.py:确定性可解释基线
├── train_lora.py:可选 GPU SFT/LoRA
└── evaluate.py:统一任务与格式指标
│
└── report.json
核心流程
数据字段包括 id、device_id、messages 和结构化目标。训练集与测试集使用不同设备,防止模型只记住设备编号。
验收标准:
- 数据校验无错误、无完全重复;
- 测试输出全部是合法 JSON;
- 风险与动作准确率分别报告;
- 微调候选必须与规则基线和 Prompt 基线比较;
- 保存模型卡所需的基座、数据、依赖和已知限制。
关键实现
离线运行:
bash
python3 validate_data.py
python3 evaluate.py --backend rule
有兼容 GPU 时再安装训练依赖并执行:
bash
python -m pip install -r requirements-train.txt
python train_lora.py
训练脚本使用 Qwen/Qwen3-0.6B、TRL 与 PEFT,默认步数很少,只验证链路。正式报告必须增加数据、独立验证集和足够训练预算。
遇到的问题
为什么保留规则基线
本项目的风险阈值是确定性的,规则本来就很强。若微调不能在更复杂语言表达上提供收益,就不应替换规则系统。
为什么不复用素材数据
原素材的关键词与心理领域数据不属于本项目场景,也可能带来许可和隐私问题。项目重新设计了设备、描述和输出,素材只用于理解训练流程。
小数据训练输出看似完美
这通常是记忆。测试集按设备隔离,并保留基础模型与规则基线,避免用训练样本截图证明效果。
结果、评估与阶段复盘
仓库中的规则基线可离线达到全部固定样例通过,它证明评估协议可运行,不代表 LoRA 已经优于基线。真实训练后把模型输出适配成同一 predict() 接口,才能公平比较。
完成这个项目后,交付物从“一个 Notebook”变成数据、训练、评估和模型说明的组合。
改进方向
- 增加自然语言噪声、缩写和多事件组合;
- 引入时间切分和近似去重;
- 比较 Prompt、LoRA 与 QLoRA 的显存和延迟;
- 增加能力退化集与安全拒答集;
- 使用模型注册表管理 Adapter 与基座依赖。
License: CC BY-NC 4.0
Updated 2 hours ago
Was this article helpful? Give it a like.
0 comments


