什么是SwanLab
SwanLab是一款完全开源免费的机器学习日志跟踪与实验管理工具,为人工智能研究者打造。有以下特点:
- 基于一个名为swanlab的python库
- 可以帮助您在机器学习实验中记录超参数、训练日志和可视化结果
- 能够自动记录logging、系统硬件、环境配置(如用了什么型号的显卡、Python版本是多少等等)
- 可以完全离线运行,在完全内网环境下也可使用
**使用SwanLab辅助模拟训练实验的结果图速览: **
Charts:记录loss和accuracy
Logs:记录终端中打印的日志
Environment Card:实验相关信息概览
Environment:实验、系统硬件和环境配置信息
快速入门
安装swanlab并快速开始跟踪简单的机器学习实验。
安装SwanLab
在
Python 3.8+
环境中的计算机上使用
pip
安装 swanlab 库。
pip install -U swanlab
P.S. 此教程主要基于swanlab>=0.1.5,如果低于此版本,请做一下升级,升级命令同上。
启动运行并跟踪超参数
**在
swanlab.init
中初始化SwanLab,在
swanlab.log
中以字典形式传入需要跟踪记录的指标项:**
import swanlab
swanlab.init(
config={"learning_rate": 0.01},
logdir="./logs"
)
for epoch in range(1, 10):
swanlab.log({"epoch": epoch})
config
参数:要记录的实验配置信息。比如上面的代码表示SwanLab记录了配置项learning_rate,它的值为0.01。logdir
参数:实验数据即将存储的路径。SwanLab会在运行时将实验数据存放在logdir中,这些数据将成为实验看板的数据源。上面的代码表示实验数据存储的位置是当前目录下的logs文件夹。swanlab.log
:跟踪需要记录的指标,需要以字典的形式传入,实验看板将根据传入的内容,绘制相应的图表。上面的代码表示SwanLog记录了名为epoch的指标项,值为1~9。
运行代码,将会看到以下输出结果:
[SwanLab-INFO]: Experiment exp has been registered.
[SwanLab-INFO]: Run data will be saved locally in <你的日志保存路径>(eg:./logs/run-20240124_192528-34b914e0)
[SwanLab-INFO]: Experiment_name: <实验名>
[SwanLab-INFO]: Run `swanlab watch` to view SwanLab Experiment Dashboard
[SwanLab-INFO]: The current experiment exp_2024-01-24_19-25-28 has been completed, SwanLab will close it automatically
此时在你运行代码的所在的项目目录中会出现1个logs文件夹,里面记录的是你的训练数据:
可视化查看swanlab记录的训练数据
**打开终端,进入同一目录下,运行命令
swanlab watch
,开启实验看板:**
swanlab watch --logdir ./logs
--logdir
参数:实验看板的数据源的路径,于初始化SwanLab时创建。上面的命令表示以./logs
文件夹为数据源开启实验看板。
你会看到下面的输出结果,这代表可视化实验看板已经在后台运行:
[SwanLab-INFO]: SwanLab Experiment Dashboard ready in <启动实验看板的用时>ms
➜ Local: http://127.0.0.1:5092
打开浏览器,访问http://127.0.0.1:5092:
就是这样!点击进入刚刚进行的实验,可以可视化地看到我们用** SwanLab **记录的指标(loss和acc)在每个训练步骤中是如何改进的:
可视化图表
自动记录终端打印日志
实验概览信息:包含实验名、描述、系统信息、超参数等
实验详细信息
Have a Try!
快速上手模拟训练实验
根据以上教程,你是不是也能用SwanLab实现本教程开始时展示的模拟训练实验呢?Why not have a try? Now!
参考代码如下:
import swanlab
import time
import random
lr = 0.01
epochs = 20
offset = random.random() / 5
swanlab.init(
# 设置实验名称
experiment_name="sample_experiment",
# 设置实验介绍
description="This is a sample experiment for machine learning training.",
# 记录跟踪的超参数和运行元数据
config={
"learning_rate": lr,
"epochs": epochs,
},
)
# 模拟机器学习训练过程
for epoch in range(2, epochs):
acc = 1 - 2**-epoch - random.random() / epoch - offset
loss = 2**-epoch + random.random() / epoch + offset
print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
# 记录loss和acc
swanlab.log({"loss": loss, "accuracy": acc})
time.sleep(1)
SwanLab助力机器学习
此外,如果你想使用SwanLab跟踪记录更多更复杂的机器学习任务,比如用ResNet50模型实现猫狗分类任务,欢迎关注以下教程:
PyTorch+SwanLab+Gradio+猫狗分类:从可视化训练到Demo网站https://zhuanlan.zhihu.com/p/676430630
SwanLab结果图:
效果很完美!
至此,我们已经学完了SwanLab的基本使用方法,完成了用PyTorch、SwanLab、Gradio三个开源工具训练1个猫狗分类模型的全部过程,如果想了解更多SwanLab,可参考相关链接或评论此文章。
相关文章
- SwanLab官方文档:SwanLab简介
- GitHub:https://github.com/SwanHubX/SwanLab
- SwanHub:https://swanhub.co/SwanHub/SwanLab
- SwanLab教程(后续更新欢迎关注):- 如何远程访问SwanLab实验看板 - 知乎- 如何用Argparse初始化SwanLab-CSDN博客
版权归原作者 .clair de lune 所有, 如有侵权,请联系我们删除。