用途
SwanLab 是一个开源实验跟踪工具,本技能用于指导在机器学习实验中记录与可视化训练过程。适用场景包括:跟踪带有指标、配置、标签和描述的 ML 实验;通过标量图表和记录的媒体进行训练可视化;跨随机种子、检查点和超参数对比运行结果;在本地或自托管环境中工作,而不依赖托管式 SaaS;与 PyTorch、Transformers、PyTorch Lightning 或 Fastai 集成。
部署方式支持云端、本地或自托管。媒体类型支持图像、音频、文本、GIF、点云、分子。集成框架包括 PyTorch、Transformers、PyTorch Lightning、Fastai。
安装
安装 SwanLab 及本技能使用的媒体依赖:
pip install "swanlab>=0.7.11" "pillow>=9.0.0" "soundfile>=0.12.0"
为 mode="local" 和 swanlab watch 添加本地仪表盘支持:
pip install "swanlab[dashboard]>=0.7.11"
可选的框架集成:
pip install transformers pytorch-lightning fastai
云端或自托管使用需登录:
swanlab login
说明:pillow 和 soundfile 是本技能中 Image 与 Audio 示例使用的媒体依赖;swanlab[dashboard] 添加 mode="local" 和 swanlab watch 所需的本地仪表盘依赖。
主要能力
基础实验跟踪
通过 swanlab.init 初始化运行,设置 project、experiment_name、config 等参数,在训练循环中使用 swanlab.log 记录指标,最后调用 run.finish() 结束。
核心概念
- 项目与实验:项目是相关实验的集合,实验是训练或评估工作流的一次执行。可通过 description、tags、config 等参数描述实验,并访问 run.id、run.config 等属性。
- 配置跟踪:在 init 时传入 config 字典,之后可通过 run.config.learning_rate 等方式读取配置值。
- 指标记录:支持记录标量、多个指标,以及通过 step 参数指定自定义步数。
- 媒体与图表记录:支持记录图像(swanlab.Image)、音频(swanlab.Audio)、文本(swanlab.Text)、GIF 视频(swanlab.Video)、点云(swanlab.Object3D)、分子(swanlab.Molecule.from_smiles),以及通过 swanlab.echarts 创建自定义图表。
- 本地与自托管工作流:支持通过 swanlab.login 登录自托管或云端,通过 mode="local" 与 logdir 进行纯本地记录,使用 swanlab watch -l ./swanlog 查看本地日志,使用 swanlab sync ./swanlog 后续同步本地日志。
框架集成
- HuggingFace Transformers:在 TrainingArguments 中设置 report_to="swanlab" 与 run_name。
- PyTorch Lightning:使用 swanlab.integration.pytorch_lightning.SwanLabLogger 作为 Trainer 的 logger。
- Fastai:使用 swanlab.integration.fastai.SwanLabCallback 作为回调。
使用方式
基本流程为:安装依赖 → 登录(云端或自托管)→ 在代码中 swanlab.init 初始化 → 训练循环中 swanlab.log 记录 → run.finish() 结束。本地模式使用 mode="local" 与 logdir,之后用 swanlab watch 查看。
最佳实践
- 使用稳定的指标名称,采用分组命名空间(如 train/loss、val/loss),避免同一指标族混用扁平与分组名称。
- 尽早初始化并一次性捕获配置。
- 本地保存检查点,并通过 swanlab.Text 记录检查点路径。
- 离线优先工作流使用本地模式。
- 高级模式保留在参考文档中:references/visualization.md 用于高级图表与媒体模式,references/integrations.md 用于基于回调及框架特定的集成细节。
适用场景与限制
适用于需要开源运行跟踪、本地或自托管仪表盘、轻量级媒体记录的场景。支持云端、本地或自托管部署。关于收费、价格、平台限制等具体信息,资料中暂未提供。