夜雨聆风学习资料网

ARTICLE · 1304519

开源、轻量 AI 训练记录与可视化工具SwanLab

开源、轻量 AI 训练记录与可视化工具SwanLab

开源、轻量的深度学习实验跟踪平台,对标 Weights & Biases(wandb),主打中文生态与零门槛接入。


一、SwanLab 是什么

SwanLab 是一个开源的 AI 训练记录与可视化工具,覆盖"训练日志记录 → 曲线可视化 → 实验对比 → 团队协作"的完整流程。它解决的核心痛点很直接:

深度学习实验太多、太散,光靠 stdout 和翻终端历史根本管理不过来。

  • 项目地址:https://github.com/SwanHubX/SwanLab
  • 官网:https://swanlab.cn
  • 安装:pip install swanlab
  • 支持云端托管、私有化部署、纯离线三种使用模式

一句话定位:像 wandb 一样好用的实验面板,但对国内网络环境和中文团队更友好。


二、对比 wandb

对比维度
wandb
SwanLab
国内访问
需代理,服务端偶发 403/超时
国内直连,速度快
中文界面
英文
中文
断网/服务端异常
同步重试会拖慢训练步
本地缓存,训练不受影响
接入成本
pip install wandb
 + API key
pip install swanlab
 + swanlab login
transformers 集成
原生
原生(report_to="swanlab",需 transformers ≥ 4.38)
HF Trainer / PyTorch Lightning / Accelerate
支持
支持
私有化部署
收费
开源免费
价格
免费版有限制
个人免费

wandb 服务端异常时,同步重试会拖慢训练;403 错误更是直接让 wandb.init 抛异常、训练退出。换成 SwanLab 后这类网络问题不再阻塞训练。


三、快速上手

1. 安装与登录

pip install swanlabswanlab login          # 浏览器跳转获取 API key# 或者用环境变量:export SWANLAB_API_KEY=xxxxxxxx

不想注册账号?直接用离线模式,日志全落本地:

export SWANLAB_MODE=local

2. 三行代码记录训练

import swanlabswanlab.init(    project="my-project",    config={"lr": 1e-4, "epochs": 4},   # 超参会记录并可在面板对比)for epoch in range(4):    loss = train_one_epoch()    swanlab.log({"loss": loss})swanlab.finish()

3. 在 transformers Trainer 中接入

from transformers import TrainingArgumentsargs = TrainingArguments(    ...,    report_to="swanlab",   # wandb 换成 swanlab,就这一个词)

Trainer 会自动记录:loss、learning_rate、epoch、eval_loss、自定义评估指标、训练结束统计(train_runtime 等),面板自动分组、自动对比。


四、记录内容与可视化能力

标量指标

训练全程的 loss / lr / 自定义指标自动成图。面板上能直接看到:

阶段
指标
训练中
loss
、learning_rate、epoch
每次 eval
eval_loss
结束时
train_runtime
、train_samples_per_second、train_loss、total_flos

富媒体记录

swanlab.log({"predictions": swanlab.Text("| step | pred |\n|---|---|")})swanlab.log({"confusion_matrix": swanlab.Image(plt)})swanlab.log({"audio": swanlab.Audio(path)})

支持 Text(Markdown 表格)、Image、Audio、Video、Histogram。

实验对比

面板勾选多个实验,config 不同的维度自动高亮,曲线叠加对比。调参时回答"dropout 0.05 和 0.1 哪个好"这类问题,不再需要翻终端日志。

断点续训

swanlab.init(resume="must") 可以接上之前的实验继续记录,训练中断后曲线不断档。

注意事项

  1. transformers ≥ 4.38
     才有 report_to="swanlab" 集成,旧版本会静默不记录。
  2. 多卡下必须只在 rank0 初始化,否则每个进程各建一个实验,面板上出现四份重复曲线。
  3. wandb 专属的样本 Table 逻辑(wandb.Table)不能直接复用,需换成 swanlab.Text。
  4. 断网时云端模式会本地缓存,恢复后自动上传;完全无外网就用 SWANLAB_MODE=local。

五、适用场景总结

适合:

  • 国内服务器 / 公司内网,访问 wandb 不稳定或被墙
  • 中文团队的协作实验管理
  • 想要私有化部署、数据不出内网
  • 已经在用 transformers Trainer,想一行代码切换实验跟踪

暂时不适合:

  • 强依赖 wandb 生态(Sweeps 超参搜索、Artifacts 数据版本管理)的重度用户——SwanLab 这些功能还在补齐
  • 团队已有成熟的 MLflow / TensorBoard 工作流且没有痛点

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料