SuperAPI AI 工具集

experiment-tracking-swanlab

数据与分析

查看项目

更新于 10-15 15:10

技能介绍

SwanLab 是一个开源实验跟踪工具。该技能用于在需要开源运行跟踪、本地或自托管仪表盘、以及轻量级媒体记录时,提供使用指导。

用途 适用场景包括:用指标、配置、标签和描述跟踪机器学习实验;用标量图表和记录的媒体可视化训练;对比不同随机种子、检查点和超参数下的运行;在本地或自托管环境中工作,而不依赖托管式 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 所需的本地仪表盘依赖。

使用方式 基本实验跟踪示例:

import swanlab

run = swanlab.init(
    project="my-project",
    experiment_name="baseline",
    config={
        "learning_rate": 1e-3,
        "epochs": 10,
        "batch_size": 32,
        "model": "resnet18",
    },
)

for epoch in range(run.config.epochs):
    train_loss = train_epoch()
    val_loss = validate()

    swanlab.log(
        {
            "train/loss": train_loss,
            "val/loss": val_loss,
            "epoch": epoch,
        }
    )

run.finish()

核心概念包括:项目(相关实验的集合)与实验(训练或评估工作流的单次执行);配置跟踪通过 config 传入并由 run.config 访问;指标记录通过 swanlab.log 记录标量、多个指标或自定义 step;媒体与图表记录支持 Image、Audio、Text、Video、Object3D、Molecule 以及 swanlab.echarts 自定义图表。

本地与自托管工作流:

import os
import swanlab

# 自托管或云端登录
swanlab.login(
    api_key=os.environ["SWANLAB_API_KEY"],
    host="http://your-server:5092",
)

# 仅本地记录
run = swanlab.init(
    project="offline-demo",
    mode="local",
    logdir="./swanlog",
)

swanlab.log({"loss": 0.35, "epoch": 1})
run.finish()

# 查看本地日志
swanlab watch -l ./swanlog

# 后续同步本地日志
swanlab sync ./swanlog

集成示例 HuggingFace Transformers:在 TrainingArguments 中设置 report_to="swanlab"。 PyTorch Lightning:使用 swanlab.integration.pytorch_lightning.SwanLabLogger 作为 pl.Trainer 的 logger。 Fastai:使用 swanlab.integration.fastai.SwanLabCallback 作为回调传入 learn.fit。 更多基于回调的设置和框架模式参见 references/integrations.md。

最佳实践

  1. 使用稳定的指标名称,如分组命名空间 train/loss、val/loss,避免同一指标族混用扁平与分组名称。
  2. 尽早初始化并一次性捕获配置。
  3. 本地保存检查点,如 torch.save 保存 best.pth,并将路径用 swanlab.Text 记录。
  4. 离线优先工作流使用局部模式 mode="local"。
  5. 高级模式保留在参考文档中:references/visualization.md 用于高级图表与媒体模式,references/integrations.md 用于基于回调与框架特定集成细节。

限制 资料未提供收费、价格、平台限制、效果保证等信息。