- 更新 backend 平台 API、platform_store、compute_gateway sync - 更新 compute agent/engine/adapter 及 API - 更新 Docker 部署配置(app/compute) - 新增 frontend/src/utils/ 工具模块 - 新增 scripts/ops_diagnostics.py 运维诊断脚本 - 新增 docs/2026-07-23-development-summary.md 开发总结 - 重构 frontend/dist 构建产物(新 hash) - 更新前端多个视图组件及 API 模块 Co-Authored-By: Claude <noreply@anthropic.com>
36 KiB
模型训练平台整体架构与开发计划
本文衔接
docs/backend-api-design.md、docs/postgres-schema.sql、docs/platform-architecture-requirements.md,用于多人并行开发。文档给出关键未决问题建议、整体架构、模块边界、开发拆分、交付计划和联调顺序。
1. 关键问题建议
1.1 文件存储位置
建议:训练相关文件主存储放在算力服务器本地磁盘,应用服务器只保留上传临时文件。
原因:
- 算力服务器需要高频读取数据集、模型、checkpoint,本地磁盘性能和路径稳定性更好。
- 应用平台与算力平台分离后,应用服务器不应直接持有长期训练资产。
- 应用服务器临时文件建议保留 24 小时,上传成功转发到算力文件网关后立即标记可清理。
落地要求:
- 算力平台提供文件网关 API。
- 数据库保存
storage_node_id、relative_path、checksum_sha256、byte_size。 - 前端下载通过应用平台申请短时链接,不暴露真实磁盘路径。
1.2 GPU 共享/MIG
建议:第一版不支持 MIG 和 GPU 分片,一张 GPU 同一时间只分配给一个训练/推理服务。
原因:
- 当前目标是单机多 GPU,先保证调度稳定、日志可追踪、资源不冲突。
- 训练任务显存波动较大,共享会增加失败和排障成本。
预留:
- GPU 表中保留
partition_type、parent_gpu_uuid、memory_total_mb字段。 - 后续如需要 MIG,可扩展为 GPU slice 资源。
1.3 任务抢占
建议:第一版不做自动抢占,仅支持管理员手动停止或审批后停止。
原因:
- 自动抢占需要 checkpoint 恢复、优先级策略、资源补偿,复杂度较高。
- 训练任务被抢占可能导致用户产物损坏或成本浪费。
落地:
- 支持任务优先级和排队。
- 高优先级任务可排在队列前。
- 停止他人任务需要审批或平台管理员权限。
1.4 离线导入已有模型和数据集
建议:必须支持离线导入。
原因:
- 训练平台通常会接入已有
/data/models、/data/datasets。 - 只允许网页上传会影响大模型和大数据集迁移效率。
功能:
- 管理员填写算力节点上的路径。
- 算力 Agent 扫描目录、校验大小、格式、checksum。
- 应用平台登记为模型或数据集。
- 导入资源默认归属指定租户和项目。
1.5 测试服务与生产服务
建议:模型发布区分测试服务和生产服务。
规则:
- 测试服务:项目内成员可创建,默认限流,允许短期运行。
- 生产服务:必须审批,记录发布版本,支持下线审批。
页面:
- 模型服务列表。
- 测试服务启动。
- 生产发布申请。
- 服务调用统计。
1.6 数据脱敏与质量评分
建议:作为数据处理模块的一等能力纳入第一期,但可以先实现规则版。
第一期:
- 手机号、身份证、邮箱、银行卡、地址等规则脱敏。
- 空值、重复、过短、JSON 格式错误、字段缺失检测。
- 数据质量分:完整性、重复率、格式正确率、长度分布。
后续:
- LLM 敏感内容识别。
- 行业词表。
- 人工复核闭环。
1.7 人工评测/复核沉淀
建议:第二期实现,但第一期数据库和页面入口预留。
原因:
- 人工评测会引入标注任务、分配、复核、一致性统计。
- 第一版可以先完成自动评测和样本级结果展示。
预留:
eval_sample_results支持人工修订字段。- 新增人工复核状态:
unreviewed、reviewed、disputed。
1.8 断点续训
建议:第一版支持“从 checkpoint 手动恢复”,暂不做自动失败续训。
功能:
- 训练详情展示 checkpoint 列表。
- 新建训练任务可选择 checkpoint 作为恢复点。
- 失败任务允许一键重试,重试时选择最近 checkpoint。
后续:
- 自动失败检测。
- 按错误类型决定是否自动恢复。
1.9 Checkpoint 清理
建议:必须支持自动清理策略。
默认策略:
- 保留最近 3 个 checkpoint。
- 保留指标最优 2 个 checkpoint。
- 已发布模型对应 checkpoint 不自动删除。
- 失败任务 checkpoint 保留 14 天。
页面:
- 任务详情 checkpoint 管理。
- 存储管理页查看可清理空间。
1.10 对外标准 API
建议:第一版提供内部 API,第二期开放外部 API。
第一版:
- 使用 JWT + 服务 token。
- 面向前端和算力平台。
第二期:
- API Key 管理。
- OpenAPI 文档。
- 请求限流。
- Webhook 回调作为外部系统集成的可选能力,不作为算力状态同步默认方案。
- 外部系统发起训练、评测、推理。
1.11 企业统一身份认证
建议:第一版使用本地账号,预留 OIDC/LDAP;第二期接入企业统一认证。
落地:
- 用户表增加
auth_provider、external_id。 - 登录模块抽象 provider。
- 支持本地用户和外部用户共存。
1.12 成本核算
建议:第一版做资源用量统计,第二期做成本核算。
第一版统计:
- GPU 小时。
- 磁盘占用。
- 任务运行时长。
- 推理调用次数、token 量。
第二期核算:
- 租户/项目账单。
- GPU 小时单价。
- 存储单价。
- 模型服务调用成本。
2. 总体目标范围
2.1 第一版目标
交付一个可在企业内使用的单机多 GPU 模型训练平台:
- 支持多租户、多项目。
- 支持项目级资源隔离和模型/数据集级授权。
- 支持本地磁盘文件管理。
- 支持 LLaMA-Factory 微调训练。
- 支持数据集上传、预览、版本、处理和发布。
- 支持训练任务、日志、指标、产物登记。
- 支持模型评测、推理服务和模型对比。
- 支持审批、审计、基础保留策略。
- 支持应用平台和算力平台分离部署。
2.2 第一版不做或仅预留
- 自动任务抢占。
- MIG/GPU 分片。
- 自动断点续训。
- 完整人工评测生产线。
- 外部开放 API 市场化管理。
- 精细成本计费。
3. 系统整体架构
3.1 架构分层
flowchart TB
FE["前端 Vue 应用"]
API["应用平台 FastAPI"]
DB["PostgreSQL 元数据"]
REDIS["Redis 队列/缓存/锁"]
WORKER["应用平台 Worker"]
COMPUTE["算力平台 Compute API"]
AGENT["Compute Agent"]
FILE["本地文件网关"]
ENGINE["LLaMA-Factory Adapter"]
GPU["单机多 GPU"]
DISK["算力节点本地磁盘"]
FE --> API
API --> DB
API --> REDIS
WORKER --> DB
WORKER --> REDIS
API --> COMPUTE
COMPUTE --> AGENT
AGENT --> FILE
AGENT --> ENGINE
ENGINE --> GPU
FILE --> DISK
ENGINE --> DISK
3.2 仓库建议结构
YG_FT/
frontend/
backend/
app/
api/
core/
modules/
auth/
tenant/
project/
model/
dataset/
data_process/
fine_tune/
eval/
inference/
approval/
audit/
compute_gateway/
db/
schemas/
services/
workers/
migrations/
tests/
compute/
api/
agent/
engines/
llama_factory/
file_gateway/
tests/
docs/
deploy/
app/
compute/
nginx/
systemd/
4. 开发内容总览
4.1 前端开发
现有前端已有基础页面:
- 服务看板。
- 模型训练列表/创建。
- 评测列表/创建/详情。
- 推理列表/创建/对话。
- 模型对比。
- 模型管理。
- 数据处理列表/创建/详情。
- 数据集管理/上传/预览。
- 工具和数据转换原型。
- 硬件和日志。
需要补全:
| 模块 | 页面 | 优先级 |
|---|---|---|
| 用户中心 | 用户列表、创建用户、权限设置、无权限页 | P0 |
| 租户项目 | 租户管理、项目列表、项目详情、成员管理 | P0 |
| 项目上下文 | 顶部项目切换器、项目权限提示 | P0 |
| 审批中心 | 我的申请、待我审批、审批详情、模板配置 | P0 |
| 算力资源 | GPU 状态、任务队列、节点 Agent 状态、资源配额 | P0 |
| 存储管理 | 磁盘占用、大文件、checkpoint、清理策略 | P1 |
| 训练增强 | checkpoint、恢复训练、产物管理、训练引擎选择 | P1 |
| 模型服务 | 测试服务、生产发布、服务实例、调用统计 | P1 |
| 数据治理 | 脱敏规则、质量评分、数据处理结果发布 | P1 |
| 审计中心 | 操作审计、登录审计、下载审计 | P1 |
| 引擎管理 | LLaMA-Factory 健康、参数 schema、接入标准 | P2 |
4.2 后端接口开发
第一批必须完成:
- Auth / RBAC / 项目 ACL。
- Tenant / Project。
- Model / Dataset。
- Data Process。
- Fine Tune。
- Compute Gateway。
- Approval / Audit。
- System Monitor / Logs。
第二批完成:
- Eval。
- Inference / Compare。
- File cleanup / retention。
- Checkpoint management。
- Model service governance。
第三批完成:
- External API。
- OIDC/LDAP。
- Cost accounting。
- Human review。
4.3 DB 开发
在 postgres-schema.sql 基础上新增企业治理和隔离模型:
- 租户、项目、成员。
- 资源 ACL。
- 审批。
- 配额和用量。
- 算力节点、GPU、分配记录。
- 训练引擎。
- 保留策略。
同时调整已有资源表:
- 增加
tenant_id、project_id、owner_id。 - 增加
approval_status。 - 增加
storage_node_id。 - 增加资源可见性字段。
4.4 系统部署开发
需要拆成应用平台部署包和算力平台部署包:
应用平台:
- Nginx。
- Frontend 静态资源。
- FastAPI。
- PostgreSQL。
- Redis。
- App Worker。
算力平台:
- Compute API。
- Compute Agent。
- File Gateway。
- LLaMA-Factory 环境。
- GPU 监控采集。
- 本地磁盘目录初始化。
5. 前端开发计划
5.1 P0 页面
用户中心
路由:
/user-settings/user-settings/create/user-settings/:id/permission/permission-denied
功能:
- 用户列表、搜索、角色筛选、状态筛选。
- 创建用户、禁用用户、重置密码。
- 页面权限分配。
- 租户和项目关联展示。
- 无权限页友好提示。
联调接口:
GET /modelTF/usersPOST /modelTF/usersPUT /modelTF/users/{id}DELETE /modelTF/users/{id}PUT /modelTF/users/{id}/password
项目空间
路由:
/projects/projects/create/projects/:id/projects/:id/members/projects/:id/permissions
功能:
- 项目列表。
- 创建项目。
- 项目概览。
- 成员管理。
- 项目配额查看。
- 项目切换器。
联调接口:
GET /modelTF/projectsPOST /modelTF/projectsGET /modelTF/projects/{id}PUT /modelTF/projects/{id}GET /modelTF/projects/{id}/membersPOST /modelTF/projects/{id}/members
审批中心
路由:
/approvals/approvals/pending/approvals/mine/approvals/:id/approval-settings
功能:
- 待审批。
- 我的申请。
- 审批详情。
- 通过、驳回、撤回。
- 审批模板配置。
联调接口:
GET /modelTF/approvalsPOST /modelTF/approvals/{id}/approvePOST /modelTF/approvals/{id}/rejectPOST /modelTF/approvals/{id}/cancel
算力资源中心
路由:
/compute/compute/gpus/compute/queue/compute/nodes
功能:
- GPU 卡片状态。
- GPU 进程和任务占用。
- 任务队列。
- Agent 健康状态。
- 租户/项目配额。
- 算力节点新增、编辑、连接测试、启用、禁用、维护模式。
- 节点权重、标签、训练引擎版本和本地资源副本。
- 自动调度和手动指定节点入口。
联调接口:
GET /modelTF/compute/gpusGET /modelTF/compute/queueGET /modelTF/compute/nodesGET /modelTF/quotas/usage
5.2 现有页面改造
所有资源列表页需要增加项目上下文:
- 数据集列表按项目过滤。
- 模型列表按项目过滤。
- 训练任务按项目过滤。
- 评测任务按项目过滤。
- 推理任务按项目过滤。
通用改造:
- 请求自动带
project_id。 - 顶部项目切换后刷新数据。
- 无项目权限时进入无权限页。
- 删除、导出、发布等危险动作走审批。
6. 后端开发计划
6.1 P0 模块
Auth 模块
开发内容:
- 登录、登出、当前用户。
- JWT 生成和校验。
- 密码 hash。
- 页面权限。
- 项目权限。
- 服务间 token。
交付接口:
POST /modelTF/loginPOST /modelTF/logoutGET /modelTF/me
Tenant / Project 模块
开发内容:
- 租户 CRUD。
- 项目 CRUD。
- 项目成员。
- 项目角色。
- 项目配额读取。
交付接口:
/modelTF/tenants/modelTF/projects/modelTF/projects/{id}/members
Resource ACL 模块
开发内容:
- 资源授权。
- 权限校验依赖。
- 数据查询作用域过滤。
交付接口:
GET /modelTF/resources/{resource_type}/{resource_id}/aclPUT /modelTF/resources/{resource_type}/{resource_id}/acl
Compute Gateway 模块
开发内容:
- 算力平台客户端。
- 算力节点管理:地址、File Gateway、权重、标签、启用状态、维护状态。
- 自动/手动调度策略。
- 调度前检查模型/数据集在目标节点的资源副本。
- 缺失资源时创建同步任务,通过目标节点 File Gateway 写入本地磁盘。
- 创建 compute job。
- 查询状态和日志。
- 应用侧定时轮询 Compute API,同步任务状态、日志摘要和产物索引。
- 任务状态映射。
交付接口:
GET /modelTF/compute/gpusGET /modelTF/compute/queueGET/POST/PUT /modelTF/compute/nodesPOST /modelTF/compute/nodes/{id}/test-connectionPOST /modelTF/compute/nodes/{id}/enablePOST /modelTF/compute/nodes/{id}/disablePOST /modelTF/compute/nodes/{id}/drainGET /modelTF/compute/nodes/{id}/replicasPOST /modelTF/internal/compute-sync/jobs/pollPOST /modelTF/internal/compute-sync/resources
Fine Tune 模块
开发内容:
- 训练任务创建。
- 参数校验。
- 审批校验。
- GPU 配额校验。
- 下发算力任务。
- 进度和日志。
- 产物登记。
交付接口:
- 沿用
docs/backend-api-design.md的/modelTF/fine-tune系列。
Approval 模块
开发内容:
- 审批模板。
- 审批实例。
- 审批动作。
- 审批通过后触发原业务。
交付接口:
/modelTF/approvals/modelTF/approval-templates
Audit 模块
开发内容:
- 请求审计中间件。
- 操作前后数据记录。
- 登录审计。
- 下载审计。
- 审计查询。
交付接口:
GET /modelTF/audit-logsGET /modelTF/login-logs
6.2 P1 模块
- 数据处理后端化。
- 数据脱敏和质量评分。
- Checkpoint 管理。
- 模型服务治理。
- 存储清理策略。
- 评测详情增强。
6.3 P2 模块
- 外部 API Key。
- OIDC/LDAP。
- 成本核算。
- 人工评测。
- 多训练引擎接入。
7. 算力平台开发计划
7.1 Compute API
接口:
POST /modelTF/compute/jobsGET /modelTF/compute/jobs/{id}POST /modelTF/compute/jobs/{id}/stopGET /modelTF/compute/jobs/{id}/logsGET /modelTF/compute/resources/gpusPOST /modelTF/compute/files/uploadGET /modelTF/compute/files/{id}/download
职责:
- 接收应用平台任务。
- 校验服务 token。
- 调用 Agent。
- 聚合状态。
- 提供任务状态查询接口,供应用平台定时轮询。
- 每个单机多 GPU 算力节点都部署一套 Compute API,不依赖其他算力节点。
- 暴露节点健康、GPU、训练引擎、资源副本和文件网关状态。
7.2 Compute Agent
职责:
- 发现 GPU。
- 采集 GPU 指标。
- 锁定/释放 GPU。
- 管理任务进程。
- 管理端口。
- 管理工作区。
- 上传日志和任务事件。
关键要求:
- Agent 重启后能恢复正在运行的任务状态。
- 任务异常退出要释放 GPU 锁。
- 停止任务要先 graceful stop,再强制 kill。
7.3 LLaMA-Factory Adapter
职责:
- 生成训练 YAML 或 CLI。
- 根据平台数据集 ID 生成 LLaMA-Factory dataset key 和
{dataset_dir}/dataset_info.json。 - 单文件数据集使用一个 dataset key,多文件数据集拆分为多个 key 并通过逗号组合传入
--dataset。 - 正式启动前由应用侧同步当前数据集文件到目标算力节点,确保训练使用最新激活版本。
- 设置
CUDA_VISIBLE_DEVICES。 - 启动训练。
- 解析日志。
- 收集产物。
- 合并 LoRA。
- 导出量化模型。
7.4 File Gateway
职责:
- 分片上传。
- 文件校验。
- 文件预览。
- 文件下载。
- 目录扫描导入。
- 短时下载令牌。
8. 数据库开发计划
8.1 迁移顺序
- 基础扩展和枚举。
- 用户、角色、权限。
- 租户、项目、成员。
- 资源 ACL。
- 文件对象和存储节点。
- 模型、数据集。
- 数据处理、训练、评测、推理。
- 审批、审计。
- 算力节点、GPU、队列、配额。
- 保留策略和清理记录。
8.2 新增表清单
| 表 | 说明 |
|---|---|
tenants |
租户 |
tenant_users |
租户用户 |
projects |
项目 |
project_members |
项目成员 |
resource_acl |
资源级授权 |
approval_templates |
审批模板 |
approval_instances |
审批单 |
approval_steps |
审批步骤 |
quotas |
配额 |
quota_usage |
配额使用 |
storage_nodes |
存储节点 |
compute_nodes |
算力节点 |
compute_node_engines |
算力节点训练引擎能力 |
gpu_devices |
GPU 设备 |
gpu_allocations |
GPU 分配记录 |
compute_jobs |
算力任务 |
resource_replicas |
数据集/模型/产物在算力节点的本地副本 |
resource_sync_jobs |
应用平台编排的资源同步任务 |
training_engines |
训练引擎 |
retention_policies |
保留策略 |
cleanup_jobs |
清理任务 |
8.3 索引原则
- 所有租户资源表建立
(tenant_id, project_id, created_at desc)索引。 - 列表页常用状态字段建立
(tenant_id, project_id, status, created_at desc)索引。 - 审计日志按时间分区。
- 指标数据按时间分区。
- 数据集样本大表按
dataset_id和version_id建索引。 - JSONB 配置只对高频查询字段做表达式索引。
9. 部署计划
9.1 应用平台部署
组件:
frontend-nginxbackend-apibackend-workerpostgresredis
配置:
DATABASE_URLREDIS_URLJWT_SECRETSERVICE_TOKENCOMPUTE_API_BASE_URLFILE_UPLOAD_TEMP_DIRAUDIT_RETENTION_DAYS
9.2 算力平台部署
组件:
compute-apicompute-agentfile-gatewayllama-factory-env
多算力节点阶段,每台单机多 GPU 服务器都部署以上组件和宿主机挂载的 LLaMA-Factory。算力节点之间默认不互相访问,由应用平台统一调度和同步资源。
配置:
COMPUTE_NODE_IDSERVICE_TOKENENABLE_APP_CALLBACK=falseDATA_ROOT=/data/yg-ftLLAMA_FACTORY_PATHPYTHON_ENV_PATHGPU_VISIBLE_DEVICESPORT_RANGE_STARTPORT_RANGE_END
9.3 网络要求
- 前端只访问应用平台。
- 应用平台可访问算力平台内部 API。
- 第一阶段只开通应用平台主动访问算力平台内部 API,状态同步采用应用侧轮询。
- 算力平台不直接暴露给公网。
- 文件下载通过应用平台签发令牌。
9.4 运维脚本
需要提供:
- 应用平台启动/停止。
- 算力平台启动/停止。
- 数据库初始化。
- 默认管理员初始化。
- 本地磁盘目录初始化。
- LLaMA-Factory 健康检查。
- GPU 诊断脚本。
- 日志清理脚本。
10. 联调顺序
阶段 1:基础框架
目标:前后端登录、项目上下文、权限校验跑通。
交付:
- 登录。
- 用户列表。
- 项目列表。
- 页面权限。
- 当前项目切换。
参与:
- 前端 1 人。
- 后端 1 人。
- DB 1 人。
阶段 2:资源管理
目标:模型、数据集、文件上传、离线导入跑通。
交付:
- 模型管理。
- 数据集管理。
- 文件版本。
- 算力文件网关。
参与:
- 前端 1 人。
- 后端 2 人。
- 算力 1 人。
阶段 3:训练链路
目标:创建训练任务并在单机多 GPU 上执行 LLaMA-Factory。
交付:
- GPU 状态。
- 训练创建。
- 训练启动。
- 训练日志。
- 指标曲线。
- 产物登记。
参与:
- 前端 1 人。
- 后端 2 人。
- 算力 2 人。
阶段 4:数据处理与评测
目标:训练前数据处理、训练后评测闭环。
交付:
- 数据处理任务。
- 脱敏和质量评分。
- 发布数据集。
- 自动评测。
- 评测详情。
参与:
- 前端 1 人。
- 后端 2 人。
阶段 5:推理服务与发布治理
目标:训练产物可发布为测试/生产服务。
交付:
- 推理服务启动。
- 对话和对比。
- 发布审批。
- 服务监控。
参与:
- 前端 1 人。
- 后端 1 人。
- 算力 1 人。
阶段 6:企业治理
目标:审批、审计、保留、清理、配额完善。
交付:
- 审批中心。
- 审计中心。
- 配额管理。
- 存储清理。
- 保留策略。
参与:
- 前端 1 人。
- 后端 2 人。
- DB 1 人。
11. 人员分工建议
前端组
- FE-A:基础布局、用户中心、项目空间。
- FE-B:模型、数据集、数据处理。
- FE-C:训练、评测、推理、算力监控。
后端应用组
- BE-A:认证、租户、项目、权限、审计。
- BE-B:模型、数据集、数据处理、文件元数据。
- BE-C:训练、评测、推理、审批、任务编排。
算力组
- CE-A:Compute API、Agent、GPU 调度、多节点健康检查。
- CE-B:LLaMA-Factory Adapter、日志解析、产物管理。
- CE-C:File Gateway、本地磁盘、离线导入、资源副本同步。
数据库/部署组
- DB-A:迁移脚本、索引、分区、种子数据。
- OPS-A:Docker/systemd、Nginx、环境变量、健康检查。
12. 里程碑计划
| 里程碑 | 时间建议 | 目标 |
|---|---|---|
| M1 基础治理 | 第 1-2 周 | 登录、用户、租户、项目、权限 |
| M2 资源管理 | 第 3-4 周 | 模型、数据集、文件网关、离线导入 |
| M3 训练主链路 | 第 5-7 周 | GPU 调度、LLaMA-Factory 训练、日志指标、产物、资源副本检查 |
| M3.5 多节点预留 | 第 7-8 周 | compute_nodes 管理、节点权重/标签、自动/手动调度、资源同步任务 |
| M4 数据处理和评测 | 第 8-9 周 | 数据处理、质量评分、自动评测 |
| M5 推理发布 | 第 10-11 周 | 推理服务、模型对比、生产发布审批 |
| M6 企业治理收口 | 第 12 周 | 审批、审计、配额、清理、部署文档 |
13. 验收标准
13.1 功能验收
- 不同租户用户不能看到彼此资源。
- 项目成员只能访问授权项目资源。
- 模型和数据集支持资源级授权。
- 上传数据集后可预览、编辑版本、用于训练。
- 训练任务可自动调度节点/GPU,也可由管理员手动指定节点/GPU 并成功运行。
- 调度前可识别目标节点是否已有数据集和模型副本,缺失时能创建同步任务。
- 训练日志和指标实时可见。
- 训练产物可登记、合并、发布测试服务。
- 评测任务可生成样本级结果。
- 删除数据集、模型发布等动作可触发审批。
- 审计日志能追踪关键操作。
13.2 性能验收
- 常规列表接口 P95 小于 500ms。
- GPU 状态刷新周期 5-10 秒。
- 训练日志拉取支持 tail,不一次加载全文件。
- 大文件上传支持分片。
- 数据集样本超过百万行时列表和预览仍可用。
13.3 安全验收
- API Key 和外部数据源密码不明文存储。
- 文件下载链接短时有效。
- 服务间接口不能被前端直接调用。
- 用户越权访问返回 403。
- 审计日志不可由普通用户删除。
14. 开发风险和应对
| 风险 | 影响 | 应对 |
|---|---|---|
| 应用/算力分离导致文件路径复杂 | 上传、下载、训练失败 | 统一文件网关,不暴露真实路径 |
| GPU 锁释放异常 | 资源被占用 | Agent 心跳和任务恢复扫描 |
| LLaMA-Factory 参数变化 | 训练失败 | 训练引擎 schema 和版本管理 |
| 权限模型过复杂 | 开发慢、容易越权 | RBAC + 项目角色 + ACL 三层固定规则 |
| 审批流影响体验 | 用户觉得操作慢 | 只对高风险动作审批,低风险动作直通 |
| 本地磁盘爆满 | 训练失败 | 配额、清理策略、checkpoint 保留策略 |
15. 文档交付关系
docs/backend-api-design.md:接口定义基础版本。docs/postgres-schema.sql:初始数据库模型。docs/platform-architecture-requirements.md:架构与功能需求补充。docs/system-development-plan.md:多人开发拆分和实施计划。docs/team-development-plan.md:3-4 人并行开发人员分工、模块边界、接口范围和里程碑。
后续建议再补两份执行文档:
docs/compute-platform-api.md:算力平台内部 API 细节。docs/db-migration-v2.sql:多租户、项目、审批、算力调度的数据库增量脚本。
16. 页面模块开发工作包
本节用于多人并行开发时认领任务。每个工作包都标明对应页面、前端内容、后端接口、DB 表和部署/算力依赖。当前菜单、二级路由、规划菜单和接口/数据库映射总览见 docs/menu-functional-requirements.md;按 3-4 人落地的具体人员边界和开发节奏见 docs/team-development-plan.md。
16.1 基础入口与用户权限
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
|---|---|---|---|---|---|
| 登录和会话 | /login |
登录表单、错误提示、登录后跳转、会话过期处理 | POST /modelTF/login、GET /modelTF/me、JWT 中间件 |
users、login_sessions、v_user_effective_permissions |
无 |
| 主布局和权限菜单 | / |
菜单按权限过滤、用户信息、项目切换器 | 当前用户权限、当前项目上下文 | permissions、role_permissions、project_members |
登录 |
| 用户中心 | /user-settings、/user-settings/create、/user-settings/:id/permission |
用户列表、创建、禁用、重置密码、页面权限 | /modelTF/users 系列 |
users、user_permissions、tenant_users |
租户/项目 |
| 无权限页 | /permission-denied |
无权限说明、返回入口 | 权限异常返回统一错误码 | 无新增 | 主布局 |
16.2 租户和项目空间
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
|---|---|---|---|---|---|
| 租户管理 | /tenants、/tenants/:id |
租户列表、创建/禁用、配额、留存策略 | /modelTF/tenants 系列 |
tenants、tenant_users、quotas、retention_policies |
用户中心 |
| 项目列表和详情 | /projects、/projects/:id |
项目列表、创建、归档、资源概览 | /modelTF/projects 系列 |
projects、quota_usage |
租户 |
| 项目成员 | /projects/:id/members |
成员列表、添加成员、角色选择 | /modelTF/projects/{id}/members 系列 |
project_members |
项目 |
| 资源授权 | /projects/:id/permissions、资源详情弹窗 |
ACL 表格、用户/角色授权 | /modelTF/resources/{type}/{id}/acl |
resource_acl |
项目、资源表 |
16.3 数据集和数据处理
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
|---|---|---|---|---|---|
| 数据集列表 | /dataset |
列表、搜索、项目过滤、下载、删除审批入口 | GET/DELETE /modelTF/dataset-manage |
datasets、resource_acl、approval_instances |
项目上下文 |
| 数据集创建/上传 | /dataset/create、/dataset/:id/edit |
表单、分片上传、离线导入弹窗 | POST /modelTF/dataset-manage、POST /modelTF/files/upload-session、POST /modelTF/import/local-dataset |
datasets、dataset_files、storage_objects、file_upload_sessions、local_import_jobs |
文件网关 |
| 数据集预览/版本 | /dataset/:id/preview |
文件列表、内容预览、版本栏、在线编辑 | /modelTF/dataset-manage/preview、/versions 系列 |
dataset_file_versions、dataset_records |
数据集上传 |
| 数据处理列表 | /data-process |
任务列表、状态、输出数据集跳转 | /modelTF/data-process 系列 |
data_process_tasks |
数据集 |
| 数据处理创建向导 | /data-process/create |
任务配置、模型选择、源文件、预览切片、生成、结果编辑、发布 | /modelTF/data-process/{id}/source-files、preview/build、generate、publish |
data_process_source_files、data_process_preview_items、data_process_results |
数据集、模型、文件网关 |
| 数据处理详情 | /data-process/:id |
运行统计、失败原因、结果表格 | GET /modelTF/data-process/{id}、results、events |
data_process_tasks、data_process_results |
数据处理任务 |
| 数据转换 | /data-convert |
文件上传、转换状态、下载 | /modelTF/data-convert/jobs 系列 |
data_convert_jobs、storage_objects |
文件网关 |
16.4 模型管理和训练
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
|---|---|---|---|---|---|
| 模型列表 | /model-manage |
列表、用途标签、授权、导出、删除审批 | /modelTF/model-manage 系列 |
models、trained_models、resource_acl |
项目上下文 |
| 模型创建/离线导入 | /model-manage/create、/model-manage/:id/edit |
本地/API 模型表单、离线导入 | POST/PUT /modelTF/model-manage、POST /modelTF/import/local-model |
models、storage_objects、local_import_jobs |
文件网关 |
| 权重合并 | /model-manage/merge |
选择训练产物、合并状态 | POST /modelTF/model-manage/merge、GET /modelTF/compute/jobs/{id} |
trained_models、compute_jobs |
算力平台 |
| 微调列表 | /fine-tune |
任务列表、停止、删除、日志入口 | /modelTF/fine-tune 系列 |
fine_tune_tasks |
模型、数据集 |
| 微调创建 | /fine-tune/create |
训练参数、GPU 选择、命令预览、审批提示 | POST /modelTF/fine-tune、POST /modelTF/fine-tune/start、GET /modelTF/compute/gpus |
fine_tune_tasks、compute_jobs、gpu_allocations |
算力平台、审批 |
| 训练日志和 checkpoint | /training-log/:id |
日志 tail、指标曲线、checkpoint、恢复/重试 | GET /modelTF/fine-tune/{id}/overview、checkpoints、resume、retry |
fine_tune_metrics、fine_tune_checkpoints |
训练任务 |
| 训练引擎管理 | /training-engines |
引擎列表、schema、健康检查 | /modelTF/training-engines 系列 |
training_engines |
算力 Agent |
16.5 评测、推理和发布
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
|---|---|---|---|---|---|
| 评测列表 | /model-eval |
列表、分数、状态、删除 | /modelTF/model-eval 系列 |
eval_tasks |
模型、数据集 |
| 评测创建 | /model-eval/create |
模型/数据集/维度/GPU 选择、指标配置 | POST /modelTF/model-eval/start、GET /modelTF/dimension |
eval_tasks、eval_dimensions、compute_jobs |
算力平台 |
| 评测详情 | /model-eval/:id |
综合评价、维度汇总、样本结果、人工复核预留 | GET /modelTF/model-eval/{id}、events |
eval_sample_results、eval_dimension_summaries |
评测任务 |
| 评测维度 | /model-eval/dimension/:id/edit |
维度表单、Prompt 编辑 | /modelTF/dimension 系列 |
eval_dimensions |
模型管理 |
| 推理列表/创建 | /model-inference、/model-inference/create |
任务列表、模型选择、GPU 选择、加载状态 | /modelTF/model-compare、load/unload |
inference_tasks、inference_task_models |
算力平台 |
| 推理对话 | /model-inference/chat/:id |
单模型流式对话、历史消息 | stream-chat、chat-with-port |
chat_sessions、chat_messages |
推理服务 |
| 模型对比 | /model-compare/chat/:id、/model-compare/result |
多模型对话、结果对比 | /modelTF/model-chat/* |
chat_sessions、chat_messages |
推理任务 |
| 模型服务治理 | /model-services、/model-services/:id |
测试/生产服务、发布申请、下线、调用统计 | POST /modelTF/approvals、GET /modelTF/usage/summary |
model_services、approval_instances |
审批、算力平台 |
16.6 审批、审计、算力和存储运维
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
|---|---|---|---|---|---|
| 审批中心 | /approvals、/approvals/pending、/approvals/mine、/approvals/:id |
审批列表、详情、通过/驳回/撤回 | /modelTF/approvals 系列 |
approval_instances、approval_steps |
用户、项目 |
| 审批模板 | /approval-settings |
动作策略、审批人规则、超时配置 | /modelTF/approval-templates 系列 |
approval_templates |
租户/项目 |
| 算力资源中心 | /compute、/compute/gpus、/compute/queue、/compute/nodes |
GPU 卡片、节点状态、队列、优先级、节点新增/编辑、连接测试、启用/禁用、维护模式、节点权重/标签、本地资源副本 | /modelTF/compute/*、/modelTF/compute/* 内部接口 |
compute_nodes、compute_node_engines、gpu_devices、compute_jobs、gpu_allocations、resource_replicas、resource_sync_jobs |
Compute API/Agent/File Gateway |
| 存储管理 | /storage |
磁盘占用、大文件、临时文件、checkpoint 清理 | GET /modelTF/quotas/usage、GET/PUT /modelTF/retention-policies |
storage_nodes、storage_objects、cleanup_jobs、retention_policies |
文件网关 |
| 审计中心 | /audit-logs、/login-logs、/download-logs |
筛选、详情、导出 | GET /modelTF/audit-logs、GET /modelTF/login-logs、GET /modelTF/download-logs |
audit_logs、login_sessions |
审计中间件 |
16.7 页面开发优先级建议
| 优先级 | 页面模块 | 原因 |
|---|---|---|
| P0 | 登录、主布局、用户中心、租户、项目、项目成员、资源授权 | 所有资源隔离和接口过滤依赖这些基础能力 |
| P0 | 模型、数据集、文件上传、算力资源、微调创建、训练日志 | 训练主链路必须先跑通 |
| P0 | 审批中心基础能力 | 删除、发布、导出、停止任务等高风险动作依赖审批 |
| P1 | 数据处理、评测、推理、模型服务治理 | 形成训练前后闭环 |
| P1 | 存储管理、checkpoint、审计中心 | 企业治理和运维收口 |
| P2 | 训练引擎管理、外部 API、OIDC/LDAP、成本核算、人工评测 | 扩展能力,第一版可预留 |
P1/P2/P3 Development Status
| Priority | Scope | Implemented content | Remaining production hardening |
|---|---|---|---|
| P1 | Training runtime assets | Compute scans real checkpoint-* directories; backend persists checkpoints to fine_tune_checkpoints; backend parses log metrics into fine_tune_metrics; completed training auto-registers a trained model with its real output directory. |
Add full TensorBoard event parsing and retention/cleanup execution policies. |
| P2 | Model merge/export | /modelTF/model-manage/merge submits llamafactory-cli export through Compute; merge/export jobs are recorded in compute_jobs and model_export_jobs; trained model artifacts are recorded in model_artifacts; base->trained and merge/export relations are recorded in model_lineage; APIs expose artifacts, lineage and export jobs. |
Add frontend polling/status panels for export jobs and richer artifact checksum generation during long-running export. |
| P3 | Compute ops | compute_jobs and gpu_allocations are updated from runtime polling; training start uses scheduler_locks to serialize node selection and GPU pre-allocation; terminal task states release GPU allocations; resource replica drift check and repair-pending APIs are available; scripts/ops_diagnostics.py checks backend, PostgreSQL, Compute health, GPU discovery and Compute jobs. |
Add dedicated scheduler worker, automatic replica repair execution from authoritative source metadata, and lock timeout alarms. |