Skip to content

[BUG] Ctrl+C 中断训练后,SwanLab 实验未自动关闭,导致数据丢失风险 #1261

@laoshuaib

Description

@laoshuaib

🐛 Bug description

使用 SwanLabLogger 集成 PyTorch Lightning 进行训练时,如果用户通过 Ctrl+C 中断训练进程,SwanLab 实验不会被自动关闭。这会导致:

  • 实验在 Web UI 中持续显示为“运行中”状态。
  • 缓冲区中的日志和指标数据可能丢失,无法上传到云端。
  • 资源未被正确释放。

我并不熟悉该领域,但我查看源码感觉或许该问题的根本原因在于 SwanLabLoggerfinalize 方法实现不完整,且 SwanLab SDK 缺少像 atexit 或信号处理器这样的兜底机制来处理非正常退出。


🧑‍💻 Step to reproduce

  1. 参考官方文档,使用 SwanLabLogger 初始化一个 PyTorch Lightning Trainer
    from swanlab.integration.pytorch_lightning import SwanLabLogger
    import pytorch_lightning as pl
    
    logger = SwanLabLogger(project="test-interrupt")
    trainer = pl.Trainer(max_epochs=10, logger=logger) # 设置一个较长的epoch以便中断
  2. 启动训练:trainer.fit(model, datamodule)
  3. 在训练过程中,按下 Ctrl+C 中断程序。
  4. 登录 SwanLab Web 控制台,查看名为 test-interrupt 的项目。

👾 Expected result

  • 即使训练被 Ctrl+C 中断,实验也应在 Web UI 中被标记为“已中断”或“失败”,而不是“运行中”。
  • 所有在中断前已记录的日志和指标应被完整上传。
  • 系统资源应被正确释放。

Metadata

Metadata

Assignees

No one assigned

    Labels

    🐛 bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions