Files
YG_FT/docs/first-version-development-plan.md
2026-07-27 09:12:47 +08:00

146 lines
6.7 KiB
Markdown
Raw 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.
# 当前系统主链路开发计划
> 说明:本计划描述当前正在开发的系统能力。代码、接口和 SQL 均按后续生产演进基线维护,不以一次性演示、静态 Mock 或样例数据作为开发准则。联调辅助能力必须显式配置启用,并不得成为默认运行路径。
## 1. 阶段目标
当前阶段需要完成模型微调平台的主链路工程基础:
```text
登录
-> 模型管理
-> 数据集管理
-> 创建微调任务
-> 调度算力节点与 GPU
-> 检查并同步模型/数据集资源
-> 启动训练任务
-> 轮询任务状态、GPU 占用、训练日志、loss 曲线
-> 训练完成后登记训练产物
```
该阶段是正式系统的第一批可运行能力,不再初始化业务样例数据。系统只允许初始化内置管理员/运维账号模型、数据集、算力节点、GPU、训练任务和资源副本必须通过页面、接口、算力 Agent 扫描或正式导入流程产生。
## 2. 运行模式
| 模式 | 说明 | 当前要求 |
| --- | --- | --- |
| `real` | 面向真实部署,等待 Compute API、Agent、File Gateway 和 LLaMA-Factory 执行器回写状态 | 默认模式 |
| `simulator` | 仅用于隔离联调,无真实 GPU 时临时推进任务状态、GPU 状态和训练日志 | 必须显式开启,不得用于生产基线 |
后端默认 `COMPUTE_MODE=real`。在该模式下,任务状态不再按时间自动推进,必须由后续真实算力同步逻辑更新。算力服务默认 `COMPUTE_EXECUTION_MODE=real`,真实训练执行器未完成前,创建训练作业会返回明确的未实现错误,避免误认为已经完成生产训练能力。
训练相关能力必须沉淀在 `compute/engines/` 适配层,不允许在应用平台后端直接拼接或执行训练命令。
## 3. 当前开发范围
### 3.1 应用平台后端
对应目录:
```text
backend/app/
api/v1/endpoints/platform.py
core/
db/
```
已建立能力:
- 统一 API 响应结构 `{ code, message, data }`
- PostgreSQL 运行表初始化,当前执行脚本位于 `backend/app/db/sql/001_platform_runtime.sql`
- 内置管理员账号初始化,业务数据不再自动写入样例记录。
- 登录、当前用户、用户列表与权限页面接口。
- 模型管理、训练产物列表、权重合并任务入口。
- 数据集管理、文件上传、预览、版本管理和下载。
- 微调任务创建、启动、停止、删除、进度查询、checkpoint 查询。
- 系统健康指标、系统信息、训练日志、系统日志接口。
- 算力节点、GPU、队列、资源副本、资源同步任务接口。
待继续开发:
- 接入正式 ORM/Repository/Service 分层和 Alembic 迁移。
- 将任务状态更新改为应用侧定时轮询 Compute API/File Gateway 后落库。
- 完成项目/模型/数据集级权限隔离校验。
- 完成审批流、审计留存、配额、资源申请和多租户上下文。
- 增加正式异常码、接口鉴权、中间件、幂等控制和分页规范。
### 3.2 算力平台服务
对应目录:
```text
compute/
api/main.py
agent/
engines/llama_factory/
file_gateway/
```
已建立能力:
- `/modelTF/health``/modelTF/v1/compute/health` 节点健康检查。
- LLaMA-Factory 参数校验、命令生成和训练日志指标解析。
- Compute API 作业、GPU、文件网关接口壳。
- 显式 `simulator` 模式下的内存状态机,用于隔离联调。
待继续开发:
- 真实 GPU 发现:接入 `nvidia-smi` 或 NVML。
- GPU 锁定与释放:一张 GPU 同一时间只分配给一个训练或推理任务。
- LLaMA-Factory 真实执行器:生成 YAML/命令、启动进程、停止进程、采集 PID。
- 训练日志采集:读取宿主机挂载日志文件,解析 loss、learning rate、epoch 等指标。
- Checkpoint/adapter/merged model 扫描与产物登记。
- File Gateway本地磁盘文件上传、下载、校验、导入和跨节点资源同步。
### 3.3 前端页面
已接入页面:
- `/login`:登录接口。
- `/model-manage`:模型列表、模型来源、训练产物。
- `/dataset``/dataset/:id/preview`:数据集列表、预览、版本。
- `/fine-tune``/fine-tune/create`:微调任务创建、启动、状态轮询。
- `/training-log/:id`:训练日志和 loss 曲线。
- `/hardware`:平台 GPU 与系统性能。
- `/compute`算力节点、GPU、队列、资源副本。
前端 Mock 默认关闭。仅在隔离前端开发时可设置 `VITE_ENABLE_MOCK=true`,真实联调和后续生产演进均以 `/modelTF` 后端接口为准。
待继续开发:
- 补齐多租户、项目管理、审批中心、审计中心、配额管理页面。
- 完成算力节点管理表单,包括节点地址、权重、标签、启用状态和健康检查结果。
- 完成模型/数据集导入页面,支持本地路径扫描和归属项目选择。
- 推理服务页面需接入真实后端任务接口,移除页面内本地假对话路径。
### 3.4 数据库
当前运行 SQL
```text
backend/app/db/sql/001_platform_runtime.sql
```
架构目标 SQL
```text
docs/postgres-schema.sql
```
当前运行 SQL 用于支持已开发接口落库;架构目标 SQL 包含用户中心、多租户、项目隔离、审批、审计、配额、评测等完整模型。后续需要通过 Alembic 将二者收敛为统一迁移体系,生产升级只走迁移脚本,不依赖手工改表。
## 4. 验收标准
- 启动后端必须连接 PostgreSQL不允许回退到 SQLite。
- 后端启动只初始化系统内置账号不初始化模型、数据集、算力节点、GPU、训练任务等业务样例数据。
- 前端默认请求真实 `/modelTF` 接口,除非显式设置 `VITE_ENABLE_MOCK=true`
- 默认 `real` 模式下任务状态不自动伪造完成,必须等待真实算力同步。
- 显式 `simulator` 模式只能用于隔离联调,部署文档必须标注不得用于生产。
- 登录后可以进入主界面,并可通过页面/API 创建真实业务记录。
- 代码、接口路由、配置项、数据库表名不得使用 `demo` 命名。
## 5. 后续开发计划
| 阶段 | 重点 | 说明 |
| --- | --- | --- |
| 阶段 1 | 数据库迁移体系 | 将当前运行 SQL 与架构 SQL 收敛到 Alembic 迁移 |
| 阶段 2 | 后端领域分层 | 拆分用户、模型、数据集、训练、算力、审计等模块 |
| 阶段 3 | 真实 Compute Agent | GPU 发现、资源锁定、进程管理、日志采集 |
| 阶段 4 | LLaMA-Factory 训练执行 | YAML/命令生成、进程启动/停止、checkpoint 和 adapter 扫描 |
| 阶段 5 | 企业治理 | 多租户、项目隔离、审批流、审计留存、配额和资源申请 |
| 阶段 6 | 多算力节点调度 | 基于 `compute_nodes`、标签、权重、资源副本和节点健康实现调度策略 |