wuyongtao 2c1e08a271 feat: 重构 Docker 配置结构,添加 compute 模块及新增文档
- 将 Dockerfile 和 docker-compose.yml 迁移至 docker/ 目录下统一管理
- 新增 compute 计算模块(API 入口、依赖配置)
- 新增 docker/app 和 docker/compute 部署配置
- 新增 demo-development-plan.md 演示开发计划文档
- 更新后端 API 设计、部署计划、架构需求等文档
- 更新 postgres 数据库 schema

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 14:59:31 +08:00
2026-07-10 15:59:25 +08:00

YG_FT 模型微调平台

YG_FT 是一个面向企业治理场景的完整模型微调平台,覆盖用户中心、多租户、项目隔离、数据集管理、模型管理、训练任务、评测、推理、审批流、审计留存、算力调度和训练引擎适配。当前前端已存在基础页面,后端与算力平台已按多人协作开发方式建立工程骨架。

总体架构

YG_FT/
  frontend/                 # 前端应用,承载训练平台控制台页面
  backend/                  # FastAPI 应用平台后端
    app/
      api/v1/               # 对前端暴露的 REST API
      core/                 # 配置、日志、中间件、权限等基础能力
      db/                   # 数据库连接、迁移、事务工具
      modules/              # 业务模块目录
      schemas/              # Pydantic 入参/出参模型
      services/             # 跨模块应用服务
      workers/              # 后台任务入口
    requirements.txt        # 后端 Python 第三方依赖
  compute/                  # 算力平台与训练框架适配层
    api/                    # 内部 Compute API
    agent/                  # 单机多 GPU 调度与进程管理
    engines/llama_factory/  # LLaMA-Factory 适配器
    file_gateway/           # 本地文件上传、下载、导入、产物管理
  docs/                     # 需求、接口、数据库、开发计划和部署文档
  docker/                   # Nginx 等容器化配置

平台分层

层级 职责 主要目录
前端控制台 用户操作入口、任务看板、项目/模型/数据集/训练/审批/审计页面 frontend/
应用平台后端 用户中心、多租户、RBAC/ABAC、项目隔离、元数据、审批流、审计、API 编排 backend/
算力平台 GPU 发现、资源锁定、训练进程管理、日志采集、产物归档、任务状态回传 compute/
训练引擎 当前固定接入 LLaMA-Factory预留其他训练平台适配标准 compute/engines/
数据层 PostgreSQL、Redis、本地文件存储、日志归档 docs/postgres-schema.sql

关键能力

  • 多租户:租户级数据隔离、租户配置、租户成员和角色。
  • 权限控制:支持项目、模型、数据集级隔离,后续可扩展到字段级和操作级策略。
  • 审批流:覆盖数据集发布、模型发布、训练资源申请、推理服务上线等企业流程。
  • 审计留存:操作审计、安全审计、审批审计、任务审计,支持留存周期策略。
  • 训练任务:训练参数管理、单机多 GPU 调度、任务状态同步、训练日志、产物管理。
  • 引擎适配:默认 LLaMA-Factory预留统一 Engine Adapter 接口接入其他微调框架。
  • 文件存储:当前使用本地磁盘,按租户/项目/数据集/任务分区。
  • 日志采集:后端 JSON Lines 日志,主日志和错误日志拆分,便于 ELK/日志平台采集。

后端启动

cd backend
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload

默认健康检查:

GET /api/v1/health

日志

后端日志模块位于 backend/app/core/logging.py,说明文档见:

  • docs/backend-logging.md

默认输出:

logs/backend-YYYY-MM-DD.log
logs/error-YYYY-MM-DD.log

日志格式为 JSON Lines单个文件不超过 20MB只保留最近 10 天。

主要文档

  • docs/platform-architecture-requirements.md:平台需求、功能模块、页面补全建议。
  • docs/backend-api-design.mdFastAPI 接口分组、参数定义、权限说明。
  • docs/postgres-schema.sqlPostgreSQL 数据库脚本,包含权限、用户中心、多租户、审批、审计等模型。
  • docs/system-development-plan.md多人协作开发计划按前端、后端、DB、部署拆分。
  • docs/backend-logging.md:后端日志模块使用说明。
  • docs/deployment-plan.md:后期部署方案,覆盖单机算力服务器部署与应用/算力分离部署。
  • docs/demo-development-plan.md:可演示 Demo 开发计划覆盖前端、后端、DB、Compute Simulator、GPU 和 LLaMA-Factory 适配。
  • docker/README.mdDocker 部署入口,包含应用服务器和算力服务器两套 Compose 使用方式。

部署模式

平台支持两种主要部署模式:

  1. 所有服务部署在算力服务器:适合 PoC、内网试点、小团队单机多 GPU 使用。
  2. 应用服务和算力/训练服务独立部署:适合企业生产环境,应用平台部署在业务服务区,算力平台和 LLaMA-Factory 部署在 GPU 服务器。

生产环境建议采用第二种模式。算力平台与训练框架应部署在 GPU 算力服务器上,应用平台不直接控制 GPU 进程,而是通过内部 Compute API 调度训练任务。

详细方案见 docs/deployment-plan.md

Docker 部署入口

应用服务器:

cd docker/app
cp .env.example .env
docker compose --profile build run --rm frontend-builder
docker compose up -d --build

算力服务器:

cd docker/compute
cp .env.example .env
docker compose up -d --build

两套 Compose 均采用代码外挂方式运行,镜像只包含运行时环境和第三方依赖。详细说明见 docker/README.md

项目根目录不再保留 Dockerfiledocker-compose.yml,部署时统一进入 docker/appdocker/compute 目录执行。

当前 Docker 约定:

  • PostgreSQL/Redis 开发阶段使用项目自带 Compose 服务,生产阶段保留切换企业统一基础设施的配置入口。
  • 算力服务器上的 LLaMA-Factory 使用宿主机目录挂载,默认 /opt/LLaMA-Factory
  • 应用平台通过定时轮询 Compute API 同步训练状态,默认不要求算力服务器回调应用服务器。
  • 多算力节点阶段,每台单机多 GPU 服务器都独立部署 docker/compute、Compute API、Agent、File Gateway 和 LLaMA-Factory节点之间默认不互访由应用平台通过 compute_nodesresource_replicasresource_sync_jobs 统一调度与同步。

后续开发原则

  • 接口实现优先遵循 docs/backend-api-design.md
  • 数据库实现优先遵循 docs/postgres-schema.sql,后续通过 Alembic 迁移管理变更。
  • 前端页面与后端接口、数据库表之间的映射以文档中的“对应页面/功能模块”为准。
  • 训练引擎适配必须通过 compute/engines/ 下的标准接口,不在应用平台后端直接拼接训练命令。
  • 敏感信息不得写入日志,生产环境密钥通过环境变量或密钥管理系统注入。
Description
远光微调平台
Readme 169 MiB
Languages
Vue 57.7%
TypeScript 18.7%
JavaScript 13.1%
Python 9.5%
SCSS 0.9%