跳转到内容

Web 控制台

Web UI 由 gpuctl-server 静态托管(默认 :8600),是给人看的观测面: Agent 走 MCP,人走浏览器,两者读的是同一份数据。 下面按页面说明各自能做什么。截图来自一个演示环境:单机 RTX 4090, 项目 qwen-sft 下有一次完成的 baseline、一次正在跑的 lr-sweep、一个排队的作业和一次 OOM 失败。

所有训练曲线由同一套图表面板渲染,交互与 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

  • 顶部卡片:在线节点、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 列表

Runs 列表按实验归组展示所有观测单位(含 SDK 自注册和 import 的历史 run), 带进度条与 primary metric 的 best/latest 两列。点击进入 run 详情,五个标签页:

Run 详情 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 曲线

每个指标一张 ChartPanel(交互见上)。图中这条 eval/loss 在 step 1200 后重新抬头、 而 train/loss 仍在下降——典型的过拟合形态,EventDetector 也正是据此发出了 OVERFITTING_SUSPECTED 预警。

Checkpoints 与推荐

本 run 注册的全部 checkpoint(step / epoch / 大小 / 路径)。顶部横幅是 get_best_checkpoint推荐结果:这里推荐的是 step-1000——因为它挂着评估结果 ([held-out evaluation]),比训练期 best 值更可信。每行末尾的 evaluate 按钮 可直接为该 checkpoint 排一个评估作业。

Evaluations

评估记录:指标、suite、耗时、对应的评估 job。评估是回挂在 checkpoint 上的一等记录, 不是散落在日志里的文本。

该 run 的全部生命周期与异常事件(见下文 Events 页)。

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

从 Runs 列表或实验工作区勾选多个 run 进入 Compare(URL 形如 /#/compare?runs=a,b, 可直接分享):

  • 同一指标的多 run 叠加曲线(下拉切换指标,★ 标记 primary;运行中的 run 实时更新);
  • 取数走批量端点 POST /runs/metrics:query,不再有 N+1 请求;
  • 下方表格按 primary metric 排序并标出 best——扫参(lr sweep)场景一页出结论。

Jobs

调度视角的任务列表:状态徽章(RUNNING/QUEUED/FAILED/SUCCEEDED)、优先级、 attempt 次数、命令、耗时。右上 + submit job 可在浏览器里直接提交; FAILED 任务有 retry 按钮(同 id、attempt+1),RUNNING/QUEUED 任务可 cancel。 写操作按钮(submit/retry/cancel)对 read scope 的 token 一律隐藏——界面随 GET /auth/whoamican_write 自适应。

Nodes

每台 agent 主机一张卡片:GPU 型号/显存、CPU/内存、实时利用率与显存条、心跳时间。 心跳超过 90 秒未更新,节点自动标记 OFFLINE,其上的 RUNNING 作业进入恢复流程。

Events

全系统事件的统一时间线:生命周期(JOB_QUEUED / RUN_STARTED / CHECKPOINT_CREATED…) 与异常(OOM / LOSS_NAN / OVERFITTING_SUSPECTED…),按严重度着色, 可按 run / job / node 过滤。右上 live 开关通过 SSE 实时推送新事件。

排查问题时的时间线还原就靠它:谁先发生、谁紧随其后,比翻日志快得多。