- 新增 backend/app/modules/compute_gateway(client/sync)计算网关模块 - 新增 backend/app/workers/compute_poller 计算轮询 worker - 新增 compute/agent/process_manager 进程管理器 - 新增 scripts/ 脚本目录 - 更新 Docker 部署配置(app/compute/nginx) - 更新后端平台 API、数据库 SQL、core 配置 - 更新前端多个视图组件及 API 模块 - 重构 frontend/dist 构建产物(新 hash) - 更新多项文档 Co-Authored-By: Claude <noreply@anthropic.com>
Compute Platform
算力平台与应用平台分开部署,本目录用于后续实现单机多 GPU 调度、文件网关和训练引擎适配。
目录结构
compute/
api/ # 只允许应用平台访问的内部 Compute API
agent/ # 单机 Agent,负责 GPU、进程、工作区管理
engines/
llama_factory/ # LLaMA-Factory 训练引擎适配器
file_gateway/ # 本地磁盘上传、下载、预览、离线导入
tests/
开发职责
- GPU 发现、状态上报、锁定和释放。
- 本地磁盘工作区管理。
- 创建、停止、查询训练/评测/推理/合并任务。
- LLaMA-Factory 命令生成、日志解析、产物收集。
- 分片上传、短时下载、离线导入。
- 通过服务间 token 接受应用平台调用。
运行模式
- 默认
COMPUTE_EXECUTION_MODE=real,Compute API 会通过compute.agent.process_manager.ProcessManager启动真实llamafactory-cli train子进程,并将日志写入TRAINING_LOG_ROOT。 - 真实模式下 GPU 发现优先使用宿主机
nvidia-smi。如果部署环境暂时无法调用nvidia-smi,可通过COMPUTE_GPU_COUNT、COMPUTE_GPU_NAME、COMPUTE_GPU_MEMORY_GB、COMPUTE_GPU_POWER_LIMIT_W声明兼容 GPU 清单,便于应用侧先完成节点登记和联调。 - 仅隔离联调时可设置
COMPUTE_EXECUTION_MODE=simulator,启用内存状态机和合成 GPU/日志数据。该模式不得作为生产运行路径。 - 服务间鉴权默认开启:设置
COMPUTE_AUTH_ENABLED=true和一致的COMPUTE_SERVICE_TOKEN,应用侧会通过X-Compute-Token调用 Compute API。 - 真实训练作业会登记到
TRAINING_LOG_ROOT/compute-jobs.json。Compute API 重启后会恢复作业索引,继续提供状态、停止和日志查询。 - 同一算力节点内按 GPU ID 做轻量锁定;已有运行中作业占用的 GPU 不允许再次提交,避免同机多 GPU 场景下误复用。
真实执行前提:
- 镜像或宿主机环境中
llamafactory-cli可执行。 LLAMA_FACTORY_HOME指向 LLaMA-Factory 工作目录。- 基座模型路径和数据集名称/目录已经在算力服务器本地可访问。
- 应用侧训练任务中的 GPU、模型、数据集配置能映射到当前节点本地路径。
应用侧接入
应用平台通过“算力节点”页面维护每台 GPU 服务器的 Compute API 和 File Gateway 地址。点击连接测试时,Backend API 会主动调用:
GET /modelTF/v1/compute/health
GET /modelTF/compute/resources/gpus
连接成功后,应用侧会同步节点健康信息、能力标签和 GPU 清单到 PostgreSQL。多节点阶段仍按“每台算力服务器 = 单机多 GPU 节点”管理,每台服务器都部署 Compute API、Agent、File Gateway 契约和 LLaMA-Factory。
训练闭环:
Frontend 创建/启动训练
-> Backend API 选择 compute_nodes 节点
-> Backend API POST /modelTF/compute/jobs 到目标 Compute API
-> Compute API 启动 llamafactory-cli 子进程
-> Backend Worker 定时 GET /modelTF/compute/jobs/{id}
-> Backend API 同步 fine_tune_tasks 状态、进度、PID、日志路径和产物索引
当前接口能力
日志接口:
GET /modelTF/compute/jobs/{job_id}/logs?tail_lines=200
GET /modelTF/compute/jobs/{job_id}/logs?offset=0&limit=500
返回 content、metrics、total_lines、offset、limit、has_more、next_offset,用于前端增量刷新和日志平台采集。
文件导入:
POST /modelTF/compute/files/import-local
该接口用于应用侧调度前把算力服务器本地可访问的模型/数据集路径导入到 YG_FT_DATA_ROOT 内部。目标路径会校验不能逃逸出 YG_FT_DATA_ROOT,源路径必须已存在于算力服务器本地或挂载目录。