SwanLab 实验日志拉取
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_b89370e4/swanlog。
技能介绍
要解决什么问题
训练任务跑在 SwanLab 云端后,指标、配置和 run 元数据分散在 WebUI 与 API 里。你在本地对话或脚本里往往只需要:这次 run 是谁、记录了哪些标量、当前最新一步的 loss/acc 是多少、完整 dump 落在哪。手工登录网页翻曲线,或自己拼 API + 解析 CSV,既慢又容易漏键名。
技能如何工作
本技能是对 scripts/fetch_swanlog.py 的薄封装:由脚本处理 认证、SwanLab API 调用、profile 提取,并在输出目录写入约定格式的 brief.md 与 metrics.csv 等文件;你的职责是用正确参数调用脚本,再把 brief.md 里的结论用简短中文说明给用户。
典型调用逻辑:
- 默认:用户未指定实验 ID 时,拉取项目下 最新一次 run(
--latest)。 - 指定 run:用户给出
--exp-id时,与--latest互斥,只拉该实验。 - 输出目录:可用
-o指定;否则写入当前工作目录下的swanlog_<run>/(目录名由 run 的created_at决定,同一 run 重复拉取会覆盖,便于刷新仍在进行的实验)。 - 指标键:脚本会 自动枚举该 run 实际记录过的所有标量 并全部拉取;仅当用户明确要求子集时才传
--keys "k1,k2,..."。
成功退出后,以 brief.md 为契约 向用户汇报:run 元数据、各标量最新非 NaN 值及对应 step、metrics.csv 的行列规模,并给出输出目录的绝对路径。标量很多时可只突出 train/loss、val 相关及对话中用户点名的项;图像/音频/文本类 artifact 不会进 CSV,需要时引导用户看 brief 中的 WebUI 链接。
脚本非零退出时,应原样展示 stderr 末尾并给出对应提示(如 auth/401 → swanlab login,缺依赖 → 安装 swanlab/pandas/omegaconf,项目无实验或 ID 404 等)。
边界与注意
- 只读:不启动训练、不改配置、不删 run、不向云端推送任何内容。
- 不绑定特定 ML 框架或本地目录结构,任意 SwanLab 项目均可。
- 若未指定项目且环境变量
SWANLAB_PROJECT未设置,需向用户确认一次项目名。
使用场景
- 远端训练仍在 SwanLab 上报标量时,在终端或 Agent 里执行拉取最新 run,核对 train/val loss 对应 step。
- 同事只提供 SwanLab 实验 ID,需把该 run 的 metrics 与 brief 落到本地目录再写实验记录或对比。
- 复盘某次训练前,要从云端导出该 run 实际记录过的全部标量列,而不是在 WebUI 里逐个找键名。
- 本地对话里被问到「这次云端 run 最新指标多少」,需按项目拉取并依据 brief.md 给出路径与关键标量。
适合人员
- 已将训练脚本接入 SwanLab、常在命令行或 IDE 里核对 loss/acc 而非只开网页的算法工程师
- 需要根据同学给的 exp-id 复现实验、拉全量标量 CSV 写进 lab notebook 的研究生或 research engineer
- 集群上的 job 还在跑,需对同一 run 重复拉取刷新 metrics 目录的 MLOps 或平台维护同学
- 在 Cursor 等 Agent 里追问云端实验结果、希望脚本处理认证与 API 的应用机器学习开发者