首页/新闻资讯/正文详情

SwanLab 框架集成实战:在 PyTorch、Transformers、PyTorch Lightning 与 Fastai 中接入实验追踪

发布时间:2026/9/24 22:57:03 来源:云帆数科 栏目:资讯中心
SwanLab 框架集成实战:在 PyTorch、Transformers、PyTorch Lightning 与 Fastai 中接入实验追踪
AI 技能人工智能大模型深度学习【免费下载链接】AI-Research-SKILLsComprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini agent will be an AI research agent with full horsepower. Maintained by Orchestra Research.项目地址https://gitcode.com/gh_mirrors/ai/AI-Research-SKILLs点击查看免费下载本文是基于当前仓库 SwanLab Skill 及其参考文档 integrations.md 编写的实战指南聚焦于如何把 SwanLab 这一开源实验追踪工具接入 PyTorch、HuggingFace Transformers、PyTorch Lightning 与 Fastai 四种主流训练框架。读完本文你将掌握swanlab.init/swanlab.log的核心用法、report_toswanlab一键集成与SwanLabCallback回调两种 Transformers 接入路线、SwanLabLogger日志器接入方式以及一套可直接复制到项目中的最佳实践实现本地或自托管环境下的指标、配置与媒体资源追踪。前置准备安装与运行环境SwanLab 的依赖要求与安装方式记录在 SKILL.md 中其中明确了最低版本要求swanlab0.7.11、pillow9.0.0、soundfile0.12.0分别用于图片与音频媒体日志。# 安装 SwanLab 及本 Skill 使用的媒体依赖 pip install swanlab0.7.11 pillow9.0.0 soundfile0.12.0 # 为 modelocal 与 swanlab watch 增加本地仪表盘支持 pip install swanlab[dashboard]0.7.11 # 可选本文涉及的框架集成 pip install transformers pytorch-lightning fastai # 云托管或自托管场景登录 swanlab login说明pillow与soundfile是 Image / Audio 示例所需的媒体依赖swanlab[dashboard]提供本地仪表盘所需依赖是modelocal与swanlab watch生效的前提如果你使用自托管服务或云端实例也可以改用编程式登录swanlab.login(api_key..., hosthttp://your-server:5092)参见 SKILL.md 中的本地与自托管工作流示例。PyTorch基础训练循环接入在原生 PyTorch 训练循环中SwanLab 的接入方式非常直接训练开始前用swanlab.init创建 run 并一次性登记项目名、实验名与超参数配置训练过程中用swanlab.log按批次记录指标训练结束后调用run.finish()收尾。以下完整示例摘自 integrations.mdimport torch import torch.nn as nn import torch.optim as optim import swanlab run swanlab.init( projectpytorch-training, experiment_namemnist-mlp, config{ learning_rate: 1e-3, batch_size: 64, epochs: 10, hidden_size: 128, }, ) model nn.Sequential( nn.Flatten(), nn.Linear(28 * 28, run.config.hidden_size), nn.ReLU(), nn.Linear(run.config.hidden_size, 10), ) optimizer optim.Adam(model.parameters(), lrrun.config.learning_rate) criterion nn.CrossEntropyLoss() for epoch in range(run.config.epochs): model.train() for batch_idx, (data, target) in enumerate(train_loader): optimizer.zero_grad() logits model(data) loss criterion(logits, target) loss.backward() optimizer.step() if batch_idx % 100 0: swanlab.log( { train/loss: loss.item(), train/epoch: epoch, train/batch: batch_idx, } ) run.finish()几个值得注意的细节run.config是swanlab.init(config...)传入配置的访问入口可直接通过属性方式读取如run.config.hidden_size让模型结构与优化器超参都以配置为单一事实来源指标名采用train/loss、train/epoch这类分组命名便于在仪表盘上按命名空间聚合与对比run.finish()在你自己管理 run 生命周期时必须显式调用而框架集成如 Trainer / Trainer.fit接管生命周期时则由集成层负责收尾。PyTorch轻量回调封装器 SwanLabTracker如果你希望把日志逻辑收敛到一个可复用的工具类中integrations.md 提供了一个极简封装SwanLabTracker统一了指标、图片、文本三类日志入口import swanlab class SwanLabTracker: def __init__(self, project, experiment_nameNone, configNone): self.run swanlab.init( projectproject, experiment_nameexperiment_name, configconfig, ) def log_metrics(self, metrics, stepNone): swanlab.log(metrics, stepstep) def log_images(self, name, images, captionsNone): if captions is None: payload [swanlab.Image(image) for image in images] else: payload [ swanlab.Image(image, captioncaption) for image, caption in zip(images, captions) ] swanlab.log({name: payload}) def log_note(self, name, text): swanlab.log({name: swanlab.Text(text)}) def finish(self): self.run.finish()特别需要说明的是文档作者在此处刻意省略了直方图histogram与文件类辅助方法——因为这些在当前 SwanLab 公开 API 中并不存在。这是一个重要的 API 边界提示在编写集成代码时应以 SwanLab 官方公开 API如swanlab.Image、swanlab.Text、swanlab.Audio、swanlab.Video、swanlab.Object3D、swanlab.Molecule.from_smiles等为准不要臆造不存在的接口。完整的媒体与图表日志方式可参考同目录下的 visualization.md。Transformers两条接入路线针对 HuggingFace Transformersintegrations.md 给出了两条路径官方一键集成推荐与基于回调的自控路径兜底。路线一transformers4.50.0官方一键集成在较新版本的 Transformers 中直接在TrainingArguments里设置report_toswanlab即可完成接入这是 SwanLab 官方文档的主推路径from transformers import ( AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments, ) tokenizer AutoTokenizer.from_pretrained(bert-base-uncased) model AutoModelForSequenceClassification.from_pretrained( bert-base-uncased, num_labels2, ) training_args TrainingArguments( output_dir./results, num_train_epochs3, per_device_train_batch_size16, per_device_eval_batch_size16, evaluation_strategyepoch, logging_steps100, report_toswanlab, run_namebert-imdb, ) trainer Trainer( modelmodel, argstraining_args, train_datasettrain_dataset, eval_dataseteval_dataset, ) trainer.train()当你需要自定义项目路由、又不想脱离官方集成路径时可以通过环境变量完成export SWANLAB_PROJ_NAMEmy-text-classification export SWANLAB_WORKSPACEmy-workspace设置SWANLAB_PROJ_NAME与SWANLAB_WORKSPACE后report_toswanlab会自动将 run 路由到对应项目与工作区无需修改代码。路线二transformers4.50.0或需要自定义控制时的SwanLabCallback对于旧版本 Transformers或者当你希望获得 SwanLab 专属控制力而不依赖report_toswanlab时使用swanlab.integration.transformers.SwanLabCallback作为回调注入 Trainer 即可。注意此时report_to应设为none避免与回调重复创建日志器from transformers import ( AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments, ) from swanlab.integration.transformers import SwanLabCallback tokenizer AutoTokenizer.from_pretrained(bert-base-uncased) model AutoModelForSequenceClassification.from_pretrained( bert-base-uncased, num_labels2, ) training_args TrainingArguments( output_dir./results, evaluation_strategyepoch, logging_steps100, report_tonone, ) trainer Trainer( modelmodel, argstraining_args, train_datasettrain_dataset, eval_dataseteval_dataset, callbacks[ SwanLabCallback( projecttext-classification, experiment_namebert-imdb, config{ model: bert-base-uncased, batch_size: 16, epochs: 3, }, ) ], ) trainer.train()SwanLabCallback接受的 run 元数据project、experiment_name、config与swanlab.init(...)完全一致训练与评估指标会由回调自动写入。PyTorch LightningSwanLabLogger日志器接入PyTorch Lightning 生态中SwanLab 通过swanlab.integration.pytorch_lightning.SwanLabLogger作为 Lightning 的Logger接入。它可以直接替你创建 run因此推荐把项目元数据直接传给 logger。完整示例见 integrations.mdimport pytorch_lightning as pl import torch import torch.nn as nn from swanlab.integration.pytorch_lightning import SwanLabLogger class LitClassifier(pl.LightningModule): def __init__(self, learning_rate1e-3): super().__init__() self.save_hyperparameters() self.model nn.Sequential( nn.Flatten(), nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 10), ) self.criterion nn.CrossEntropyLoss() def forward(self, x): return self.model(x) def training_step(self, batch, batch_idx): x, y batch logits self(x) loss self.criterion(logits, y) self.log(train/loss, loss, prog_barTrue) return loss def validation_step(self, batch, batch_idx): x, y batch logits self(x) loss self.criterion(logits, y) acc (torch.argmax(logits, dim1) y).float().mean() self.log(val/loss, loss, prog_barTrue) self.log(val/accuracy, acc, prog_barTrue) def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lrself.hparams.learning_rate) swanlab_logger SwanLabLogger( projectlightning-demo, experiment_namemnist-classifier, config{learning_rate: 1e-3, max_epochs: 10}, ) trainer pl.Trainer( loggerswanlab_logger, max_epochs10, acceleratorauto, ) trainer.fit(LitClassifier(), train_loader, val_loader)要点在LightningModule内部通过self.log(train/loss, loss, prog_barTrue)记录指标Lightning 会自动把prog_bar上的关键指标同步给 loggerrun 的生命周期由Trainer.fit托管无需手动run.finish()acceleratorauto配合 SwanLab 使用时指标聚合行为由 Lightning 的 log 机制保证。Fastai视觉与文本分类Fastai 的接入通过swanlab.integration.fastai.SwanLabCallback完成它接受与swanlab.init(...)相同的 run 元数据并作为cbs[...]传入learn.fit或learn.fit_one_cycle。视觉分类PETS 数据集示例见 integrations.mdfrom fastai.vision.all import URLs, ImageDataLoaders, Resize, accuracy, get_image_files, resnet34, untar_data, vision_learner from swanlab.integration.fastai import SwanLabCallback path untar_data(URLs.PETS) dls ImageDataLoaders.from_name_func( path, get_image_files(path / images), valid_pct0.2, label_funclambda x: x[0].isupper(), item_tfmsResize(224), bs64, ) learn vision_learner(dls, resnet34, metricsaccuracy) learn.fit( 5, cbs[ SwanLabCallback( projectfastai-demo, experiment_namepets-classification, config{arch: resnet34, epochs: 5, batch_size: 64}, ) ], )文本分类IMDB 情感分析示例见 integrations.mdfrom fastai.text.all import AWD_LSTM, TextDataLoaders, accuracy, text_classifier_learner, untar_data, URLs from swanlab.integration.fastai import SwanLabCallback path untar_data(URLs.IMDB) dls TextDataLoaders.from_folder(path, validtest, bs64) learn text_classifier_learner( dls, AWD_LSTM, drop_mult0.5, metricsaccuracy, ) learn.fit_one_cycle( 3, cbs[ SwanLabCallback( projectfastai-text, experiment_nameimdb-sentiment, config{arch: AWD_LSTM, epochs: 3, batch_size: 64}, ) ], )两种任务的共同模式把SwanLabCallback放进 fastai 的cbs列表回调会自动把训练过程中的 loss、metrics 与学习率等指标写入对应项目无需在训练循环内手工swanlab.log。最佳实践清单integrations.md 归纳了五条经过实践检验的接入规范贯穿上述所有框架尽早初始化在训练脚本的最开始调用swanlab.init确保配置与环境元数据只被捕获一次避免后续修改污染记录使用稳定的指标名跨 run 保持train/loss、val/accuracy这类统一命名同一指标族不要时而平铺、时而分组否则仪表盘对比会失真checkpoint 本地保存、日志记录路径或分数用框架自带机制把 checkpoint 存到本地再将 checkpoint 路径可通过swanlab.Text记录或最佳分数单独写入日志而不是把大文件塞进实验数据生命周期职责分明自己管理 run 时显式调用run.finish()当框架集成Trainer、Lightning、fastai 回调接管生命周期时交给集成层自动收尾避免重复调用离线优先工作流需要完全离线运行时使用modelocal配合swanlab watch -l ./swanlog本地查看之后再用swanlab sync ./swanlog将本地日志同步到云端或自托管服务。其中第 5 条的本地工作流在 SKILL.md 中有完整示例# Local-only logging run swanlab.init( projectoffline-demo, modelocal, logdir./swanlog, ) swanlab.log({loss: 0.35, epoch: 1}) run.finish()# 查看本地日志 swanlab watch -l ./swanlog # 稍后同步本地日志 swanlab sync ./swanlog进阶阅读本文核心源码与全部示例integrations.mdSkill 总览、安装步骤、核心概念与本地/自托管工作流SKILL.md图表对象swanlab.echarts折线图、柱状图、热力图与媒体日志图片、音频、GIF、文本、点云、分子的完整模式visualization.md上述文档共同构成 SwanLab 的安装 → 追踪 → 集成 → 可视化 → 对比完整链路集成层负责把 run 生命周期与各框架训练循环衔接起来可视化层负责把日志内容渲染为可对比的图表与媒体面板。接入时请始终以公开 API 为准避免使用文档未确认的接口从而保证代码在不同 SwanLab 版本间的可迁移性。赞分享AI 技能人工智能大模型深度学习【免费下载链接】AI-Research-SKILLsComprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini agent will be an AI research agent with full horsepower. Maintained by Orchestra Research.项目地址https://gitcode.com/gh_mirrors/ai/AI-Research-SKILLs点击查看免费下载相关推荐TensorBoard 框架集成指南PyTorch / TensorFlow / Lightning / Transformers 等多框架训练可视化实战TensorBoard 框架集成指南PyTorch / TensorFlow / Lightning / Transformers 等多框架训练可视化实战 导AI 技能人工智能大模型深度学习SwanLab 开源实验追踪实战指南PyTorch / Transformers 指标记录、媒体可视化与本地自托管SwanLab 开源实验追踪实战指南PyTorch / Transformers 指标记录、媒体可视化与本地自托管 导读 SwanLab 是一款开源、可本地或AI 技能人工智能大模型深度学习WB Framework Integrations 实战指南在 HuggingFace、Lightning、Keras 等主流框架中接入 Weights Biases 实验追踪WB Framework Integrations 实战指南在 HuggingFace、Lightning、Keras 等主流框架中接入 Weights AI 技能人工智能大模型深度学习上一篇终极解决方案VisualCppRedist AIO一键修复Windows软件崩溃问题下一篇终极Windows清理神器MyComputerManager彻底解决此电脑顽固快捷方式问题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Windows远程桌面手机直连实操指南:三秒上手RDP配置
Windows远程桌面手机直连实操指南:三秒上手RDP配置

1. 这不是“远程控制软件推荐”,而是帮你避开90%人踩坑的实操路线图“手机远程操控 Windows 电脑”——这八个字背后,藏着太多被简化、被误导、被营销话术掩盖的真实门槛。我做过三年远程办公技术支持,也帮过两百多个中小企业主部署家庭/办公… · 2026/9/24 22:57:03

高德地图围栏管理组件化实践:从数据流设计到交互性能优化
高德地图围栏管理组件化实践:从数据流设计到交互性能优化

1. 为什么围栏要抽成组件而不是每次重写1.1 围栏在业务里到底管什么做前端或者客户端开发的同学应该都有体会,地图类功能最怕的不是地图本身,而是围绕地图衍生出来的那堆业务逻辑。围栏管理就是其中一个典型。所谓的围栏,本质上就是在电子地图… · 2026/9/24 22:56:56

Windows文件搜索秒开?Everything索引原理与高效用法全解析
Windows文件搜索秒开?Everything索引原理与高效用法全解析

在 Windows 上找文件,好几年前我就劝身边的人别再死磕系统自带的资源管理器搜索了。你输入一个关键词,它转圈半天才出结果,要是文件多了,那个等待过程简直能把人逼疯。后来我换上了专用的文件查找工具,才算是把文件定位… · 2026/9/24 22:56:56

16 CFR 1700.20-儿童防开启包装Child-Resistant Packaging(CRP)检测认证
16 CFR 1700.20-儿童防开启包装Child-Resistant Packaging(CRP)检测认证

美国 CPSC 16 CFR 1700.20 儿童安全包装认证详解 CPSC 16 CFR 1700.20 是美国消费品安全委员会(CPSC)制定的儿童防开启包装(Child-Resistant Packaging, CRP)测试标准,源自1970年《毒物预防包装法案》(PPP… · 2026/9/24 23:25:00

支持向量机Matlab代码运行实战:从原理到调参避坑
支持向量机Matlab代码运行实战:从原理到调参避坑

简介:支持向量机(SVM)是机器学习中广泛应用的监督学习模型,擅长处理分类与回归问题。这份Matlab代码与数据压缩包面向需要快速上手SVM的初学者和科研人员,涵盖从理论到代码实现的完整学习链路。包内共6个文件&#xff… · 2026/9/24 23:24:54

Java实体类实现Serializable接口:从序列化原理到Spring实战避坑指南
Java实体类实现Serializable接口:从序列化原理到Spring实战避坑指南

1. 从一次诡异的缓存报错说起先讲个我早年的经历。那时候刚用Spring Boot做项目,Redis当缓存,存用户信息。某天测试环境突然冒出一堆类型转换异常,日志里全是java.lang.ClassCastException: java.util.HashMap cannot be cast to com.xxx.Use… · 2026/9/24 23:24:34

Python语法学习全攻略:从零基础到高效编程的避坑指南
Python语法学习全攻略:从零基础到高效编程的避坑指南

一提到Python语法,很多刚起步的朋友都会陷入一个误区:觉得语法就是一堆规则,背完就完事了。我在和不少新人打过交道之后发现,语法能不能学扎实,直接决定了后面的爬虫、数据分析、Web开发这些方向能走多远。python语法学… · 2026/9/24 23:24:34

Spring Boot整合Quartz:定时任务调度从入门到生产实践
Spring Boot整合Quartz:定时任务调度从入门到生产实践

好好好,今天想聊聊 Spring Boot 整合 Quartz 这件事。定时任务现在几乎是后端项目标配,往小了说是定时清缓存、定时生成报表,往大了说是电商的订单超时关闭、支付的自动对账、会员到期提醒,底子全是定时调度。Spring Boot 自己带了… · 2026/9/24 23:24:34

自托管AI Agent网关OpenClaw部署全指南:架构、模型接入与飞书集成
自托管AI Agent网关OpenClaw部署全指南:架构、模型接入与飞书集成

前一阵子折腾 OpenClaw,从最早在 Windows 上踩 WSL2 的坑,到后来换到 Linux 服务器上跑稳定,前后花了一周多时间。这中间网上中文资料少,很多问题都是自己翻日志、看 issue 一点点试出来的。最近看到不少人在问“OpenClaw 怎么部署… · 2026/9/24 23:24:27

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码