Files
YG_FT/docs/first-version-development-plan.md
wuyongtao bccd3bf448 feat: 更新后端配置、Docker部署、API模块及多项文档
- 更新后端 main.py、config.py 核心配置
- 更新 compute API 模块
- 更新 Docker 部署配置(app/compute docker-compose、nginx、环境变量)
- 更新前端 API 模块(dataset、model、request)及 vite 配置
- 更新多项项目文档(架构、部署、开发计划、日志等)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 10:09:36 +08:00

136 lines
6.2 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.
# 第一版系统开发计划
> 说明:本计划虽然以“可演示闭环”为阶段目标,但实现内容按正式系统第一版开发,不在工程模块、配置项、接口标签、数据库对象中使用临时代码命名。初始化数据仅作为样例种子数据,后续可在此基础上继续扩展为生产能力。
## 1. 阶段目标
第一版系统需要在没有完整生产环境、没有真实 GPU 或没有 LLaMA-Factory 运行环境时,仍然可以跑通模型微调平台的主链路:
```text
登录
-> 模型管理
-> 数据集管理
-> 创建微调任务
-> 调度算力节点与 GPU
-> 模拟资源副本检查和同步
-> 启动训练任务
-> 查看任务状态、GPU 占用、训练日志、loss 曲线
-> 训练完成后登记训练产物
```
该阶段不是一次性展示代码,而是后续系统继续开发的基础版本。算力、训练框架、资源同步、任务状态机均按真实平台边界设计,当前仅以 `simulator` 模式补齐无 GPU 环境下的可运行能力。
## 2. 运行模式
| 模式 | 说明 | 当前状态 |
| --- | --- | --- |
| `simulator` | 模拟 GPU、训练进程、日志、指标、checkpoint 和训练产物 | 第一版默认实现 |
| `real` | 预留真实 `nvidia-smi`、LLaMA-Factory 进程启动、真实日志解析和产物扫描 | 后续接入 |
第一版实现必须保留 `real` 模式边界,不允许把训练命令直接写死在应用平台后端。训练相关能力统一沉淀在 `compute/engines/` 适配层。
## 3. 第一批开发范围
### 3.1 应用平台后端
对应目录:
```text
backend/app/
api/v1/endpoints/platform.py
db/platform_store.py
db/session.py
```
已覆盖能力:
- 统一 API 响应结构 `{ code, message, data }`
- 初始化样例用户、模型、数据集、算力节点、GPU 和微调任务。
- 登录、当前用户、用户列表与权限。
- 模型管理、训练产物列表、权重合并任务占位。
- 数据集管理、文件上传、预览、版本管理和下载。
- 微调任务创建、启动、停止、删除、进度查询、checkpoint 查询。
- 系统健康指标、系统信息、训练日志、系统日志。
- 算力节点、GPU、队列、资源副本、资源同步任务接口。
开发约定:
- 当前本地可运行存储使用 SQLite配置项为 `LOCAL_DB_PATH`
- 生产数据库仍以 PostgreSQL 为目标,正式表结构以 `docs/postgres-schema.sql` 为准。
- `backend/app/db/session.py` 已提供 SQLAlchemy session 入口,后续替换正式 ORM 时从此处收口。
### 3.2 算力平台服务
对应目录:
```text
compute/
api/main.py
engines/llama_factory/adapter.py
```
已覆盖能力:
- `/modelTF/health``/modelTF/v1/compute/health` 节点健康检查。
- `/modelTF/compute/resources/gpus` GPU 状态模拟。
- `/modelTF/compute/jobs` 创建、查询、停止训练任务。
- `/modelTF/compute/jobs/{id}/logs` 拉取训练日志与解析指标。
- `/modelTF/compute/files/upload``/modelTF/compute/files/{id}/download` 文件网关占位。
- LLaMA-Factory 参数校验、命令生成、日志指标解析。
设计约定:
- 多算力节点阶段,每台单机多 GPU 服务器都部署一套 Compute API、Agent、File Gateway 和训练框架。
- 应用平台通过 `compute_nodes` 中维护的 `api_base_url``file_gateway_url` 主动轮询算力节点。
- 算力节点之间默认不互访,资源副本和同步状态由应用平台统一编排。
### 3.3 前端页面
已接入页面:
- `/login`:登录接口。
- `/model-manage`:模型列表与模型来源。
- `/dataset``/dataset/:id/preview`:数据集列表、预览和版本。
- `/fine-tune``/fine-tune/create`:微调任务创建、启动、状态轮询。
- `/training-log/:id`:训练日志和 loss 曲线。
- `/hardware`:平台 GPU 与系统性能。
- `/compute`算力节点、GPU、队列、资源副本。
新增前端能力:
- `frontend/src/api/modules/compute.ts`:算力节点 API 包装。
- `frontend/src/views/compute/ComputeNodesView.vue`节点、GPU、队列、资源副本四个视图。
- 权限枚举增加 `compute`,菜单增加“算力节点”入口。
### 3.4 数据库
第一版运行时使用本地 SQLite 以降低开发环境门槛,但数据库模型仍按 PostgreSQL 正式设计推进。
核心表范围:
- 用户、租户、项目、角色、权限。
- 模型、训练产物、数据集、数据集文件、存储对象。
- 微调任务、训练指标、checkpoint、审计日志。
- 算力节点、GPU 设备、算力任务、GPU 分配。
- 资源副本、资源同步任务。
优化方向:
- 任务状态、租户/项目隔离字段、资源副本定位字段需要建立索引。
- 审计日志、训练指标、日志归档后续建议按时间分区。
- 大文件只落本地磁盘或对象存储,数据库保存元数据和版本关系。
## 4. 验收标准
第一版完成后应满足:
- 前端不启用静态 Mock 时,可以通过 FastAPI 获取主要页面数据。
- 登录后可以看到模型、数据集、微调任务和算力节点。
- 创建微调任务后可以启动任务,任务状态自动流转。
- GPU 状态会随任务进入 `syncing``queued``running` 发生变化。
- 训练日志持续生成,日志详情页能解析 loss、grad norm、learning rate、epoch。
- 任务完成后训练产物出现在模型管理的训练产物列表中。
- 算力节点页面可展示节点地址、权重、标签、启用状态、队列和资源副本。
- 工程命名、配置和接口分组均可作为后续正式开发基础。
## 5. 后续开发计划
| 阶段 | 重点 | 说明 |
| --- | --- | --- |
| 第二阶段 | PostgreSQL ORM 与 Alembic | 将 `platform_store.py` 的能力迁移为正式 ORM、迁移脚本和 repository/service 分层 |
| 第三阶段 | 真实 Compute Agent | 接入 `nvidia-smi`、GPU 锁定、进程管理、训练日志文件采集 |
| 第四阶段 | LLaMA-Factory 真实训练 | 生成 YAML/命令、启动训练进程、停止任务、扫描 checkpoint 和 adapter |
| 第五阶段 | 企业治理 | 多租户、项目/模型/数据集隔离、审批流、审计留存、配额和资源申请 |
| 第六阶段 | 多节点调度 | 基于 `compute_nodes`、资源副本和节点标签实现自动/手动调度策略 |