Files
YG_FT/compute

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=realCompute API 会通过 compute.agent.process_manager.ProcessManager 启动真实 llamafactory-cli train 子进程,并将日志写入 TRAINING_LOG_ROOT
  • 真实模式下 GPU 发现优先使用宿主机 nvidia-smi。如果部署环境暂时无法调用 nvidia-smi,可通过 COMPUTE_GPU_COUNTCOMPUTE_GPU_NAMECOMPUTE_GPU_MEMORY_GBCOMPUTE_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 APIFile 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

返回 contentmetricstotal_linesoffsetlimithas_morenext_offset,用于前端增量刷新和日志平台采集。

文件导入:

POST /modelTF/compute/files/import-local

该接口用于应用侧调度前把算力服务器本地可访问的模型/数据集路径导入到 YG_FT_DATA_ROOT 内部。目标路径会校验不能逃逸出 YG_FT_DATA_ROOT,源路径必须已存在于算力服务器本地或挂载目录。