面向深度学习研究者的本地实验管理工具:自动记录每次运行的代码改动 + 解析训练日志并绘图 + MiniMax M3 大模型智能分析。 深色科技风 UI,单进程部署,即开即用。
| 模块 | 说明 |
|---|---|
| 📦 代码版本管理 | 打开项目自动检测 vs 上次运行的改动(git 优先,无 git 项目自动初始化);记录运行时自动 commit + 轻量 tag run-<id>;git archive 一键导出任意运行时刻的完整代码包 |
| 📈 训练日志解析 | 上传文本日志自动提取指标曲线(loss/acc/iou/lr…)、阶段划分(train/val)、最佳结果;支持用户自定义正则;JSONL 兜底 |
| 🤖 LLM 智能分析(MiniMax M3) | 代码改动解释 / 日志趋势分析(异常检测、过拟合信号、建议)/ 双运行差异对比,支持多轮对话追问;结果缓存,重复查看零成本 |
| 📊 可视化 | ECharts 深色霓虹风格曲线(发光 + 渐变面积);三种轴视图(真实步数 / 轮次对齐 / 每轮聚合);5 万点 LTTB 降采样保持流畅 |
| 🗂️ 实验管理 | 运行列表(标签/收藏/最佳标记/数据集自动识别)、markdown 备注、配置与环境快照(可复现)、报告导出、代码包下载 |
| 🔍 检索与对比 | 全局搜索(运行名/备注/标签);双运行指标叠加对比 + 0-1 归一化 + AI 差异分析 |
- Python ≥ 3.13(uv 包管理器)
- Node.js ≥ 20
# 1. 克隆或下载本项目
git clone https://github.com/onlyFish3051/experiment-hub.git && cd experiment-hub
# 2. 安装 Python 依赖(需要 uv:pip install uv)
uv sync
# 3. 安装并构建前端(仅首次)
(cd web && npm install && npm run build)
# 4. 启动(浏览器访问 http://127.0.0.1:8000)
./run.sh开发模式:后端
uv run uvicorn app.main:app --reload --port 8000,前端cd web && npm run dev(Vite 自动代理 /api 到 8000)。
- 打开「设置」页
- 填入 API Key(订阅版 Key,
sk-cp-开头,国内平台 platform.minimaxi.com) - API 地址默认
https://api.minimaxi.com/v1(OpenAI 兼容协议,可改) - 点「测试连接」验证
1. 新建项目
├─ 本地项目:填代码路径(自动检测 git)
└─ 云端训练:路径留空,建「纯上传项目」
2. 训练完成后 → 项目页 → 「记录本次运行」
├─ ① 命名:如 bs16_ep45_attnres_asymwin
├─ ② 上传日志:自动解析出曲线与最佳结果
│ (云端场景可同时多选上传改动过的代码文件)
└─ ③ 提交代码:自动 git commit + 打标签 run-<id>
3. 查看与分析
├─ 曲线:逐步/对齐/聚合三种视图
├─ AI 分析:日志趋势分析 / 代码改动解释
└─ 对比页:叠加两次运行曲线 + 对话追问
| 页面 | 功能 |
|---|---|
| 总览 | 统计瓦片(项目/运行/本周/最佳 mIoU 带数据集标注)、各项目最佳、近期运行表(loss 迷你曲线) |
| 项目列表 | 项目卡片(git 徽标、运行数、上次运行时间) |
| 项目详情 | 「记录本次运行」四步流程、代码改动面板(Diff 高亮)、运行时间线、项目设置(忽略规则/解析正则) |
| 运行详情 | 指标曲线(3 种视图 + 放大)、指标汇总表、代码变更、日志原文(懒加载 + 搜索)、AI 分析、复现信息(命令/环境/配置快照)、备注(markdown + 标签) |
| 对比 | 双运行曲线叠加(0-1 归一化)、指标对比表、AI 差异分析、多轮对话提问 |
| 设置 | MiniMax 配置(base_url/model/key/测试连接)、全局解析正则、数据库备份 |
| 想做什么 | 怎么做 |
|---|---|
| 标记重要实验 | 运行详情页「标记最佳」/「收藏」 |
| 给实验分类 | 运行详情页头部标签框(自动保存),上传日志自动打 ep45、lr4e-4 基础标签 |
| 快速找实验 | 顶栏搜索(名字/备注/标签) |
| 回到某次实验的代码 | git checkout run-3 |
| 下载某次实验的代码 | 运行详情页「下载代码」(zip) |
| 导出实验报告 | 运行详情页备注 tab →「导出 Markdown 报告」 |
experiment-hub/
├── app/ # Python 后端(FastAPI)
│ ├── main.py # 应用入口:API 路由 + 前端静态托管
│ ├── models.py # SQLAlchemy 数据模型(项目/运行/变更/分析缓存/设置)
│ ├── routers/ # projects / runs / compare / settings / tags / search
│ └── services/
│ ├── git_engine.py # git 包装器:扫描/diff/commit/tag/快照/git archive
│ ├── log_parser.py # 日志解析器(自动检测指标/阶段/最佳结果)
│ ├── llm_client.py # MiniMax M3 客户端(重试/缓存/上下文预算)
│ ├── prompts.py # 分析 prompt 模板
│ └── dataset.py # 数据集自动识别(防误判设计)
├── web/ # React 前端(Vite + TS + Tailwind + ECharts)
└── docs/ # 使用教程 / 界面截图
- git 安全策略:只在「记录运行」时写仓库(add → commit → 轻量 tag),绝不 push、绝不修改用户 .gitignore 与 remote;忽略规则通过应用自有
core.excludesFile生效 - 日志解析两阶段:Stage A 自动检测(指标行判定谓词 + 括号/空格/冒号三种键值格式 + 阶段与轴推断),Stage B 用户自定义正则;严格浮点谓词拒绝模型 repr 等噪声行
- LLM 上下文预算:diff 只送变更文件(≤200 行/文件)、曲线降采样 ≤2000 点/指标、对话历史保留最近 10 条;结果按 prompt 哈希缓存,重复查看不扣费
- 图表对齐:训练/验证每轮步数不同(如 1195 vs 4071)时,提供轮次归一化对齐视图,趋势对比不失真
- 数据集识别:只信权威线索(dataset/dataroot 等键),不扫任意字符串,避免
pretrained_model: ...cityscapes_timm.pth误判
uv run pytest app/tests -q # 13 个用例覆盖:解析器(真实日志 fixture 真值校验,Best Result 误差 < 1e-6)、全流程 API(建项目→扫描→记录→commit+tag→对比)、LLM 缓存与错误路径。
Q:记录运行后我的仓库发生了什么?
新增一个 commit(experiment-hub: 记录运行 <名字> (#<id>))+ 轻量 tag run-<id>,工作区恢复干净。要回退:git checkout run-3。
Q:日志里的指标没解析出来? 项目设置 → 日志解析正则,写自定义正则(JSON 数组,见界面提示),保存后回运行详情「用当前正则重新解析」。
Q:AI 分析报余额不足?
订阅 Key 是 sk-cp- 开头(普通 API Key 会报 insufficient balance)。检查 Token Plan 是否分配了席位/额度。
Q:数据存在哪?
~/.experiment-hub/(数据库 + 日志 + 快照 + 上传文件),可用环境变量 EXPERIMENT_HUB_HOME 覆盖;设置页可一键备份数据库。
FastAPI · SQLAlchemy · SQLite(WAL)· React 18 · TypeScript · Vite · Tailwind CSS · ECharts · MiniMax M3(OpenAI 兼容)· git
MIT License(添加 LICENSE 文件前请确认)









