SwanLab简明教程:从萌新到高手

目录

1. 什么是SwanLab?

1.1 核心特性

2. 安装SwanLab

3. 登录SwanLab账号(云端版)

4. 5分钟快速上手

更多案例

5. SwanLab功能组件

5.1 图表视图

5.2 表格视图

5.3 硬件监控

5.4 环境记录

5.5 组织协同

6. 训练框架集成

6.1 基础框架

6.2 专有/微调框架

6.3 计算机视觉

6.4 强化学习

6.5 其他框架

FAQ

为什么要记录训练?

训练可视化的价值是什么?


1. 什么是SwanLab?

  • 开始使用:https://swanlab.cn
  • Github:https://github.com/swanhubx/swanlab
  • 官方文档:欢迎使用SwanLab | SwanLab官方文档
  • 案例:kites/yolov8-optimize-v2

SwanLab 是一个开源、现代化设计的深度学习训练跟踪与可视化工具,常被称为"中国版 Weights & Biases + Tensorboard"。目前SwanLab在Github上已收获 1k+ Star,也借此感谢各位小伙伴的支持。

SwanLab同时支持云端和离线使用,并适配了从PyTorch、Transformers、Lightning再到LLaMA Factory、veRL等30多种主流AI训练框架,Python API设计也简洁易上手,能轻松嵌入你的训练代码。

面向人工智能研究者,SwanLab设计了友好的Python API 和漂亮的UI界面,并提供训练可视化、自动日志记录、超参数记录、实验版本管理与对比、多人协同等功能。在SwanLab上,研究者能基于直观的可视化图表发现训练问题,对比多个实验找到研究灵感,并通过在线网页的分享与基于组织的多人协同训练,打破团队沟通的壁垒,提高组织训练效率。

SwanLab支持移动端使用,让你在手机上也能实时看到训练进展。同时,SwanLab也是目前唯一支持昇腾NPU等国产卡硬件监控的训练工具。

1.1 核心特性

以下是SwanLab的一些核心特性:

1. 实验指标与超参数跟踪: 极简的代码嵌入您的机器学习 pipeline,跟踪记录训练关键指标

  • 支持云端使用(类似Weights & Biases),随时随地查看训练进展。手机看实验的方法
  • 支持超参数记录与表格展示
  • 支持的元数据类型:标量指标、图像、音频、文本、...
  • 支持的图表类型:折线图、媒体图(图像、音频、文本)、...
  • 后台自动记录:日志logging、硬件环境、Git 仓库、Python 环境、Python 库列表、项目运行目录

2. ⚡️ 全面的框架集成: PyTorch、 HuggingFace Transformers、PyTorch Lightning、 LLaMA Factory、MMDetection、Ultralytics、PaddleDetetion、LightGBM、XGBoost、Keras、Tensorboard、Weights&Biases、OpenAI、Swift、XTuner、Stable Baseline3、Hydra 在内的 30+ 框架

3. 硬件监控: 支持实时记录与监控CPU、NPU(昇腾Ascend)、GPU(英伟达Nvidia)、内存的系统级硬件指标

4. 实验管理: 通过专为训练场景设计的集中式仪表板,通过整体视图速览全局,快速管理多个项目与实验

4. 比较结果: 通过在线表格与对比图表比较不同实验的超参数和结果,挖掘迭代灵感

5. 在线协作: 您可以与团队进行协作式训练,支持将实验实时同步在一个项目下,您可以在线查看团队的训练记录,基于结果发表看法与建议

6. ✉️ 分享结果: 复制和发送持久的 URL 来共享每个实验,方便地发送给伙伴,或嵌入到在线笔记中

7. 支持自托管: 支持离线环境使用,自托管的社区版同样可以查看仪表盘与管理实验

2. 安装SwanLab

SwanLab的安装非常简单,只需要使用Python的包管理工具pip,一行命令安装即可:

pip install swanlab
Python版本需要>=3.8

3. 登录SwanLab账号(云端版)

如果你希望:

  1. 任何一台远程服务器上跑的实验,都能汇总到一个网页空间下进行管理
  2. 无论通勤还是运动,都可以用手机看到最新的训练进展
  3. 将训练曲线、超参数一键分享给小伙伴,让他们看到你正在训练的过程
  4. 保存你的所有历史实验,告别整理分布在各个文件夹里的日志

那么非常推荐你使用SwanLab云端版(https://swanlab.cn);如果你希望离线记录,那么可以跳过本节。

使用云端版非常简单,首先在官网上注册1个账号,然后在你的工作区点击左下角的「小闪电」

然后,复制你的API Key:

最后,打开命令行终端,输入swanlab login,按回车后,粘贴API Key(粘贴的内容在命令行是看不见的,所以请放心你已经粘贴进去了 = w =),再按回车,完成登录。

4. 5分钟快速上手

SwanLab最核心的功能是深度学习训练过程记录与可视化,下面是一个最简代码示例:

import swanlab
import random

# 创建一个SwanLab项目
swanlab.init(
    # 设置项目名
    project="my-awesome-project",
    
    # 设置超参数
    config={
        "learning_rate": 0.02,
        "architecture": "CNN",
        "dataset": "CIFAR-10",
        "epochs": 10
    }
)

# 模拟一次训练
epochs = 10
offset = random.random() / 5
for epoch in range(2, epochs):
  acc = 1 - 2 ** -epoch - random.random() / epoch - offset
  loss = 2 ** -epoch + random.random() / epoch + offset

  # 记录训练指标
  swanlab.log({"acc": acc, "loss": loss})

# [可选] 完成训练,这在notebook环境中是必要的
swanlab.finish()

这是一个模拟训练过程的脚本,其中用到了SwanLab最核心的两个API swanlab.init()和 swanlab.log()

  • swanlab.init:创建SwanLab实验,支持传入项目名project、实验名experiment_name、超参数config、笔记description等一系列参数。
  • swanlab.log: 记录指标(Metric),将传入的字典进行记录

上面的代码中,首先创建了1个SwanLab实验,它归属于项目my-awesome-project;然后在10论epoch中,每轮epoch ,SwanLab对acc和loss进行1次记录。

运行脚本后,我们可以在网页上看到可视化图表

在「卡片」选项卡,可以看到在swanlab.init中被记录的超参数:

更多案例

我们也写了各个门类的训练入门教程,帮助你更好地了解SwanLab的使用方法:

  • MNIST手写体识别
  • 猫狗分类
  • BERT文本分类 | SwanLab官方文档
  • 音频分类
  • LSTM股票预测
  • DQN强化学习-推车倒立摆
  • Stable Diffusion文生图微调
  • Qwen微调案例
  • Qwen2-VL多模态大模型微调实战
  • 从零预训练一个自己的大模型

5. SwanLab功能组件

5.1 图表视图

  • 折线图

机器学习过程需要跟踪与模型性能相关的不同指标。这对于快速发现问题,并确定模型是否过度拟合等非常重要。通过 SwanLab 折线图看板,可视化关键指标,并对比不同实验的指标差异,让调试模型更轻松:

  • 图像

  • 音频

  • 文本

  • 日志记录

启动swanlab.init后,会自动记录命令行的打印信息,并支持网页端搜索和下载。

5.2 表格视图

通过多实验超参数与指标展示进行对比,支持筛选、排序、行拖拽与列拖拽等操作进行辅助分析。

5.3 硬件监控

支持实时监控训练过程中,英伟达GPU、昇腾NPU、内存、CPU的性能变化。

5.4 环境记录

支持自动记录训练使用的操作系统、Python环境、Git仓库、运行命令、运行时长等环境信息。

以及支持记录Python列表,并可以通过搜索快速定位先前实验的Python库版本:

5.5 组织协同

支持创建组织,邀请你的AI搭子在一个空间下协作训练。

测试组织

6. 训练框架集成

  • 将SwanLab集成到你的库 | SwanLab官方文档

6.1 基础框架

  • PyTorch
  • MindSpore
  • Keras

6.2 专有/微调框架

  • PyTorch Lightning
  • HuggingFace Transformers
  • LLaMA Factory
  • Modelscope Swift
  • DiffSynth-Studio
  • Sentence Transformers
  • OpenMind
  • Torchtune
  • XTuner
  • MMEngine
  • FastAI
  • LightGBM
  • XGBoost

6.3 计算机视觉

  • Ultralytics
  • MMDetection
  • MMSegmentation
  • PaddleDetection
  • PaddleYOLO

6.4 强化学习

  • Stable Baseline3
  • veRL
  • HuggingFace trl
  • EasyR1

6.5 其他框架

  • Tensorboard
  • Weights&Biases
  • MLFlow
  • HuggingFace Accelerate
  • Hydra
  • Omegaconf
  • OpenAI
  • ZhipuAI

FAQ

为什么要记录训练?

相较于软件开发,模型训练更像一个实验科学。一个品质优秀的模型背后,往往是成千上万次实验。研究者需要不断尝试、记录、对比,积累经验,才能找到最佳的模型结构、超参数与数据配比。在这之中,如果没有好的训练记录工具进行辅助,管理实验本身的复杂度就会让你的科研进展受到很大阻力,所以记录训练非常重要。

训练可视化的价值是什么?

机器学习模型训练往往伴随着大量的超参数、指标、日志等数据,很多关键信息往往存在于实验的中间而非结尾,如果不对连续的指标通过图表进行可视化,往往会错失发现问题的最佳时机,甚至错过关键信息。同时不进行可视化,也难以对比多个实验之间的差异。 可视化也为AI研究者提供了良好的交流基础,研究者们可以基于图表进行沟通、分析与优化,而非以往看着枯燥的终端打印。这打破了团队沟通的壁垒,提高了整体的研发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983553.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP7680端口是什么服务

WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下,确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口,个人理解应该是Windows利用这个TCP7680端口,直接从内网已经具备更新包的主机上共享下载该升级包,无需从微…

【SegRNN 源码理解】【今天不水文系列】编码器部分理解

我来小小的理解一下: 首先,16 batchsize,60sequendcelength,7 个特征的通俗解释 16 个独立的样本,每个样本有 60 个连续的时间步及对应的标签值,每个时间步有 60 个特征 所以就是因为样本是随机从训练集…

【CUDA】Reduce归约求和(下)

目录 前言1. 优化技巧4:展开最后一个warp减少同步2. 优化技巧5:完全展开循环3. 优化技巧6:调节GridSize和BlockSize4. 优化技巧7:使用shuffle指令5. 拓展—CUDA工具链的使用结语下载链接参考 前言 学习 UP 主 比飞鸟贵重的多_HKL …

IDE集成开发环境MyEclipse中安装SVN

打开Myeclipse的help菜单----install from site 点击add弹出对话框 在输入框中输入对应内容 http://subclipse.tigris.org/update_1.10.x 点击OK之后,会刷新出两个选项,需要选中的 点击next,出现许可的时候选中同意,一直结束等…

如何计算两个向量的余弦相似度

参考笔记: https://zhuanlan.zhihu.com/p/677639498 日常学习之:如何计算两个向量或者矩阵的余弦相似度-CSDN博客 1.余弦相似度定理 百度的解释:余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估…

国产编辑器EverEdit - 宏功能介绍

1 宏 1.1 应用场景 宏是一种重复执行简单工作的利器,可以让用户愉快的从繁琐的工作中解放出来,其本质是对键盘和菜单的操作序列的录制,并不会识别文件的内容,属于无差别无脑执行。 特别是对一些有规律的重复按键动作,…

vue安装stylelint

执行 npm install -D stylelint postcss-html stylelint-config-recommended-vue stylelint-config-standard stylelint-order stylelint-prettier postcss-less stylelint-config-property-sort-order-smacss 安装依赖,这里是less,sass换成postcss-scss…

(最新教程)Cursor Pro订阅升级开通教程,使用支付宝订阅Cursor Pro Plus

一、如何使用Cursor ? 目前要使用Cursor - The AI Code Editor,直接去下载安装就可以了,不过基础版只能用两周,如果需要继续使用,就要订阅pro plus或者企业版了。 二、如何订阅Cursor Pro Plus ? 因为基础…

Cursor 使用经验,一个需求开发全流程

软件开发中 Cursor 的使用经验成为关注焦点,尤其是处理大型数据集的需求。用户提到“Cursor 使用经验,一个需求开发全流程”,但“Cursor”可能指数据库游标,涉及逐行处理数据。本文将详细探讨开发一个需求的完整流程,包…

vue2实现组件库的自动按需引入,unplugin-auto-import,unplugin-vue-components

1.使用ant-design-vue或者element-ui时,如何每个组件都去import导入组件,大大降低了开发效率,如果全局一次性注册会增加项目体积,那么如何实现既不局部引入,也不全局注册? 2.在element-plus官网看到有说明…

蓝桥杯备赛:一道数学题(练思维(同余的应用))

题目:请问由1-8组成的8位数中有多少个数字可以被1111整除? 首先这道题目看着很难,如果我们直接用代码做的话,也要跑很久,那能不呢想想有什么样的思路可以巧妙一点解开这道题目呢? 有的兄弟有的 这道题目的…

[Lc7_分治-快排] 快速选择排序 | 数组中的第K个最大元素 | 库存管理 III

目录 1. 数组中的第K个最大元素 题解 代码 2.库存管理 III 代码 1. 数组中的第K个最大元素 题目链接:215. 数组中的第K个最大元素 题目分析: 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要…

Unity引擎使用HybridCLR(华佗)热更新

大家好,我是阿赵。   阿赵我做手机游戏已经有十几年时间了。记得刚开始从做页游的公司转到去做手游的公司,在面试的时候很重要的一个点,就是会不会用Lua。使用Lua的原因很简单,就是为了热更新。   热更新游戏内容很重要。如果…

【神经网络】python实现神经网络(一)——数据集获取

一.概述 在文章【机器学习】一个例子带你了解神经网络是什么中,我们大致了解神经网络的正向信息传导、反向传导以及学习过程的大致流程,现在我们正式开始进行代码的实现,首先我们来实现第一步的运算过程模拟讲解:正向传导。本次代…

【Linux】冯诺依曼体系与操作系统理解

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:Linux 目录 前言 一、冯诺依曼体系结构 二、操作系统 1. 操作系统的概念 2. 操作系统存在的意义 3. 操作系统的管理方式 4. 补充:理解系统调用…

HTML-网页介绍

一、网页 1.什么是网页: 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素&#xf…

STM32——GPIO介绍

GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。 1、GPIO 基本结构 STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括: 9 组 GPIO 端口…

字节码是由什么组成的?

Java字节码是Java程序编译后的中间产物,它是一种二进制格式的代码,可以在Java虚拟机(JVM)上运行。理解字节码的组成有助于我们更好地理解Java程序的运行机制。 1. Java字节码是什么? 定义 Java字节码是Java源代码经过…

链表算法题目

1.两数相加 两个非空链表,分别表示两个整数,只不过是反着存储的,即先存储低位在存储高位。要求计算这两个链表所表示数的和,然后再以相同的表示方式将结果表示出来。如示例一:两个数分别是342和465,和为807…

blender学习25.3.8

【04-进阶篇】Blender材质及灯光Cycle渲染&后期_哔哩哔哩_bilibili 注意的问题 这一节有一个大重点就是你得打开显卡的渲染,否则cpu直接跑满然后渲染的还十分慢 在这里你要打开GPU计算,但是这还不够 左上角编辑,偏好设置,系…