当前位置: 首页 > article >正文

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 - offsetloss = 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研究者提供了良好的交流基础,研究者们可以基于图表进行沟通、分析与优化,而非以往看着枯燥的终端打印。这打破了团队沟通的壁垒,提高了整体的研发效率。

相关文章:

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 基…...

SQLiteStudio:一款免费跨平台的SQLite管理工具

SQLiteStudio 是一款专门用于管理和操作 SQLite 数据库的免费工具。它提供直观的图形化界面,简化了数据库的创建、编辑、查询和维护,适合数据库开发者和数据分析师使用。 功能特性 SQLiteStudio 提供的主要功能包括: 免费开源,可…...

【智能体Agent】ReAct智能体的实现思路和关键技术

基于ReAct(Reasoning Acting)框架的自主智能体 import re from typing import List, Tuplefrom langchain_community.chat_message_histories.in_memory import ChatMessageHistory from langchain_core.language_models.chat_models import BaseChatM…...

python爬虫系列课程8:js浏览器window对象属性

python爬虫系列课程8:js浏览器window对象属性 一、JavaScript的组成二、document常见属性对象三、navigator对象一、JavaScript的组成 JavaScript可以分为三个部分:ECMAScript标准、DOM、BOM。 ECMAScript标准:即JS的基本语法,JavaScript的核心,描述了语言的基本语法和数…...

Java基础系列:深入理解八大基本数据类型及避坑指南

目录 一、基本数据类型概述 八大类型速查表 二、各类型详解与常见陷阱 1. 整型家族(byte/short/int/long) 2. 浮点型(float/double) 3. 字符型(char) 4. 布尔型(boolean) 三…...

贝塞尔曲线学习

1、一阶贝塞尔曲线 一阶贝塞尔曲线其实是一条直线——给定点 P0、P1,线性贝塞尔曲线就是一条两点之间的直线,公式如下: 一阶曲线很好理解, 就是根据t来线性插值。 void MainWindow::mousePressEvent(QMouseEvent *e) {list.append(e->pos…...

机器学习(六)

一,决策树: 简介: 决策树是一种通过构建类似树状的结构(颠倒的树),从根节点开始逐步对数据进行划分,最终在叶子节点做出预测结果的模型。 结构组成: 根节点:初始的数据集…...

kotlin高级用法总结

Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...

OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 - 慧知开源充电桩平台

OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 引言 OCPP作为开放协议,其核心价值在于平衡标准化与可扩展性。面对不同充电桩厂商的硬件差异、区域能源政策及定制化业务需求,OCPP通过**扩展点(Extension Points&#xff09…...

docker目录挂载与卷映射的区别

在 Docker 中,目录挂载(Bind Mount)和卷映射(Volume Mount)的命令语法差异主要体现在路径格式上,具体表现为是否以斜杠(/)开头。以下是两者的核心区别及使用场景的总结: …...

【江协科技STM32】ADC数模转换器-学习笔记

ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁,ADC是一种将连续的模拟信号转换为离散的数字信号的设备或模块12位逐次逼近型…...

【kubernetes】service

目录 1. 说明2. 原理2.1 服务注册2.2 服务发现2.3 负载均衡 3. Service的类型3.1 ClusterIP3.2 NodePort3.3 LoadBalancer3.4 ExternalName 4. 使用场景 1. 说明 1.kubernetes中的service主要用于提供网络服务,并实现微服务架构中的几个核心功能:全自动…...

嵌入式学习笔记-卡尔曼滤波,PID,MicroPython

文章目录 卡尔曼滤波卡尔曼滤波的核心思想卡尔曼滤波的数学模型1. 状态转移模型(预测系统状态)2. 观测模型(预测测量值) 卡尔曼滤波的五个关键步骤1. 预测状态2. 预测误差协方差3. 计算卡尔曼增益4. 更新状态5. 更新误差协方差 卡…...

什么是hive

Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...

MAC电脑常用操作

环境:M3芯片 ,macOS15.2 🚀 快捷键 🖥️ 窗口管理 ✅ 退出/进入全屏模式 • 浏览器等应用:⌘ Command Ctrl F ✅ 最小化当前窗口 • ⌘ Command M • 💡 隐藏窗口但保留应用在后台运行 ✅ 关闭当前标…...

leetcode 1287. 有序数组中出现次数超过25%的元素 简单

给你一个非递减的 有序 整数数组&#xff0c;已知这个数组中恰好有一个整数&#xff0c;它的出现次数超过数组元素总数的 25%。 请你找到并返回这个整数 示例&#xff1a; 输入&#xff1a;arr [1,2,2,6,6,6,6,7,10] 输出&#xff1a;6提示&#xff1a; 1 < arr.length…...

3.8【Q】cv

这个draw_line函数的逻辑和功能是什么&#xff1f;代码思路是什么&#xff1f;怎么写的&#xff1f; 这个t是什么&#xff1f;t.v[0]和t.v[1],[2]又是什么&#xff1f; void rst::rasterizer::draw(rst::pos_buf_id pos_buffer, rst::ind_buf_id ind_buffer, rst::Primitive ty…...

upload-labs文件上传

第一关 上传一个1.jpg的文件&#xff0c;在里面写好一句webshell 保留一个数据包&#xff0c;将其中截获的1.jpg改为1.php后重新发送 可以看到&#xff0c;已经成功上传 第二关 写一个webshell如图&#xff0c;为2.php 第二关在过滤tpye的属性&#xff0c;在上传2.php后使用b…...

PyTorch中Tensor对象的属性和方法

目录 一、核心属性 复数支持 转置与视图操作 ​元信息 ​梯度相关 ​二. 常用方法 ​基本操作 ​转置与视图 ​数学运算 ​深度学习相关 ​3. 使用示例 ​梯度计算 ​设备管理 ​自定义反向传播 ​4. 注意事项 ​总结 一、核心属性 1.requires_grad: _bool: 该…...

C++20 格式化库:强大的字符串格式化工具

文章目录 格式化语法常见用法1. 填充和对齐2. 数值格式化3. 进制格式化4. 自定义类型 示例代码注意事项 C20 的格式化库是一个强大的工具&#xff0c;用于处理字符串的格式化操作。它提供了类似于 Python 中 str.format() 的功能&#xff0c;但语法和用法更符合 C 的风格。以下…...

[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中

[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中 将MathType公式编辑器内嵌到WPS工具栏中 下载好所需文件 我用夸克网盘分享了「mathtype安装教程超简单易上手.zip」&#xff0c;点击链接即可保存。打开「夸克APP」 链接&#xff1a;https://pan.quark.cn/s/4726c684…...

分析TCP三次握手与四次挥手

TCP&#xff08;传输控制协议&#xff09;通过三次握手建立连接&#xff0c;四次挥手终止连接&#xff0c;确保数据传输的可靠性。 TCP的三个控制标志位&#xff1a; SYN——用于建立连接&#xff0c;同步序列号。 ACK——用于确认收到的数据。 FIN——用于终止连接。 ISN…...

【深度学习】宠物品种分类Pet Breeds Classifier

文章目录 宠物品种数据集制作宠物品种标签图像预处理Presizing 损失函数loss观察模型的性能提升模型的性能learning rate finder使用CLR算法训练选择学习率的策略重新训练 迁移学习微调fine_tunefit_one_cycle有判别力的学习率 选择epoch的数量更深的网络架构 宠物品种数据集 …...

【从零开始学习计算机科学】HLS算子调度

算子调度 调度是HLS 中的核心问题,为无时序或部分时序的输入指定时钟边界,其对最终结果质量具有很大的影响。调度会影响时钟频率、延时、吞吐率、面积、功耗等多种因素。 调度的输入是控制数据流图,其节点表示算子/操作,有向边表示数据依赖,控制依赖,优先依赖。如果没有…...

centos 安装composer 教程

打开命令行 php -r "copy(https://getcomposer.org/installer, composer-setup.php);" sudo php composer-setup.php --install-dir/usr/local/bin --filenamecomposer composer --version sudo chmod us /usr/local/bin/composer Super18120/article/details/14388…...

C语言_数据结构总结2:动态分配方式的顺序表

0——静态分配内存的顺序表和动态分配内存的顺序表的相同之处和不同之处 相同之处 基本操作逻辑相同&#xff1a;无论是静态分配还是动态分配的顺序表&#xff0c;其核心的操作逻辑是一致的。例如插入操作都需要将插入位置之后的元素依次后移&#xff0c;删除操作都需要将删除…...

嵌入式人工智能应用-第6章 人脸检测

嵌入式人工智能应用 人脸检测 嵌入式人工智能应用1 人脸检测1.1 CNN 介绍1.2 人脸检测原理1.3 MTCNN介绍1.4 NCNN介绍2 系统安装2.1 安装依赖库NCNN2.2 运行对应的库3 总结1 人脸检测 1.1 CNN 介绍 卷积神经网络。卷积是什么意思呢?从数学上说,卷积是一种运算。它是我们学习…...

关于无感方波启动预定位阶段

一、预定位的核心目标与原理 消除启动不确定性 无位置传感器下&#xff0c;转子初始位置未知&#xff0c;直接换相可能导致反转或失步。预定位通过施加固定方向磁场&#xff0c;强制转子对齐至预定角度&#xff08;通常0或60电角度&#xff09;&#xff0c;建立初始位置基准。 …...

WSL安装及问题

1 概述 Windows Subsystem for Linux&#xff08;简称WSL&#xff09;是一个在Windows 10\11上能够运行原生Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它是由微软与Canonical公司合作开发&#xff0c;开发人员可以在 Windows 计算机上同时访问 Windows 和…...

MySQL中的脏读与幻读:概念、影响与解决方案

在数据库事务处理中&#xff0c;脏读和幻读是两种常见的并发问题&#xff0c;可能导致数据不一致或逻辑错误。本文将结合实际场景&#xff0c;深入解析两者的原理及解决方案。 一、脏读&#xff08;Dirty Read&#xff09; 1. 概念解析 脏读指一个事务读取了另一个事务未提交…...