JavaProjectRepo/模型训练任务.md
2026-03-20 19:00:16 +08:00

147 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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