# AutoFPM-Agent-team17 **Repository Path**: fault-predict-competition/AutoFPM-Agent ## Basic Information - **Project Name**: AutoFPM-Agent-team17 - **Description**: 基于大模型Agent的器件故障预测自动化优化系统,实现从数据分析、模型构建、参数调优、性能评估到经验沉淀的闭环智能优化。通过多智能体协同机制,实现故障预测模型的自动生成、自动调优和持续演进,支持内存、硬盘、光放大器等多类型器件故障预测场景。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-10-14 - **Last Updated**: 2026-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AutoFPM-Agent 基于大模型Agent的器件故障预测与自动化调优框架,支持内存、SMART硬盘和新数值器件数据。统一流程为:数据检查 → 适配与准备 → 从头训练基线 → 根据验证结果提出改进 → 实验与消融 → 冻结 → 最终评估。 ## 目录 ```text AutoFPM-Agent/ ├── autofpm_agent/ 原内存Agent、搜索、调度和公共工具 ├── fault_prediction/ 统一入口、SMART、新数据适配和研究闭环 ├── baseline/ 原内存基线训练源码与参数 ├── configs/ 共用配置与新数据任务模板 ├── requirements.txt 运行依赖 └── README.md 统一说明 ``` 仓库仅包含运行代码与必要配置。数据、私有权重、器件分折清单、缓存和实验结果不上传。数据及运行产物分别放在项目内的`data/`、`models/`、`cache/`和`outputs/`。 ## 安装与配置 建议使用Python 3.11。在项目根目录执行: ```bash python -m venv .venv # Windows PowerShell: .venv\Scripts\Activate.ps1 # Linux/macOS: source .venv/bin/activate python -m pip install -r requirements.txt python -m fault_prediction --help ``` Agent使用环境变量连接LLM。PowerShell示例: ```powershell $env:AUTOFPM_API_KEY = "你的API密钥" $env:AUTOFPM_MODEL = "服务商提供的模型名称" # 兼容服务可选: # $env:AUTOFPM_BASE_URL = "https://your-provider.example/v1" ``` API设置、实验预算、目标F1及P/R约束统一在`configs/autofpm_agent.yaml`中配置。单独执行`baseline`不调用LLM;默认`run`使用LLM规划器。`--search-method rule`为离线规则对照,不等于真实LLM自动适配。 ## 基线方法 | 数据任务 | 默认方法 | | --- | --- | | 内存 | 原paper02:371维Time-patch LightGBM+22维Time-point器件树+OR融合 | | SMART硬盘 | 78维窗口特征+18维SMART事件+器件树+OR融合 | | 新数值数据 | 时间窗口LightGBM+器件事件树+OR融合的结构适配 | 内存、硬盘的原训练实现保留。新数据根据可用数值通道构造历史特征和事件,不能声称与原内存371/22维方法逐项等价。额外单模型对照默认关闭;只有任务描述显式设置`allow_model_comparison=true`,才允许LightGBM单模型、随机森林或逻辑回归候选,基线本身仍为双分支。 ## 跑内存数据 本地准备`data/stage1_feather/`:`type_A/`、`type_B/`内是器件Feather文件,工单为`ticket.csv`或`failure_ticket.csv`。另需提供匹配器件和训练标签的`baseline/configs/reference_folds.csv`。缺失或不匹配时停止,不猜测原分折。 ```bash python -m fault_prediction doctor --task memory --model research python -m fault_prediction prepare --task memory --model research python -m fault_prediction baseline --task memory --model research python -m fault_prediction run --task memory --model research ``` 原内存划分为2024年1—3月训练、4月验证、5月最终评估。历史五月已经被查看,后续复评必须披露历史测试暴露。`--model paper02`保留原生参数搜索对照;`memory_best`仅可只读检查本地另行提供的历史模型。旧入口`python -m autofpm_agent`继续保留。 ### 调优判定与失败恢复 候选与当前最佳必须包含完全相同的验证器件及故障标签,预测重算的TP/FP/FN、P/R/F1也必须与报告一致。预测缺失、重复、非法或不一致会使验收失败,不降级为仅比较F1点估计。只有配对bootstrap的95%区间整体大于0,且F1增益达到配置和提案要求的最小提升时才晋升;正向但不显著的点估计记为Inconclusive。 `max_trials`统计实际完成训练的候选数;`rounds`和`planning_steps`记录决策次数,接口故障与重复建议不消耗有效训练额度。LLM故障后使用受控规则候选;候选按完整参数、特征和成员组合去重。`patience`统计连续未被接受的候选,达到P/R约束下的`target_f1`时提前结束。 每次拟合在独立进程中执行,包含训练和特征探针,受`trial_timeout_seconds`与剩余总时间的较小值约束;超时会终止该训练的子进程树。总时间包含本次运行中的基线训练。时间/LLM预算耗尽记为INCOMPLETE,规划或执行故障记为FAIL,均禁止冻结和最终测试。只有正常完成搜索策略的PASS报告允许冻结;代码升级后须新建实验目录,不能把旧状态当作已通过新验收的结果。 内存支持`log1p/ratio/product/difference`点式特征;探针仅使用训练标签和训练得到的重要性。`report.json`区分`best`和`best_point`,记录`completed_trials`、`planning_steps`、`validated_improvement`和`best_significance`。这些结论只针对当前验证队列,不代表未见数据性能。 ## 跑SMART硬盘数据 2024年数据放在`data/data_Q1_2024`至`data/data_Q4_2024`:1—6月训练、7—9月验证、10—12月最终测试。 ```bash python -m fault_prediction doctor --task smart --year 2024 python -m fault_prediction prepare --task smart --year 2024 python -m fault_prediction baseline --task smart --year 2024 python -m fault_prediction run --task smart --year 2024 ``` 默认逐日快照。需要降低训练采样频率时,各阶段一致添加`--train-stride-days 7`,验证与测试仍逐日评价。每一步成功后再执行下一步。 ## 自动适配新数据 复制`configs/auto_task.example.json`为`configs/my_task.json`,填写实际开发/测试文件、故障定义、预测窗口和训练/验证/测试日期。可不填写列映射,由Agent根据开发画像提出映射,再由程序校验并反馈修正。 ```bash python -m fault_prediction profile --task auto --task-spec configs/my_task.json python -m fault_prediction adapt --task auto --task-spec configs/my_task.json python -m fault_prediction run --task auto --task-spec configs/my_task.json ``` `run`缺少本次基线时自动从头训练。当前支持CSV、Parquet、Feather数值表、同表分片,以及观测表中的实际故障0/1标记或独立故障事件表。开发和测试文件必须分开,开发阶段不读取测试内容。 每条观测需有器件标识、时间和数值特征。故障含义、预测窗口和划分日期必须明确;不确定时Agent输出问题,不猜任务。手工映射可写在任务JSON的`mapping`中: ```json { "device": "unit_ref", "time": "observed_at", "features": ["measured_level", "measured_temperature"], "fault_device": "unit_ref", "fault_time": "terminal_event_at" } ``` 没有独立故障表时,以`failure`指定观测表的实际故障标记,省略`fault_device/fault_time`。字符串时间默认ISO8601,无时区按UTC解释;数值时间需声明`time_unit`,其他格式声明`time_format`,当前观测和故障共用解析规则。手工映射会单独记录,不计为自动理解。 正例窗口为`lead_days < 故障时间 - 观测时间 <= horizon_days`。排除故障后、提前量不足和窗口跨越划分界限的快照;负例需设备实际后续观测覆盖完整预测窗口。标签、身份、未来及故障后信息不能作为预测特征。 当前只处理数值时序和首次观测故障,不支持任意文本、图像、波形、维修周期或回归任务。`max_rows`与`max_matrix_cells`限制处理规模,超限停止,不静默抽样。光放大器真实数据尚未验证。 ## 冻结、评估与结果 选优完成后,保持相同任务和有效参数: ```bash python -m fault_prediction freeze --task auto --task-spec configs/my_task.json python -m fault_prediction prepare-test --task auto --task-spec configs/my_task.json python -m fault_prediction evaluate --task auto --task-spec configs/my_task.json ``` 内存和硬盘分别使用相同的`--task memory --model research`或`--task smart --year 2024`参数执行这三个阶段。阈值仅在训练器件OOF上确定,验证集用于比较候选,最终测试不反馈调优。不能通过删除登记或更换输出目录重复打开同一最终测试。 数据缓存写入`cache/`,基线写入`outputs/baseline/`,Agent实验写入`outputs/agent/`。每轮保存有效配置、证据、假设、接受/拒绝原因和消融;报告包括P/R/F1、TP/FP/FN及运行成本。新数据还保存画像、映射、适配反馈和自动化执行记录。 用相同参数加`--resume`恢复会话,要求数据、配置和源码一致;代码升级后可能需要新实验目录。运行路径限制在项目内,旧工程的数据和产物需另行准备,代码迁移不会自动搬运大体积数据。