Web 控制台
Web UI 由 gpuctl-server 静态托管(默认 :8600),是给人看的观测面:
Agent 走 MCP,人走浏览器,两者读的是同一份数据。
下面按页面说明各自能做什么。截图来自一个演示环境:单机 RTX 4090,
项目 qwen-sft 下有一次完成的 baseline、一次正在跑的 lr-sweep、一个排队的作业和一次 OOM 失败。
图表交互(全站统一)
Section titled “图表交互(全站统一)”所有训练曲线由同一套图表面板渲染,交互与 W&B / TensorBoard 对齐:
- 精确读数:鼠标悬停出现十字线与悬浮框,同时显示该点的 step、相对时间、 墙钟时间,以及每条曲线的平滑值与(括号内)原始值。
- 平滑:面板右上滑杆做 EMA 平滑(TensorBoard 语义,0 = 原始曲线); 平滑开启时原始线以淡色衬底。
- 缩放:在曲线上拖拽框选放大,双击或 ⟲ 按钮复位。
- X 轴模式:
step / relative / wall三种坐标切换(相对时间/墙钟时间便于对齐多台机器)。 - 图例:点击显隐某条 run,Ctrl/⌘-点击隔离单条,悬停高亮。
- 每条 run 的颜色由 run id 哈希决定——同一个 run 在 Experiments、Compare、 Dashboard、Run 详情里颜色永远一致。
- 运行中的 run 通过 SSE 实时推点(
/runs/{id}/metrics/stream),曲线逐点生长, 另有 5 秒水位轮询兜底修复丢点。
Dashboard:舰队一览
Section titled “Dashboard:舰队一览”
- 顶部卡片:在线节点、GPU 占用、RUNNING / QUEUED 数、未处理告警数(critical 单独标红)。
- Alerts:EventDetector 最近的 warning/critical 事件(含 critical/warning 计数)。
- Active Runs:正在跑的 run——进度条、step/max_steps、primary metric 最新值, 以及该指标的实时 sparkline;点击直达 run 详情。
- Queue:排队中的前 5 个作业及其资源需求,方便判断何时有空位。
- Fleet:每张卡的利用率 / 显存条与心跳时间;卡变灰说明 agent 掉线。
打开 Dashboard 十秒钟,回答的就是“现在能不能再交一个任务?有没有任务需要我处理?”
Runs 与 Run 详情
Section titled “Runs 与 Run 详情”
Runs 列表按实验归组展示所有观测单位(含 SDK 自注册和 import 的历史 run), 带进度条与 primary metric 的 best/latest 两列。点击进入 run 详情,五个标签页:
Overview
Section titled “Overview”
- RUNNING 时 live 优先:顶部大进度条 + primary metric 实时曲线(SSE 逐点推送)、 最近 10 条事件、可展开的日志 tail。
- FAILED/LOST 时诊断优先:顶部出现失败诊断卡(
GET /runs/{id}/failure)—— likely cause、证据列表、suggested fixes。先按建议改配置,再点 retry; retry 按钮的提示也会提醒你这一点(同配置重试必然同样失败)。

- 其余:状态、step/epoch、每个指标的 latest / trend / best、config 与环境快照。
- 页头动作:experiment / job / node 直达链接;write token 可见 cancel(需确认)与 retry。
Metrics
Section titled “Metrics”
每个指标一张 ChartPanel(交互见上)。图中这条 eval/loss 在 step 1200 后重新抬头、
而 train/loss 仍在下降——典型的过拟合形态,EventDetector 也正是据此发出了
OVERFITTING_SUSPECTED 预警。
Checkpoints
Section titled “Checkpoints”
本 run 注册的全部 checkpoint(step / epoch / 大小 / 路径)。顶部横幅是
get_best_checkpoint 的推荐结果:这里推荐的是 step-1000——因为它挂着评估结果
([held-out evaluation]),比训练期 best 值更可信。每行末尾的 evaluate 按钮
可直接为该 checkpoint 排一个评估作业。
Evaluations
Section titled “Evaluations”
评估记录:指标、suite、耗时、对应的评估 job。评估是回挂在 checkpoint 上的一等记录, 不是散落在日志里的文本。
Events
Section titled “Events”该 run 的全部生命周期与异常事件(见下文 Events 页)。
Experiments:实验工作区
Section titled “Experiments:实验工作区”
列表页是实验的管理视图:每个实验一行,展示 run 状态计数(running/succeeded/failed)、 primary metric 的 best 值、最近活跃时间;顶部项目筛选 chips + 搜索,URL 可分享。 “create” 区就地创建项目与实验;指标方向与 primary metric 的三级继承 (experiment 覆盖 project 覆盖 global)收进右上 ⚙ metric definitions 抽屉里管理。
点进某个实验即进入分析工作区:

- primary metric 面板置顶通栏(★ 标记 + 方向说明),其余指标两列网格排布, “+ add metric panel” 随时加面板;
- 平滑、X 轴模式、选中的 run、面板列表全部编码在 URL
(
?metrics=&runs=&smooth=&x=)——把链接贴给同事,他看到的就是你看到的; - 下方 runs 表按 primary metric 排序:勾选控制哪些 run 进图(颜色与曲线一一对应)、 best 徽章、进度条;勾选 ≥2 个出现 “compare selected →” 直达 Compare 页。
Compare:多 run 叠加对比
Section titled “Compare:多 run 叠加对比”
从 Runs 列表或实验工作区勾选多个 run 进入 Compare(URL 形如 /#/compare?runs=a,b,
可直接分享):
- 同一指标的多 run 叠加曲线(下拉切换指标,★ 标记 primary;运行中的 run 实时更新);
- 取数走批量端点
POST /runs/metrics:query,不再有 N+1 请求; - 下方表格按 primary metric 排序并标出 best——扫参(lr sweep)场景一页出结论。
Jobs:调度队列
Section titled “Jobs:调度队列”
调度视角的任务列表:状态徽章(RUNNING/QUEUED/FAILED/SUCCEEDED)、优先级、
attempt 次数、命令、耗时。右上 + submit job 可在浏览器里直接提交;
FAILED 任务有 retry 按钮(同 id、attempt+1),RUNNING/QUEUED 任务可 cancel。
写操作按钮(submit/retry/cancel)对 read scope 的 token 一律隐藏——界面随
GET /auth/whoami 的 can_write 自适应。
Nodes:机器与 GPU
Section titled “Nodes:机器与 GPU”
每台 agent 主机一张卡片:GPU 型号/显存、CPU/内存、实时利用率与显存条、心跳时间。 心跳超过 90 秒未更新,节点自动标记 OFFLINE,其上的 RUNNING 作业进入恢复流程。
Events:事件流
Section titled “Events:事件流”
全系统事件的统一时间线:生命周期(JOB_QUEUED / RUN_STARTED / CHECKPOINT_CREATED…) 与异常(OOM / LOSS_NAN / OVERFITTING_SUSPECTED…),按严重度着色, 可按 run / job / node 过滤。右上 live 开关通过 SSE 实时推送新事件。
排查问题时的时间线还原就靠它:谁先发生、谁紧随其后,比翻日志快得多。