实验跟踪
使用几行代码跟踪人工智能实验,然后你可以在交互式仪表板中查看与比较结果。
下图显示了一个示例仪表板,您可以在其中查看和比较多次实验的指标。
它是如何工作的?
使用几行代码跟踪机器学习实验:
1. 创建SwanLab实验。
-为什么使用SwanLab?
与软件工程不同,人工智能是一个实验性学科,产生灵感、快速试验、验证想法 是AI研究的主旋律。而记录下实验过程和灵感,就像化学家记录实验手稿一样,是每一个AI研究者、研究组织形成积累、提升加速度的核心。
先前的实验记录方法,是在计算机前盯着终端打印的输出,复制粘贴日志文件(或TFEvent文件),粗糙的日志对灵感的涌现造成了障碍,离线的日志文件让研究者之间难以形成合力。
与之相比,SwanLab提供了一套云端AI实验跟踪方案,面向训练过程,提供了训练可视化、实验跟踪、超参数记录、日志记录、多人协同等功能,研究者能轻松通过直观的可视化图表找到迭代灵感,并且通过在线链接的分享与基于组织的多人协同训练,打破团队沟通的壁垒。
以往的AI研究的分享和开源更关注结果,而我们更关注过程。
社区用户对SwanLab的产品评价可以归结为简洁易用、提升效率与迭代迅速
——泽毅,SwanLab 联合创始人
更重要的是,SwanLab是开源的,由一帮热爱开源的机器学习工程师与社区共同构建,我们提供了完全自托管的版本,可以保证你的数据安全与隐私性。
-SwanLab能做什么?
1) 📊实验指标与超参数跟踪: 极简的代码嵌入您的机器学习pipeline,跟踪记录训练关键指标
- 自由的超参数与实验配置记录
- 支持的元数据类型:标量指标、图像、音频、文本、...
- 支持的图表类型:折线图、媒体图(图像、音频、文本)、...
- 自动记录:控制台logging、GPU硬件、Git信息、Python解释器、Python库列表、代码目录
2.)⚡️全面的框架集成: PyTorch、PyTorch Lightning、🤗HuggingFace Transformers、MMEngine、Ultralytics等主流框架
3)📦组织实验: 集中式仪表板,快速管理多个项目与实验,通过整体视图速览训练全局
4) 🆚比较结果: 通过在线表格与对比图表比较不同实验的超参数和结果,挖掘迭代灵感
5) 👥在线协作: 您可以与团队进行协作式训练,支持将实验实时同步在一个项目下,您可以在线查看团队的训练记录,基于结果发表看法与建议
6) ✉️分享结果: 复制和发送持久的URL来共享每个实验,方便地发送给伙伴,或嵌入到在线笔记
7) 💻支持自托管: 支持不联网使用,自托管的社区版同样可以查看仪表盘与管理实验
2. 将超参数字典(例如学习率或模型类型)存储到您的配置中 ( swanlab.config)。
3. 在训练循环中随时间记录指标 ( swanlab.log()),例如准确性acc和损失loss。
接下来的伪代码演示了常见的SwanLab实验跟踪工作流:
# 1. 创建1个SwanLab实验
swanlab.init(project="my-project-name")
# 2. 存储模型的输入或超参数
swanlab.config.learning_rate = 0.01
# 这里写模型的训练代码
...
# 3. 记录随时间变化的指标以可视化表现
swanlab.log({"loss": loss})
如何开始?
1. 创建账号并安装SwanLab
在开始之前,请确保你创建好了一个SwanLab账号,并安装了我们的Python库。
- 在 SwanLab官网 免费注册账号,然后登录你的SwanLab账号
- 使用 pip 在Python3环境的计算机上安装swanlab库
打开命令行(Windows系统推荐使用PowerShell),输入:
bash
pip install swanlab
按下回车,等待片刻完成安装。
2. 在编程环境上登录SwanLab
下一步,你需要在你的编程环境上登录SwanLab。
打开命令行,输入:
bash
swanlab login
出现如下提示时:
bash
swanlab: Logging into swanlab cloud.
swanlab: You can find your API key at: https://dev101.swanlab.cn/settings
swanlab: Paste an API key from your profile and hit enter, or press 'CTRL-C' to quit:
在用户设置页面复制您的 API Key,粘贴后按下回车,即可完成登录。
3. 开启一个实验并跟踪超参数
在Python脚本中,我们用swanlab.init
创建一个SwanLab实验,并向config
参数传递将一个包含超参数键值对的字典:
python
run = swanlab.init(
# 设置项目
project="my-project",
# 跟踪超参数与实验元数据
config={
"learning_rate": 0.01,
"epochs": 10,
},
)
run
是SwanLab的基本组成部分,你将经常使用它来记录与跟踪实验指标。
4. 记录实验指标
在Python脚本中,用swanlab.log
记录实验指标(比如准确率acc和损失值loss)。
用法是将一个包含指标的字典传递给swanlab.log
:
python
swanlab.log({"accuracy": acc, "loss": loss})
5. 完整代码,在线查看可视化看板
我们将上面的步骤整合为下面所示的完整代码:
python
import swanlab
import random
# 初始化SwanLab
run = swanlab.init(
# 设置项目
project="my-project",
# 跟踪超参数与实验元数据
config={
"learning_rate": 0.01,
"epochs": 10,
},
)
print(f"学习率为{run.config.learning_rate}")
offset = random.random() / 5
# 模拟训练过程
for epoch in range(2, run.config.epochs):
acc = 1 - 2**-epoch - random.random() / epoch - offset
loss = 2**-epoch + random.random() / epoch + offset
print(f"epoch={epoch}, accuracy={acc}, loss={loss}")
# 记录指标
swanlab.log({"accuracy": acc, "loss": loss})
运行代码,访问SwanLab,查看在每个训练步骤中,你使用SwanLab记录的指标(准确率和损失值)的改进情况。
探索以下资源以了解SwanLab实验跟踪: