更新平台治理

This commit is contained in:
wangjiming
2026-08-17 09:15:36 +08:00
parent de9c8e4ffe
commit 6c1bf61ff7
13 changed files with 561 additions and 339 deletions

View File

@@ -1,8 +1,9 @@
# 平台治理功能使用指南
> 版本v1.0
> 日期2026-08-10
> 版本v1.1
> 日期2026-08-13
> 适用版本YG Fine-Tune Platform v1.0+
> 更新说明:移除页面权限码设计,改为基于角色的简化权限模型
---
@@ -39,25 +40,52 @@
### 1.3 入口在哪里?
所有治理功能集中在左侧导航栏的 **「系统设置」** 分组下:
所有治理功能集中在左侧导航栏的 **「系统设置」****「平台治理」** 分组下:
```
系统设置
├── 用户设置 ← 用户 CRUD + 角色权限 + 密码管理
├── 租户管理组织/团队(可选)
── 项目空间项目级资源隔离(可选)
├── 审批模板 ← 定义哪些操作需要审批
├── 审批中心 ← 处理待审批请求
── 审计日志查看所有操作记录
├── 用户设置 ← 用户 CRUD + 角色权限 + 密码管理(仅 admin
├── 平台性能系统监控
── 查看日志日志查看
平台治理
── 租户管理组织/团队(仅 admin
├── 项目空间 ← 项目级资源隔离(仅 admin
├── 审批模板 ← 定义哪些操作需要审批(仅 admin
├── 审批中心 ← 处理待审批请求(仅 admin
└── 审计日志 ← 查看所有操作记录(仅 admin
算力资源
└── 算力节点 ← GPU 分配与管理(仅 admin
```
> ⚠️ 以上菜单**只有 admin 用户能看到**。普通用户登录后不会出现这些入口。
>
> **重要变更v1.1**:非 admin 用户**默认可以访问所有业务功能菜单**(模型训练、评测、推理、数据集、数据处理等),无需管理员单独分配权限。
---
## 2. 用户与权限管理
### 2.1 创建用户
### 2.1 权限模型概述v1.1 更新)
平台采用**基于角色的简化权限模型**
| 用户类型 | 可见菜单 | 说明 |
|---------|---------|------|
| **admin管理员** | **全部菜单** | 包括用户设置、平台治理、算力节点等管理功能 |
| **非 admin 用户** | **除管理功能外的所有业务菜单** | 模型训练/评测/推理、数据集、数据处理、日志等 |
> **核心原则**
> - 非 admin 用户**默认拥有所有业务功能的访问权限**,无需单独分配
> - 仅以下功能**仅管理员可见**
> - `用户设置`(用户 CRUD、角色管理
> - `平台治理`(租户管理、项目空间、审批模板/中心、审计日志)
> - `算力节点`GPU 分配)
>
> 资源级别的访问控制通过 **ACL访问控制列表** 实现,详见第 4 章。
### 2.2 创建用户
**路径**`用户设置``创建用户`
@@ -71,42 +99,23 @@
- **角色**:选择 `admin` / `operator` / `viewer`
5. 点击保存
创建后用户可以立即用该账号登录。
创建后用户可以立即用该账号登录**无需额外分配页面权限**
### 2.2 管理用户权限
### 2.3 管理员专属功能
**路径**`用户设置` → 用户列表 → 操作列「页面权限」
以下功能**仅 admin 角色可见**,对其他用户隐藏:
#### 给普通用户分配业务模块权限
| 功能分组 | 包含菜单 | 路由前缀 |
|---------|---------|----------|
| 系统设置 - 用户设置 | 用户列表、创建用户、重置密码 | `/user-settings` |
| 平台治理 - 租户管理 | 租户列表、配额设置 | `/tenants` |
| 平台治理 - 项目空间 | 项目列表、成员管理、ACL | `/projects` |
| 平台治理 - 审批模板 | 审批流程定义 | `/approval-templates` |
| 平台治理 - 审批中心 | 待审批请求处理 | `/approval-instances` |
| 平台治理 - 审计日志 | 操作记录查询与导出 | `/audit-logs` |
| 算力资源 - 算力节点 | GPU 分配与管理 | `/compute` |
点击某用户的「页面权限」按钮,弹出对话框:
```
为 张三 分配可访问的页面模块:
☑ 服务看板 ☑ 模型训练 ☑ 模型评测
☑ 模型推理 ☑ 模型管理 ☑ 数据集管理
☐ 数据处理 ☐ 数据类型转换 ☐ 算力节点 ← 不勾选则不可见
☑ 平台性能 ☑ 查看日志
[取消] [保存]
```
勾选需要的模块,点「保存」即可。
> **注意**
> - 「用户与权限」这个选项**只有 admin 能看到**,其他用户即使被赋权也不会显示
> - admin 用户的权限**不可更改**,始终是全选状态且只读
#### 限制说明
| 权限码 | 说明 | 谁能拥有 |
|---|---|---|
| `user-settings` | 用户设置、租户管理、项目空间、审批、审计日志 | **仅 admin** |
| `compute` | 算力节点、GPU 分配 | **仅 admin** |
| 其他业务权限 | 训练、评测、推理、模型、数据集等 | admin 可分配给任何人 |
### 2.3 重置用户密码
### 2.4 重置用户密码
**两种方式**
@@ -120,14 +129,14 @@
2. 输入旧密码 + 新密码(至少 6 位)
3. 确认修改
### 2.4 删除用户
### 2.5 删除用户
**路径**`用户设置` → 用户列表 → 操作列「删除」
> ⚠️ 删除用户时会**级联清理**其所有关联数据:
> - 该用户创建的数据集、基座模型、微调产物、评测任务
> - 该用户的 ACL 授权记录、GPU 分配记录
> - 该用户的审批实例、审计日志、项目成员关系
> - 该用户的审批实例、审计日志、项目成员关系、登录会话
> - **训练任务保留不删**(避免算力节点上的物理任务数据不一致)
---
@@ -197,7 +206,7 @@
| 资源类型 | admin 看到 | 普通用户看到 |
|---|---|---|
| **基座模型**(容器内注册的本地模型) | 全部 | **全部**(共享资源,有 model-manage 权限即可见 |
| **基座模型**(容器内注册的本地模型) | 全部 | **全部**(共享资源) |
| **数据集** | 全部 | **自己创建的** + 被 ACL 授权的 |
| **微调产物**(训练输出的模型) | 全部 | **自己训练的** + 被 ACL 授权的 |
| **评测任务** | 全部 | **自己创建的** + 被 ACL 授权的 |
@@ -289,14 +298,14 @@ curl -X PUT /modelTF/resources/dataset/ds_alpaca_id/acl \
### 5.3 管理审批
**路径**`系统设置``审批中心`
**路径**`平台治理``审批中心`
1. 查看待审批列表status=pending
2. 点击某条记录查看详情
3. 决策:「通过」或「拒绝」
4. 决策结果自动执行对应操作并记录审计日志
**审批模板**`系统设置``审批模板`定义每种操作需要几步审批、每步谁来审。默认模板都是单步admin 审批即可)。
**审批模板**`平台治理``审批模板`定义每种操作需要几步审批、每步谁来审。默认模板都是单步admin 审批即可)。
---
@@ -315,7 +324,7 @@ curl -X PUT /modelTF/resources/dataset/ds_alpaca_id/acl \
### 6.2 查询审计日志
**路径**`系统设置``审计日志`
**路径**`平台治理``审计日志`
支持筛选条件:
@@ -332,7 +341,7 @@ curl -X PUT /modelTF/resources/dataset/ds_alpaca_id/acl \
### 6.4 日志保留策略
审计日志受**留存策略**控制(`系统设置` → 租户管理 → 绑定留存策略)。默认保留 30 天,超期自动清理。
审计日志受**留存策略**控制(`平台治理` → 租户管理 → 绑定留存策略)。默认保留 30 天,超期自动清理。
---
@@ -340,9 +349,13 @@ curl -X PUT /modelTF/resources/dataset/ds_alpaca_id/acl \
### Q1: 普通用户看不到某个菜单?
检查两件事
1. 该用户是否有对应的**权限码**admin 在「用户设置」→「页面权限」中分配
2. 该菜单是否属于 **admin 专属**如「用户设置」「算力节点」——这些对非 admin 永远不可见)
根据 v1.1 权限模型
1. **业务菜单**(训练、评测、推理、数据集等):普通用户**默认全部可见**,无需分配
2. **管理菜单**(用户设置、租户管理、算力节点等):**仅 admin 可见**,这是设计如此
如果普通用户看不到业务菜单,请检查:
- 用户是否正常登录token 是否有效)
- 用户状态是否为 `active`(未被停用)
### Q2: 用户创建训练任务时报错"无权使用所选 GPU"
@@ -355,7 +368,7 @@ curl -X PUT /modelTF/resources/dataset/ds_alpaca_id/acl \
正常情况下 `delete_user` 会级联清理关联数据。如果仍有残留:
- **训练任务**:设计上保留不删(避免算力节点物理数据不一致),这是预期行为
- **登录时长排行**:可能来自旧的 session 记录,不影响功能,新登录后会更新
- **登录时长排行**:可能来自旧的 session 记录(已修复:改用 INNER JOIN 过滤已删除用户)
### Q4: 审批实例一直 pending 没人处理?
@@ -394,6 +407,18 @@ curl -H "Authorization: Bearer platform-token-admin" \
如果是完全忘记且不是 admin只能由 admin 重置。
### Q7: 为什么移除了「页面权限」功能v1.1 变更说明)
旧版本要求管理员为每个用户单独分配页面权限码,这导致:
- 新用户创建后需要额外操作才能使用系统
- 权限配置复杂,容易出错
- 与实际使用场景不匹配(大多数用户需要访问大部分功能)
**新模型v1.1**简化为:
- 非 admin 用户**默认拥有所有业务功能的访问权限**
- 仅管理员专属功能(用户管理、平台治理、算力节点)受角色限制
- 资源级别控制通过 ACL 实现,更灵活
---
## 附录API 快速参考

View File

@@ -1,121 +0,0 @@
# 模型评测功能总结
本项目(基于 LLaMA-Factory 的微调训练平台)包含 **4 套相对独立** 的模型评测能力,分别面向不同的使用场景:
| 能力 | 入口/目录 | 评测类型 | 打分方式 |
| --- | --- | --- | --- |
| 1. 学术 Benchmark 评测 | `llamafactory/eval/` | 选择题式基准(类 MMLU/C-Eval | 选项匹配 + few-shot |
| 2. 评估工作台 | `backend/app/api/v1/eval/` | 生成式问答(指令跟随) | BLEU / ROUGE / ExactMatch + 可选 LLM 评审 |
| 3. 平台评估系统 | `backend/app/api/v1/evaluation/` | 基于评估数据集的问答 | 判卷模型judge model打分05 分) |
| 4. 训练时验证评估 | `backend/app/services/task_runner.py` | 训练验证集 | loss 指标 |
下面分别说明。
---
## 1. 学术 Benchmark 评测LLaMA-Factory 原生)
面向标准学术选择题基准(如 MMLU、C-Eval 等),复用 LLaMA-Factory 原生的评测框架。
**核心文件**
- `llamafactory/eval/evaluator.py``Evaluator` 类 + `run_eval()` 入口
- `llamafactory/eval/template.py`:评测 prompt 模板(中/英,含 few-shot 示例构建)
- `llamafactory/hparams/evaluation_args.py``EvaluationArguments` 配置类
**工作流程**
1.`task`benchmark 名称加载数据集按科目subject拆分。
2. 每个样本构造 few-shot 提示词(`n_shot` 控制示例数,由 `lang` 决定中/英模板),将题干与候选选项拼入 prompt。
3. 调用模型推理得到预测,与标准答案比对,统计每个科目及整体的 `accuracy`
4. 结果写入 `save_dir`,打印各科目与平均准确率。
**关键参数(`EvaluationArguments`**
- `task`:基准数据集名
- `batch_size` / `n_shot` / `lang` / `save_dir` / `seed`
- `model_name_or_path``template``trust_remote_code` 等模型相关参数
> 该能力属于框架底层,本平台前端未直接提供操作入口,主要通过配置文件/脚本调用。
---
## 2. 评估工作台(生成式评测 + 指标计算)
后端路由位于 `backend/app/api/v1/eval/__init__.py`,前端称为「评估工作台」。**适用于评测模型的指令跟随与生成质量**,并支持 LLM 作为裁判LLM-as-a-Judge
**API 端点**
- `GET /evaluation/tasks`:列出评测任务(`frontend/src/api/evaluation.ts:listTasks`
- `POST /evaluation/run`:提交一次评测(`runEval`
- `GET /evaluation/report/{task_id}`:拉取评测报告(`getReport`
- `DELETE /evaluation/tasks/{task_id}`:删除任务(`deleteTask`
**评测流程(`run_eval`**
1. 通过 **LLaMA-Factory 数据管道**`get_dataset`) 加载数据集,支持 `subset` 与抽样(`eval_sample`)。
2.**原生 transformers** 加载模型在本地做生成推理(单进程顺序生成,便于展示样本)。
3. 计算客观指标(`compute_score`
- `BLEU`sacrebleu
- `ROUGE-1 / ROUGE-2 / ROUGE-L`rouge-score
- `Exact Match`
4. **可选 LLM 评审**judge当配置了 `judge_model` / `judge_api_base` / `judge_api_key` 时,调用 OpenAI 兼容接口对每条样本打分10 分制),并输出 4 个维度与理由:
- 核心事实正确性 `factual`
- 信息完整性 `completeness`
- 无幻觉 `no_hallucination`
- 格式合规性 `format`
- 综合分 `score` + `reason`
5. 任务状态持久化在后端 `eval_tasks.json`(支持 running/completed/failed/stopped前端轮询进度。
**前端页面**
- `frontend/src/views/evaluation/EvaluateTask.vue`:任务列表、创建评测对话框(选模型、数据集、指标、可选 judge 配置)
- `frontend/src/views/evaluation/EvaluateReport.vue`报告页展示综合得分、BLEU、ROUGE-L、各维度指标及「参考答案 vs 模型预测 vs LLM 评审」对比样例
---
## 3. 平台评估系统(基于评估数据集 + 判卷模型)
后端路由位于 `backend/app/api/v1/evaluation/__init__.py`,是平台业务层自研的评测体系。通过「评估数据集」组织题目,可一次性对 **多个被测模型 + 指定判卷模型** 进行批量评分。
**核心概念(数据模型 `backend/app/models/models.py`**
- `EvalDataset``models.py:131`):评估数据集,从项目问答对(`Question`/`Chunk`)中按 `question_type`mixed/fact/reasoning选题构建状态 `pending/running/completed/failed`
- `EvalResult``models.py:147`):单条评测结果,含 `judge_score`05 分)、`is_correct`true/false/partial`feedback``expected_answer` 等。
- `Task``models.py:184`):后台任务,`task_type="model-evaluation"`,记录进度与 `model_info`(存放平均分等汇总)。
**评测流程(`process_evaluation_task``backend/app/services/task_processor.py:336` 起)**
1. 加载评估数据集关联的题目,可选带入 `chunk` 上下文RAG 场景)。
2. 对每道题,先用 `build_eval_prompt` 组合「上下文 + 题目 + 参考答案」,调用 **判卷模型**`call_model`temperature=0.3)生成评分。
3. `parse_eval_result` 解析出 `score`(05)、`is_correct``feedback`,写入 `EvalResult`
4. 逐题提交进度(`completed_count` / `progress`),支持中途 `stopped`
5. 汇总:`avg_score = 总分/有效数 × 20`(换算百分制),`avg_score_5 = 总分/有效数`5 分制),存入 `task.model_info`。判定规则:得分 **≥3 视为正确**。
**特点**
- 判卷与被测模型解耦被测模型给出答案判卷模型judge独立评分降低自评偏差。
- 支持失败隔离:单题异常写入 `evaluation_status: failed` 记录而不中断整体任务。
---
## 4. 训练时验证评估
在微调训练任务执行期间,由 `backend/app/services/task_runner.py``do_eval` 触发:
- 在训练过程中对验证集validation set计算 `eval_loss`,用于监控过拟合。
- 结果回填到 `Task``loss_info` / `detail`,前端绘制 loss 曲线。
- 属于训练配套的轻量评估,不参与上述 13 的业务评测。
---
## 附属:前端评测相关页面
| 文件 | 作用 |
| --- | --- |
| `frontend/src/views/evaluation/EvaluateTask.vue` | 评估工作台:任务列表 + 创建评测 |
| `frontend/src/views/evaluation/EvaluateReport.vue` | 评估报告:指标卡 + 维度标签 + 对比样例 |
| `frontend/src/api/evaluation.ts` | 评估工作台接口封装 |
| 平台评估系统入口 | 评估数据集管理 + 评估任务model-evaluation创建与结果查看 |
---
## 小结
- **想要学术榜单式准确率** → 用能力 1LLaMA-Factory `eval/`)。
- **想要开放式生成质量BLEU/ROUGE + LLM 评审)** → 用能力 2评估工作台 `/evaluation/run`)。
- **想要基于自有问答数据、用判卷模型批量打分** → 用能力 3平台评估系统 `model-evaluation` 任务)。
- **训练过程监控** → 能力 4`do_eval` 验证集 loss
三种业务评测1/2/3相互独立可并存于同一平台数据模型`EvalDataset`/`EvalResult`/`Task`)主要服务于能力 3而能力 2 使用独立的 `eval_tasks.json` 文件持久化。