Skip to content

FedGuardLab v1.1.0-beta.2

Choose a tag to compare

@Calvin1989 Calvin1989 released this 31 May 03:09
· 279 commits to main since this release
0764cf0

FedGuardLab v1.1.0-beta.2

本次 beta 版本为 FedGuardLab 引入后台任务执行能力,并完成 WebSocket 与训练执行逻辑的解耦。

在此前版本中,实验训练主要由 WebSocket 连接触发和驱动。该设计适合早期 demo,但页面刷新、WebSocket 断开或前端状态变化可能影响实验执行。本版本将训练执行从 WebSocket 中拆出,改为由 POST /run 创建 job 后启动后台 runner,WebSocket 只负责订阅已有 job 的实时指标和生命周期事件。

该版本仍建议标记为 Pre-release。


主要更新

后台任务执行

  • 新增 api/runner.py,实现轻量级后台 job runner。
  • POST /run 创建 job 后立即启动后台训练任务。
  • 后台 runner 会独立执行 run_experiment(config)。
  • 不连接 WebSocket 时,实验仍会继续训练并更新 job 状态。
  • 实验完成后仍会生成报告并保存到 reports/jobs/{job_id}/。

WebSocket 解耦

  • WebSocket /ws/{job_id} 不再启动训练。
  • WebSocket 现在只负责订阅已有 job 的 metrics 和 lifecycle events。
  • WebSocket 连接建立后会先回放 job 已有 metrics。
  • WebSocket 断开不会再影响后台训练。
  • 页面刷新后重新连接,可以继续查看已有 job 指标。

取消机制增强

  • JobStore 新增 cancel_requested 字段。
  • JobStore 新增:
    • request_cancel(job_id)
    • is_cancel_requested(job_id)
  • POST /jobs/{job_id}/cancel 会设置 cancellation request。
  • 后台 runner 会在训练循环中检查取消状态。
  • WebSocket subscriber 会收到 {"event": "cancelled"}。
  • 前端已支持处理 cancelled event。

前端更新

  • 前端 WebSocket 支持处理 cancelled event。
  • 收到取消事件时,不会将任务当成 error。
  • 取消任务不会生成报告,也不会加入 comparison history。

文档更新

  • README 更新后台执行说明。
  • docs/development.md 增加后台任务执行说明。
  • docs/experiments.md 更新实验生命周期说明。
  • docs/roadmap.md 增加 v1.1.0-beta.2 方向和后续计划。

本地验证

已完成以下验证:

ruff check .
python quick_test.py