SwanLab是一个开源、轻量级的AI实验跟踪工具,提供了一个用于跟踪、比较和协作实验的平台。
它提供了用户友好的API和decent的界面,结合了跟踪超参数、记录指标、在线协作和分享实验链接等功能。
以下是AI平台核心功能列表的中文版本:
1. 📊 实验指标和超参数跟踪:使用简洁的代码嵌入您的机器学习流程,并跟踪关键训练指标。
2. ⚡️ 综合框架集成:PyTorch、Tensorflow、PyTorch Lightning、🤗HuggingFace、Transformers、MMEngine、Ultralytics、fastai、Tensorboard、OpenAI、ZhipuAI、Hydra、...
3. 📦 组织实验:集中式仪表板,高效管理多个项目和实验,一目了然地概览训练情况。
4. 🆚 比较结果:使用在线表格和配对图表比较不同实验的超参数和结果,启发迭代灵感。
5. 👥 在线协作:与团队成员在训练项目上协作,支持同一项目下实验的实时同步,让您能在线同步团队的训练记录,并基于结果分享见解和建议。
6. ✉️ 分享结果:复制并发送持久性URL以分享每个实验,高效地发送给同事,或嵌入在线笔记中。
7. 💻 自托管支持:支持离线模式,提供自托管社区版,同样允许查看仪表板和管理实验。
[!重要]
为我们点星,您将及时收到来自GitHub的所有发布通知 ~ ⭐️
查看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模型,预测未来股价。 |
pip install swanlab
swanlab login
当提示时,输入您的API密钥并按回车完成登录。
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实验。
社区版支持离线查看SwanLab仪表板。
在swanlab.init中设置参数logdir
和mode
以进行离线实验追踪:
... 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
创建一个实例,并将其传递给Trainer
的logger
参数,以使SwanLab能够记录训练指标。
</details> <details> <summary> <strong> 🤗HuggingFace Transformers</strong> </summary> <br>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)
使用SwanLabCallback
创建一个实例,并将其传递给Trainer
的callbacks
参数,以使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
函数:
</details> <br>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, )
☁️ 在线使用支持: 使用SwanLab,训练实验可以方便地同步并保存在云端,允许远程监控训练进度、管理历史项目、分享实验链接、发送实时通知消息,以及在多个设备上查看实验。相比之下,TensorBoard是一个离线的实验跟踪工具。
👥 协作多用户环境: SwanLab便于管理多人训练项目,并轻松分享实验链接,实现团队间的机器学习协作。它还支持跨空间的交流和讨论。另一方面,TensorBoard主要为个人使用设计,难以实现多用户之间的协作和实验共享。
💻 持久化、集中化的仪表板: 无论你在哪里训练模型,无论是本地计算机、实验室集群还是公有云GPU实例,你的结果都会被记录到同一个集中化的仪表板。而使用TensorBoard则需要花时间从不同机器复制和管理TFEvent文件。
💪 更强大的表格: SwanLab表格允许你查看、搜索和过滤来自各种实验的结果,便于审查数千个模型版本,找出不同任务的最佳表现模型。TensorBoard不太适合大规模项目。
Weights and Biases是一个仅在线的专有MLOps平台。
SwanLab不仅支持在线使用,还提供开源、免费和自托管版本。
如果你喜欢在你的工作中使用SwanLab,请在你的README中添加SwanLab徽章:
[](https://github.com/swanhubx/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。谢谢!
<br>贡献者
<a href="https://github.com/swanhubx/swanlab/graphs/contributors"> <img src="https://contrib.rocks/image?repo=swanhubx/swanlab" /> </a>本仓库遵循Apache 2.0 许可证开源许可。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动 化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作 等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号