SwanLab

SwanLab

开源AI实验跟踪工具 支持多框架集成及云端协作

SwanLab是一款开源的AI实验跟踪工具,支持跟踪超参数、记录指标、在线协作和分享实验链接。该工具可与PyTorch、TensorFlow等主流框架集成,同时支持离线模式和自托管。SwanLab提供用户友好的API和直观界面,适用于个人研究和团队项目,能够帮助研究人员高效管理、比较和协作AI实验。

SwanLab实验跟踪机器学习可视化协作Github开源项目

概览

<p align="center"> <a href="https://swanlab.cn">🔥SwanLab云端</a> · <a href="https://docs.swanlab.cn">📃文档</a> · <a href="https://geektechstudio.feishu.cn/wiki/NIZ9wp5LRiSqQykizbGcVzUKnic">微信</a> · <a href="https://github.com/swanhubx/swanlab/issues">报告问题</a> · <a href="https://geektechstudio.feishu.cn/share/base/form/shrcnyBlK8OMD0eweoFcc2SvWKc">反馈</a> · <a href="https://docs.swanlab.cn/zh/guide_cloud/general/changelog.html">更新日志</a> </p> <p align="center"> <a href="https://github.com/SwanHubX/SwanLab/blob/main/LICENSE"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b59a0bfb-4d40-4bc8-8d02-88d5b732f46f.svg?color=brightgreen" alt="许可证"></a> <a href="https://github.com/SwanHubX/SwanLab/commits/main"><img src="https://img.shields.io/github/last-commit/SwanHubX/SwanLab" alt="最后提交"></a> <a href="https://pypi.python.org/pypi/swanlab"><img src="https://img.shields.io/pypi/v/swanlab?color=orange" alt="版本" /></a> <a href="https://pepy.tech/project/swanlab"><img alt="pypi 下载量" src="https://static.pepy.tech/badge/swanlab"></a> <a href="https://github.com/swanhubx/swanlab/issues"><img alt="问题" src="https://img.shields.io/github/issues/swanhubx/swanlab"></a> <br> <a href="https://swanlab.cn" target="_blank"> <img alt="静态徽章" src="https://img.shields.io/badge/产品-SwanLab云端版-636a3f"></a> <a href="https://geektechstudio.feishu.cn/wiki/NIZ9wp5LRiSqQykizbGcVzUKnic" target="_blank"> <img alt="静态徽章" src="https://img.shields.io/badge/WeChat-微信-4cb55e"></a> <a href="https://colab.research.google.com/drive/1RWsrY_1bS8ECzaHvYtLb_1eBkkdzekR3?usp=sharing"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/c6d782cf-72c4-498e-b7c5-55df282978c6.svg" /></a> </p> <div align="center"> <a href="./README.md"><img alt="英文文档" src="https://img.shields.io/badge/English-d9d9d9"></a> <a href="./README_cn.md"><img alt="中文文档" src="https://img.shields.io/badge/简体中文-d9d9d9"></a> </div> <details> <summary>目录</summary>

目录

<br/> </details>

👋🏻 简介

SwanLab是一个开源、轻量级的AI实验跟踪工具,提供了一个用于跟踪、比较和协作实验的平台。

它提供了用户友好的API和decent的界面,结合了跟踪超参数、记录指标、在线协作和分享实验链接等功能。

以下是AI平台核心功能列表的中文版本:

1. 📊 实验指标和超参数跟踪:使用简洁的代码嵌入您的机器学习流程,并跟踪关键训练指标。

  • 灵活记录超参数和实验配置。
  • 支持的元数据类型:标量指标、图像、音频、文本等。
  • 支持的图表类型:线图、媒体图表(图像、音频、文本)等。
  • 自动记录:控制台日志、GPU硬件信息、Git信息、Python解释器、Python库列表、代码目录。

2. ⚡️ 综合框架集成:PyTorch、Tensorflow、PyTorch Lightning、🤗HuggingFace、Transformers、MMEngine、Ultralytics、fastai、Tensorboard、OpenAI、ZhipuAI、Hydra、...

3. 📦 组织实验:集中式仪表板,高效管理多个项目和实验,一目了然地概览训练情况。

4. 🆚 比较结果:使用在线表格和配对图表比较不同实验的超参数和结果,启发迭代灵感。

5. 👥 在线协作:与团队成员在训练项目上协作,支持同一项目下实验的实时同步,让您能在线同步团队的训练记录,并基于结果分享见解和建议。

6. ✉️ 分享结果:复制并发送持久性URL以分享每个实验,高效地发送给同事,或嵌入在线笔记中。

7. 💻 自托管支持:支持离线模式,提供自托管社区版,同样允许查看仪表板和管理实验。

[!重要]

为我们点星,您将及时收到来自GitHub的所有发布通知 ~ ⭐️

为我们点星

<br>

📃 演示

查看SwanLab的在线演示:

ResNet50 猫狗分类Yolov8-COCO128
<a href="https://swanlab.cn/@ZeyiLin/Cats_Dogs_Classification/runs/jzo93k112f15pmx14vtxf/chart"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0b29a0b8-c98a-4a58-954a-39e4592b2752.png"> </a><a href="https://swanlab.cn/@ZeyiLin/ultratest/runs/yux7vclmsmmsar9ear7u5/chart"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/f07152fd-9f92-4ad7-a4fe-5aae51decaa3.png"> </a>
跟踪在猫狗数据集上训练简单ResNet50模型的图像分类任务。使用Yolov8在COCO128数据集上执行目标检测任务,跟踪训练超参数和指标。
Qwen2指令微调LSTM谷歌股票预测
<a href="https://swanlab.cn/@ZeyiLin/Qwen2-fintune/runs/cfg5f8dzkp6vouxzaxlx6/chart"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/b3e334f6-317f-4fdc-be12-a3c6e93d8035.png"> </a><a href="https://swanlab.cn/@ZeyiLin/Google-Stock-Prediction/charts"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/5f3db686-6230-4f78-8e75-80975d022ebd.png"> </a>
跟踪Qwen2大语言模型的指令微调训练,完成简单的指令遵循。在谷歌股价数据集上训练简单的LSTM模型,预测未来股价。

更多示例

<br>

🏁 快速开始

1.安装

pip install swanlab

2.登录并获取API密钥

  1. 免费注册

  2. 登录您的账户,进入用户设置 > API密钥并复制您的API密钥。

  3. 打开终端并输入

swanlab login

当提示时,输入您的API密钥并按回车完成登录。

3. 将SwanLab集成到您的代码中

import swanlab # 创建一个新的SwanLab实验 swanlab.init( project="my-first-ml", config={'learning-rate': 0.003} ) # 记录指标 for i in range(10): swanlab.log({"loss": i})

一切就绪! 访问SwanLab查看您的第一个SwanLab实验。

MNIST

<br>

💻 自托管

社区版支持离线查看SwanLab仪表板。

离线实验追踪

在swanlab.init中设置参数logdirmode以进行离线实验追踪:

... swanlab.init( logdir='./logs', mode='local', ) ...
  • 参数mode设置为local,这会禁用将实验同步到云端。

  • 参数logdir的设置是可选的,它指定了保存SwanLab日志文件的位置(默认保存在swanlog文件夹中)。

  • 在追踪实验过程中会创建和更新日志文件,启动离线仪表板也将基于这些日志文件。

其他部分与云端使用完全一致。

打开离线仪表板

打开终端并使用以下命令来打开SwanLab仪表板:

swanlab watch ./logs

操作完成后,SwanLab将为您提供一个本地URL链接(默认为http://127.0.0.1:5092)。

访问此链接即可在浏览器仪表板中离线查看实验。

<br>

🚗 集成

将您喜欢的框架与SwanLab结合,更多集成

<details> <summary> <strong>⚡️ PyTorch Lightning</strong> </summary> <br>

使用SwanLabLogger创建一个实例,并将其传递给Trainerlogger参数,以使SwanLab能够记录训练指标。

from swanlab.integration.pytorch_lightning import SwanLabLogger import importlib.util import os import pytorch_lightning as pl from torch import nn, optim, utils from torchvision.datasets import MNIST from torchvision.transforms import ToTensor encoder = nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 3)) decoder = nn.Sequential(nn.Linear(3, 128), nn.ReLU(), nn.Linear(128, 28 * 28)) class LitAutoEncoder(pl.LightningModule): def __init__(self, encoder, decoder): super().__init__() self.encoder = encoder self.decoder = decoder def training_step(self, batch, batch_idx): # training_step定义了训练循环。 # 它独立于forward x, y = batch x = x.view(x.size(0), -1) z = self.encoder(x) x_hat = self.decoder(z) loss = nn.functional.mse_loss(x_hat, x) # 默认记录到TensorBoard(如果已安装) self.log("train_loss", loss) return loss def test_step(self, batch, batch_idx): # test_step定义了测试循环。 # 它独立于forward x, y = batch x = x.view(x.size(0), -1) z = self.encoder(x) x_hat = self.decoder(z) loss = nn.functional.mse_loss(x_hat, x) # 默认记录到TensorBoard(如果已安装) self.log("test_loss", loss) return loss def configure_optimizers(self): optimizer = optim.Adam(self.parameters(), lr=1e-3) return optimizer # 初始化自动编码器 autoencoder = LitAutoEncoder(encoder, decoder) # 设置数据 dataset = MNIST(os.getcwd(), train=True, download=True, transform=ToTensor()) train_dataset, val_dataset = utils.data.random_split(dataset, [55000, 5000]) test_dataset = MNIST(os.getcwd(), train=False, download=True, transform=ToTensor()) train_loader = utils.data.DataLoader(train_dataset) val_loader = utils.data.DataLoader(val_dataset) test_loader = utils.data.DataLoader(test_dataset) swanlab_logger = SwanLabLogger( project="swanlab_example", experiment_name="example_experiment", cloud=False, ) trainer = pl.Trainer(limit_train_batches=100, max_epochs=5, logger=swanlab_logger) trainer.fit(model=autoencoder, train_dataloaders=train_loader, val_dataloaders=val_loader) trainer.test(dataloaders=test_loader)
</details> <details> <summary> <strong> 🤗HuggingFace Transformers</strong> </summary> <br>

使用SwanLabCallback创建一个实例,并将其传递给Trainercallbacks参数,以使SwanLab能够记录训练指标。

import evaluate import numpy as np import swanlab from swanlab.integration.huggingface import SwanLabCallback from datasets import load_dataset from transformers import AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments def tokenize_function(examples): return tokenizer(examples["text"], padding="max_length", truncation=True) def compute_metrics(eval_pred): logits, labels = eval_pred predictions = np.argmax(logits, axis=-1) return metric.compute(predictions=predictions, references=labels) dataset = load_dataset("yelp_review_full") tokenizer = AutoTokenizer.from_pretrained("bert-base-cased") tokenized_datasets = dataset.map(tokenize_function, batched=True) small_train_dataset = tokenized_datasets["train"].shuffle(seed=42).select(range(1000)) small_eval_dataset = tokenized_datasets["test"].shuffle(seed=42).select(range(1000)) metric = evaluate.load("accuracy") model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", num_labels=5) training_args = TrainingArguments( output_dir="test_trainer", report_to="none", num_train_epochs=3, logging_steps=50, ) swanlab_callback = SwanLabCallback(experiment_name="TransformersTest", cloud=False)

trainer = Trainer( model=model, args=training_args, train_dataset=small_train_dataset, eval_dataset=small_eval_dataset, compute_metrics=compute_metrics, callbacks=[swanlab_callback], )

trainer.train()


</details>

<details>
<summary>
  <strong> MMEngine(MMDetection等)</strong>
</summary>
<br>

将`SwanlabVisBackend`集成到MMEngine中,以启用SwanLab自动记录训练指标。

在MM配置文件中添加以下代码片段以开始训练:

```python
custom_imports = dict(imports=["swanlab.integration.mmengine"], allow_failed_imports=False)

vis_backends = [
    dict(
        type="SwanlabVisBackend",
        save_dir="runs/swanlab",
        init_kwargs={
            "project": "swanlab-mmengine",
        },
    ),
]

visualizer = dict(
    type="Visualizer",
    vis_backends=vis_backends,
)
</details> <details> <summary> <strong> Ultralytics</strong> </summary> <br>

将SwanLab集成到Ultralytics非常简单;你可以使用add_swanlab_callback函数:

from ultralytics import YOLO from swanlab.integration.ultralytics import add_swanlab_callback model = YOLO("yolov8n.yaml") model.load() add_swanlab_callback(model) model.train( data="./coco.yaml", epochs=50, imgsz=320, )
</details> <br>

🆚 与熟悉工具的比较

Tensorboard vs SwanLab

  • ☁️ 在线使用支持: 使用SwanLab,训练实验可以方便地同步并保存在云端,允许远程监控训练进度、管理历史项目、分享实验链接、发送实时通知消息,以及在多个设备上查看实验。相比之下,TensorBoard是一个离线的实验跟踪工具。

  • 👥 协作多用户环境: SwanLab便于管理多人训练项目,并轻松分享实验链接,实现团队间的机器学习协作。它还支持跨空间的交流和讨论。另一方面,TensorBoard主要为个人使用设计,难以实现多用户之间的协作和实验共享。

  • 💻 持久化、集中化的仪表板: 无论你在哪里训练模型,无论是本地计算机、实验室集群还是公有云GPU实例,你的结果都会被记录到同一个集中化的仪表板。而使用TensorBoard则需要花时间从不同机器复制和管理TFEvent文件。

  • 💪 更强大的表格: SwanLab表格允许你查看、搜索和过滤来自各种实验的结果,便于审查数千个模型版本,找出不同任务的最佳表现模型。TensorBoard不太适合大规模项目。

Weights and Biases vs SwanLab

  • Weights and Biases是一个仅在线的专有MLOps平台。

  • SwanLab不仅支持在线使用,还提供开源、免费和自托管版本。

<br>

👥 社区

社区和支持

  • GitHub Issues:使用SwanLab时遇到的错误和问题
  • 电子邮件支持:关于使用SwanLab问题的反馈
  • <a href="https://geektechstudio.feishu.cn/wiki/NIZ9wp5LRiSqQykizbGcVzUKnic">微信</a>:讨论使用SwanLab的问题,分享最新AI技术。

SwanLab README徽章

如果你喜欢在你的工作中使用SwanLab,请在你的README中添加SwanLab徽章:

swanlab

[![swanlab](https://img.shields.io/badge/powered%20by-SwanLab-438440)](https://github.com/swanhubx/swanlab)

在论文中引用SwanLab

如果你发现SwanLab对你的研究有帮助,请考虑以以下格式引用:

@software{Zeyilin_SwanLab_2023, author = {Zeyi Lin, Shaohong Chen, Kang Li, Qiushan Jiang, Zirui Cai, Kaifang Ji and {The SwanLab team}}, doi = {10.5281/zenodo.11100550}, license = {Apache-2.0}, title = {{SwanLab}}, url = {https://github.com/swanhubx/swanlab}, year = {2023} }

为SwanLab做贡献

考虑为SwanLab做贡献?首先,请花些时间阅读贡献指南

同时,我们热烈欢迎通过社交媒体、活动和会议分享来支持SwanLab。谢谢!

<br>

贡献者

<a href="https://github.com/swanhubx/swanlab/graphs/contributors"> <img src="https://contrib.rocks/image?repo=swanhubx/swanlab" /> </a>

下载图标

SwanLab-Icon-SVG

<br>

📃 许可证

本仓库遵循Apache 2.0 许可证开源许可。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多