ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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),仅供参考
返回列表