FedGuardLab v1.1.0-beta.2
·
279 commits
to main
since this release
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"}。 - 前端已支持处理
cancelledevent。
前端更新
- 前端 WebSocket 支持处理
cancelledevent。 - 收到取消事件时,不会将任务当成 error。
- 取消任务不会生成报告,也不会加入 comparison history。
文档更新
- README 更新后台执行说明。
docs/development.md增加后台任务执行说明。docs/experiments.md更新实验生命周期说明。docs/roadmap.md增加 v1.1.0-beta.2 方向和后续计划。
本地验证
已完成以下验证:
ruff check .
python quick_test.py