6.6 KiB
6.6 KiB
模型训练任务界面设计方案
本方案基于原有需求,对“模型训练面板”的功能模块、交互流程及字段定义进行了全面细化与完善,确保用户体验流畅且功能完整。
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 区分颜色: 🔵 Pending (等待中) 🟡 Training (训练中) 🟢 Success (成功) 🔴 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 交互流程
- 在列表页点击“发布模型”,或在详情页点击“发布模型”。
- 弹出模态框(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)并写入模型表,便于去重/校验一致性