wuyongtao
|
5cc306eb0a
|
fix: 推理/评测结果同步、数据集统计与算力节点管理增强
后端:
- 抽取 fetch_eval_result_content 复用函数,model_eval_detail 直接应用评测任务结果
- health 接口移除数据库依赖,返回静态指标
- 数据集: count_dataset_records JSON 感知计数; 文件统计改为从 dataset_files 聚合重算; 在线编辑记录 size/record_count/version_no; 上传同步批处理
- 算力节点: 调度支持 requested GPU 子集校验与容量计算; 新增 delete_compute_node(含活动任务保护)及 DELETE 接口; 连接池 connect_timeout
- 评测任务落库 basic_metrics/score/completed_time, failed/stopped 记录 error
评测引擎:
- _load_dataset 支持 JSON/JSONL 文件
- 新增 exact match 与文本相似度指标, 余弦相似度去掉 2 样本限制
前端:
- 算力节点列表「维护」改为「删除」(带确认弹窗), compute.ts 新增 deleteComputeNode
- 数据集上传超时调整为 120s; FineTuneTask 增加 compute_node_id; GpuInfo 状态增加 reserved
|
2026-08-03 15:49:21 +08:00 |
|
wuyongtao
|
cc08b164d0
|
fix: 前端表格行类型断言修复并补充 psycopg-pool 依赖
- 审批/项目/租户/用户设置等视图新增 asXxx 类型断言辅助函数
- search-fields 由字符串改为数组传参
- backend 依赖新增 psycopg-pool,Dockerfile 依赖校验同步更新
|
2026-08-03 11:02:41 +08:00 |
|
wuyongtao
|
24c77a990a
|
Merge branch 'ft_wyt' of http://www.caoxiaozhu.com:13001/YG-Soft/YG_FT into ft_wyt
# Conflicts:
# backend/app/api/v1/endpoints/platform.py
# compute/requirements.txt
|
2026-08-03 09:42:49 +08:00 |
|
wangjiming
|
15c4223f2c
|
update
|
2026-08-03 09:34:08 +08:00 |
|
caoxiaozhu
|
b975de02da
|
fix: 完善数据预处理与 JSON 上传链路
|
2026-07-30 16:54:00 +08:00 |
|
wuyongtao
|
46d343fb63
|
chore: compute requirements.txt 新增评测依赖 sacrebleu / rouge-score / scikit-learn
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-29 14:27:48 +08:00 |
|
wuyongtao
|
0c39f2f5b9
|
feat: 模型评测端到端闭环 — EvalRunner引擎 + 算力节点Job执行 + 结果回写
算力节点 (compute):
- 新建 eval_runner.py: 评测执行引擎,作为subprocess运行
- 加载模型 + JSONL数据集 + 逐样本推理
- BLEU/ROUGE/Cosine基础指标计算
- LLM Judge评分(OpenAI兼容API调用)
- 结果写入eval_results.json
- adapter.py: build_command新增engine=eval分支
- main.py: 新增/json模块导入,新增/compute/files/read端点,eval job校验
后端:
- platform.py: 重写startEval提交eval job到算力节点
- 支持models表和trained_models表查找
- 已合并模型不传adapter路径
- platform_store.py: 新增update_eval_task/running_eval_tasks/apply_eval_job_result
- sync.py: poller新增eval job同步,异步读取eval_results.json回写结果
前端:
- EvalCreateView/DimensionCreateView: eval模型过滤扩展(API类型+api_url)
- EvalCreateView: GPU过滤在线节点空闲GPU
- EvalTaskSetupStep: GPU value从数组index改为gpu.id
- BasicMetricSetupStep: ROUGE方法名修正(rouge_1→rouge1)
- EvalView: 新增5秒轮询刷新
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 19:34:41 +08:00 |
|
wuyongtao
|
c7c9ed925b
|
feat: 模型推理端到端闭环 — 真实流式推理 + 释放/删除 + GPU 状态同步
后端 (platform.py + platform_store.py):
- 新增 _build_messages_payload() 转换前端格式为 OpenAI messages
- 新增 _stream_chat_proxy() SSE 流式代理到算力节点
- 新增 _unload_from_compute_node() 真正释放算力节点 GPU 显存
- 重写 model_compare_load: 从假 PID/端口改为真正调用算力节点加载模型
- 修复 model_compare_unload: 调用 _unload_from_compute_node 释放 GPU
- 修复 model_compare_delete: 先释放 GPU 再删除记录
- 修复 model_compare_stream_chat: 从 mock 改为 StreamingResponse 代理
- 修复 model_chat_local/stream: 消息格式转换 + 路径修正
- PlatformStore 新增 _inference_nodes 追踪,gpus() 同步推理占用状态
- preload/unload 端点标记/清除推理节点占用
算力节点 (compute):
- inference.py: 适配新版 LLaMA-Factory API (get_infer_args 4 返回值、ChatModel args dict、stream_chat 新签名)
- inference.py: unload() 增加 gc.collect + torch.cuda.empty_cache + synchronize 彻底释放显存
- main.py: inference/load 移除 HTTPException(500),错误以 200 正常返回
前端:
- InferenceChatView: 真实模式下走 SSE 流式推理,mock 模式保留兼容
- InferenceCreateView: 调用 preloadLocalModel + createCompare 真实创建推理任务,失败回退 mock
- InferenceListView: 「停止」改为「释放」,删除前先释放算力节点,改进错误提示
- compare.ts: 新增 streamChatReal() fetch SSE,preload 超时提升至 5 分钟
- useStreamChat.ts: send() 支持 useMock 参数,真实模式调用 streamChatReal
- GPU 选择过滤: 仅显示在线算力节点上的空闲 GPU
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 17:29:16 +08:00 |
|
wuyongtao
|
f917a025e1
|
feat: 基于 LLaMA-Factory 实现模型推理引擎
利用容器内已有的 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>
|
2026-07-28 13:49:10 +08:00 |
|
wuyongtao
|
a9ab130d43
|
feat: P0 训练闭环核心功能实现
P0-1 模型路径治理:
- 新增 003_model_path_governance.sql 迁移,models 表增加 can_train 字段
- create_model/update_model 自动计算 can_train(非API+有路径=可训练)
- _compute_job_payload_from_task_node 拒绝 API 模型和无可训练路径模型
- 平台诊断规则增加 API 模型/路径缺失检测
P0-2 数据集格式校验:
- 新增 dataset_format.py,支持 Alpaca/ShareGPT/DPO/CPT 格式校验
- 训练预检时自动根据 train_type 匹配格式并校验内容字段
- llama_dataset_info 增加 DPO/CPT 格式列映射
P0-3 训练完成产物入库:
- _ensure_trained_model 使用 compute 节点返回的真实 artifacts
- 注册 per-file artifact 记录(含 size_bytes/checksum_sha256)
- trained_models 表增加 artifact_dir 字段
P0-4 失败日志拉取:
- poll_compute_jobs_once 检测到 failed/stopped 时强制拉取最后 200 行日志
- apply_compute_job 持久化失败日志片段到任务 payload
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 13:10:53 +08:00 |
|
wuyongtao
|
525fc55cef
|
fix: 修复 GPU 选择索引错误及 CUDA 不可用问题,优化 GPU 硬件单选
- 修复 FineTuneCreateView GPU 选择使用 v-for idx 替代真实 gpu.id 导致
多节点环境下 GPU 索引错误(如 gpu-node-02 仅 GPU 0 但请求 GPU 1)
- GPU 选择改为单选模式,已离线节点自动过滤不展示
- GPU 卡片增加节点编号展示
- 修复 CUDA_VISIBLE_DEVICES=all 无效值导致 torch.cuda.is_available() False
改为 CUDA_VISIBLE_DEVICES=0
- .gitignore 新增 .claude/ CLAUDE.md 排除规则
- GpuInfo 类型增加 node_id/node_code/node_name 字段
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 12:43:20 +08:00 |
|
wuyongtao
|
3fd9cf9100
|
fix: 移除 frontend/.gitignore 中对 dist 的例外规则
之前 frontend/.gitignore 中 !dist/ 和 !dist/** 规则导致构建产物
仍然被 Git 追踪,现已删除,与根 .gitignore 保持一致。
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 12:10:54 +08:00 |
|
wuyongtao
|
a72e2a2520
|
chore: 将 frontend/dist 从版本控制中移除,补充 ElMessageBox 导入
- 移除 .gitignore 中对 frontend/dist/ 的例外规则,构建产物不再纳入版本控制
- DataProcessDetailView.vue 补充 ElMessageBox 导入修复 TS2552 错误
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 12:07:57 +08:00 |
|
caoxiaozhu
|
01d2e6c76a
|
feat(data-process): 完善后台生成与失败重试
|
2026-07-28 10:56:05 +08:00 |
|
caoxiaozhu
|
8a6a6574bb
|
feat(data-process): 完善 Word 与 Excel 原文件预览
|
2026-07-27 16:24:53 +08:00 |
|
caoxiaozhu
|
9025437a37
|
feat(data-process): 增加 Office 原文件预览接口
|
2026-07-27 16:12:50 +08:00 |
|
caoxiaozhu
|
4623e3fa1c
|
fix(data-process): 完善默认生成提示语
|
2026-07-27 14:58:02 +08:00 |
|
caoxiaozhu
|
f97245b814
|
feat(data-process): 增加可配置思维链生成
|
2026-07-27 14:41:38 +08:00 |
|
caoxiaozhu
|
97cdb5cc68
|
fix(data-process): 收准结构化预处理能力文案
|
2026-07-27 14:36:16 +08:00 |
|
caoxiaozhu
|
d8a11e4949
|
fix(data-process): 对齐输出类型控件宽度
|
2026-07-27 13:58:15 +08:00 |
|
caoxiaozhu
|
05c1a5c1e1
|
fix(data-process): 优化输出类型选择样式
|
2026-07-27 13:49:21 +08:00 |
|
caoxiaozhu
|
f3fa5f1a68
|
fix(data-process): 调整输出类型选项位置
|
2026-07-27 13:43:30 +08:00 |
|
caoxiaozhu
|
de2e8952b5
|
feat(data-process): 支持思维链输出类型
|
2026-07-27 13:08:44 +08:00 |
|
caoxiaozhu
|
ecafb7eb13
|
fix(dataset): 展示训练任务名称
|
2026-07-27 12:44:40 +08:00 |
|
caoxiaozhu
|
b82897ca3a
|
fix(dataset): 限制长文本提示层尺寸
|
2026-07-27 12:35:09 +08:00 |
|
caoxiaozhu
|
e6bbb0bb49
|
feat(dataset): 补全样本原文与删除操作
|
2026-07-27 12:26:19 +08:00 |
|
caoxiaozhu
|
bce586697b
|
fix(dataset): 统一大小与版本元数据
|
2026-07-27 12:26:09 +08:00 |
|
caoxiaozhu
|
e486d36a80
|
feat(dataset): 支持数据任务批量删除
|
2026-07-27 11:36:30 +08:00 |
|
caoxiaozhu
|
d6e325fe9e
|
fix(data-process): 按发布状态控制结果编辑
|
2026-07-27 11:23:17 +08:00 |
|
caoxiaozhu
|
b08a771a61
|
fix(data-process): 保留可验证的任务耗时
|
2026-07-27 11:16:48 +08:00 |
|
caoxiaozhu
|
8caaaa5bbc
|
fix(data-process): 恢复提前中断的重新生成任务
|
2026-07-27 11:07:18 +08:00 |
|
caoxiaozhu
|
3f5fedb9ed
|
build(frontend): 更新重新生成流程构建
|
2026-07-27 10:43:53 +08:00 |
|
caoxiaozhu
|
53844a3a09
|
fix(frontend): 保持重新生成退出前详情
|
2026-07-27 10:43:48 +08:00 |
|
caoxiaozhu
|
53014bb381
|
fix(data-process): 延迟重新生成破坏性变更
|
2026-07-27 10:43:42 +08:00 |
|
caoxiaozhu
|
03bd0b6d03
|
build(frontend): 更新数据任务详情构建
|
2026-07-27 10:03:58 +08:00 |
|
caoxiaozhu
|
b4927a8952
|
fix(frontend): 对齐数据任务详情状态
|
2026-07-27 10:03:52 +08:00 |
|
caoxiaozhu
|
b14b2ecf22
|
fix(data-process): 修正任务详情数据契约
|
2026-07-27 10:03:46 +08:00 |
|
caoxiaozhu
|
42c0e4f5c2
|
build(frontend): 更新数据任务列表构建
|
2026-07-27 09:50:33 +08:00 |
|
caoxiaozhu
|
88a82ed771
|
feat(frontend): 完善数据任务数量与状态
|
2026-07-27 09:50:26 +08:00 |
|
caoxiaozhu
|
895983ac20
|
feat(data-process): 返回任务文档数量
|
2026-07-27 09:50:19 +08:00 |
|
caoxiaozhu
|
680fa905f8
|
build(frontend): 更新数据集保留提示构建
|
2026-07-27 09:39:29 +08:00 |
|
caoxiaozhu
|
ce0f908d20
|
fix(frontend): 标明重新生成前的数据集状态
|
2026-07-27 09:39:23 +08:00 |
|
caoxiaozhu
|
e4ea1f168c
|
fix(data-process): 保留重新生成前的已发布数据集
|
2026-07-27 09:39:19 +08:00 |
|
caoxiaozhu
|
915f994c45
|
build(frontend): 更新五十条生成上限构建
|
2026-07-27 09:12:03 +08:00 |
|
caoxiaozhu
|
762f866175
|
feat(data-process): 放宽问答生成数量上限
|
2026-07-27 09:11:58 +08:00 |
|
caoxiaozhu
|
9428c6b785
|
feat(data-process): 支持单项生成五十条数据
|
2026-07-27 09:11:51 +08:00 |
|
caoxiaozhu
|
25d75f40c7
|
build(frontend): 更新重新生成流程构建
|
2026-07-25 22:41:16 +08:00 |
|
caoxiaozhu
|
06e7455630
|
feat(data-process): 接入重新生成配置流程
|
2026-07-25 22:41:06 +08:00 |
|
caoxiaozhu
|
396d3f6f47
|
feat(data-process): 支持任务重新生成
|
2026-07-25 22:40:55 +08:00 |
|
caoxiaozhu
|
64d7414b04
|
build(frontend): 更新跳转图标对齐构建
|
2026-07-25 22:00:23 +08:00 |
|