JavaProjectRepo/模型训练任务.md

147 lines
6.6 KiB
Markdown
Raw Normal View History

2026-03-20 19:00:16 +08:00
# 模型训练任务界面设计方案
本方案基于原有需求,对“模型训练面板”的功能模块、交互流程及字段定义进行了全面细化与完善,确保用户体验流畅且功能完整。
## 1. 任务列表 (Task List)
### 1.1 查询栏
* **任务名称**:文本输入框(支持模糊搜索)。
* **算法类型**:下拉选择框(如 GPR, MLP, FastRBF, ...)。
* **设备类型**:下拉选择框(如 CylindricalTank, AnnularTank, ...)。
* **状态**:下拉选择框(全部, Pending, Training, Success, Failed
* **操作按钮**[查询] [重置] [新建训练任务]
### 1.2 数据表格
| 列名 | 数据类型 | 说明 |
| :--- | :--- | :--- |
| **任务名称** | String | 点击名称可直接跳转详情页 |
| **算法类型** | String | GPR / MLP 等 |
| **设备类型** | String | CylindricalTank 等 |
| **训练集来源** | String | 显示文件名或数据源类型(如 "Upload: dataset.csv" |
| **核心指标** | String | 成功时显示关键指标(如 RMSE: 0.02, R2: 0.98),失败/进行中显示 "-" |
| **状态** | Status | 使用 Tag 区分颜色:<br>🔵 Pending (等待中)<br>🟡 Training (训练中)<br>🟢 Success (成功)<br>🔴 Failed (失败) |
| **创建时间** | DateTime | yyyy-MM-dd HH:mm:ss |
| **操作** | ButtonGroup | [查看详情] [发布模型] [删除] |
* **分页控件**:位于表格底部,支持调整每页显示条数。
### 1.3 操作说明
* **查看详情**:任何状态下均可点击,跳转至详情页。
* **发布模型**:仅当状态为 **Success** 时可用(否则禁用)。点击弹出发布确认框。
* **删除**:仅当状态为 **Success****Failed** 时可用Training 中不可删除)。点击需二次确认,删除后不可恢复。
---
## 2. 新建训练任务 (Create Task)
采用分步向导或单页表单形式,推荐单页表单。
### 2.1 基础配置
* **任务名称** (必填):文本框,建议自动生成默认名(如 "Train_GPR_20240311_001")。
* **设备类型** (必填):下拉选择。
* **算法类型** (必填):下拉选择。选择后,下方的“参数配置”应动态加载该算法的默认参数。
### 2.2 数据准备
* **数据源类型** (必填):单选框 [文件上传] / [临界库数据]。
* **选中“文件上传”**
* 显示文件上传组件(支持 .csv, .xlsx
* 上传后需显示文件名及大小,并提供“重新上传”按钮。
* **选中“临界库数据”**(二期功能):
* 显示时间范围选择器(开始时间 - 结束时间)。
* 显示“预览数据量”按钮(如:查询到 5000 条记录)。
### 2.3 参数配置
* **训练超参数**
* 提供“加载默认值”按钮。
* 使用 **JSON 编辑器****Key-Value 列表** 展示参数(如 `epochs`, `learning_rate`, `kernel` 等)。
* 相比单纯文本框JSON 编辑器能提供格式校验,避免输入错误。
### 2.4 底部按钮
* [提交训练]:点击后校验表单,成功则跳转回列表页并自动刷新。
* [取消]:返回列表页。
---
## 3. 查看详情 (Task Details)
详情页分为三个主要区域:基础信息、训练监控/结果、日志。
### 3.1 基础信息卡片
展示任务的静态配置信息:
* 任务名称、ID
* 算法类型、设备类型
* 数据源路径
* 训练参数JSON 格式化展示,只读)
* 创建时间、更新时间
### 3.2 训练监控/结果区
根据状态不同,展示不同内容:
* **Training (训练中)**
* **进度条**:显示当前 Epoch/Total Epochs。
* **实时指标图**:折线图展示 Loss (损失函数) 随迭代次数的变化。前端定时轮询或通过 WebSocket 获取最新数据。
* **当前指标**:实时显示当前的 RMSE, Accuracy 等。
* **Success (成功)**
* **最终指标卡片**RMSE, MAE, R2, MaxError 等关键评估指标。
* **误差散点图**:展示 `metrics_image_path` 对应的图片(预测值 vs 真实值)。
* **特征重要性**(可选):如果算法支持,展示特征权重图。
* **Failed (失败)**
* 显示醒目的红色错误提示。
### 3.3 错误日志区
* 仅在 **Failed** 状态或 **Training** 状态下显示。
* 展示后端或 Python 服务返回的详细异常堆栈或 Print 输出,便于排查问题。
### 3.4 顶部/底部操作栏
* [发布模型](仅 Success 状态可见)
* [返回列表]
---
## 4. 模型发布 (Publish Model)
将临时训练任务产出的模型正式注册到系统模型库中。
### 4.1 交互流程
1. 在列表页点击“发布模型”,或在详情页点击“发布模型”。
2. 弹出模态框Modal
### 4.2 弹窗内容
* **任务名称**(只读回显)
* **算法/设备**(只读回显)
* **版本号 (Version Tag)** (必填):文本框。
* 提示用户输入版本标识,如 `v1.0`, `20240311-release`
* 后端需校验该算法+设备下版本号的唯一性。
* **备注描述**:多行文本框(可选),用于记录模型特性或变更点。
### 4.3 确认操作
* [确认发布]
* 后端将临时模型文件移动到正式目录。
*`algorithm_model` 表中创建新记录。
* 发布成功后,提示用户“发布成功,请前往模型管理页激活使用”。
* 关闭弹窗,刷新列表(建议在列表中增加“已发布”标记或状态)。
* [取消]:关闭弹窗。
### 4.4 模型路径规划
模型路径规划建议(推荐目录结构) 以你现有的配置 file-space.model-path 为根(例如 E:/python_coding/keffCenter/models/ ),建议分两棵树:
- 训练产物(可清理)
- {modelRoot}/runs/{algorithmType}/{deviceType}/{taskId}/
- 里面放: pipeline.pkl 、 metrics.json 、 feature_map.json 、 metrics.png 、 train_params.json 等
- 优点:用 taskId 保证唯一、不覆盖
- 发布模型(长期保留、可回滚)
- {modelRoot}/published/{algorithmType}/{deviceType}/{versionTag}/
- 里面放: pipeline.pkl (或带 hash 的文件名、配套文件、manifest可选
- algorithm_model.model_path 指向这里
另外建议:
- 路径里尽量只用 algorithmType/deviceType/versionTag/taskId 这种稳定字段,避免包含中文/空格
- versionTag 建议由用户输入但要校验(只允许 [a-zA-Z0-9._-] ),避免路径注入
- 如果担心文件重复,可在发布时生成 artifactId hash并写入模型表便于去重/校验一致性