147 lines
6.6 KiB
Markdown
147 lines
6.6 KiB
Markdown
# 模型训练任务界面设计方案
|
||
|
||
本方案基于原有需求,对“模型训练面板”的功能模块、交互流程及字段定义进行了全面细化与完善,确保用户体验流畅且功能完整。
|
||
|
||
## 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)并写入模型表,便于去重/校验一致性
|