利用容器内已有的 LLaMA-Factory ChatModel (huggingface 后端) 实现真实 模型推理,无需额外安装 vLLM。 Compute 端新增: - compute/engines/llama_factory/inference.py InferenceSession: 模型加载/卸载/对话/流式输出 支持 base model 和 LoRA adapter,线程安全 - compute/api/main.py 新增 5 个推理端点: POST /inference/load - 加载模型 POST /inference/unload - 卸载释放 GPU 显存 GET /inference/status - 查询会话状态 POST /inference/chat - 非流式对话 POST /inference/chat/stream - SSE 流式对话 后端新增: - platform.py 推理代理端点(local/chat, local/chat/stream, local/preload, local/unload, local/status, trained/preload) - ComputeNodeClient._request 通用请求方法 - _select_first_online_node 自动选择在线节点 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,源路径必须已存在于算力服务器本地或挂载目录。