wandb快速上手、使用心得(超好用的Tensorboard高替品)

news/2024/12/5 8:01:37/

这里写目录标题

    • 1 wandb介绍
    • 2 快速上手
    • 3 使用心得
      • 3.1 一张图展示两条线
      • 3.2 想要科学上网和wandb一起使用(离线使用)
      • 3.3 未完待续

1 wandb介绍

wandb地址:wandb
Wandb(Weights & Biases)是一个用于机器学习实验跟踪和可视化的工具和平台。它旨在帮助机器学习团队更好地组织、记录和共享实验过程和结果。相较于Tensorboard更加方便和智能。

1. 实验跟踪和版本控制: W&B可以记录和跟踪您的机器学习实验,包括超参数、指标、模型架构等。已用到
2. 可视化和分析: W&B提供丰富的可视化工具,可以直观地展示实验结果、训练曲线、指标趋势等。可以轻松地创建交互式图表、散点图、直方图等,以更好地理解和分析实验数据。已用到
3. 模型登记和部署: W&B可以帮助您登记和管理训练的模型,包括模型文件、权重和元数据。可以轻松地共享和部署模型,以便在其他环境中进行推理和评估。暂时没用到
4. 协作和共享: W&B提供团队协作和共享功能,可以邀请团队成员参与实验、查看结果,并进行讨论和反馈。还可以将实验和结果与其他人共享,使其可以在不同的环境中重现和使用您的工作。暂时没用到
5. 集成和兼容性: W&B与常用的机器学习框架(如PyTorch、TensorFlow、Scikit-learn等)以及其他工具(如Jupyter Notebook、Docker等)具有良好的集成和兼容性,可以无缝地与您的工作流程集成。已用到

上图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 快速上手

参考链接:wandb quickstart

  1. 激活conda环境,安装wandb
pip install wandb 

如果下载太慢,可以使用以下命令从清华源下载

pip install wandb -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 登陆账号,输入API KEY
wandb login

如果报以下错误,请关闭VPN

wandb: Network error (ProxyError), entering retry loop.
wandb: W&B API key is configured. Use `wandb login --relogin` to force relogin
  1. 运行教程案例
import wandb
import random# start a new wandb run to track this script
wandb.init(# set the wandb project where this run will be loggedproject="my-awesome-project",# track hyperparameters and run metadataconfig={"learning_rate": 0.02,"architecture": "CNN","dataset": "CIFAR-100","epochs": 10,}
)# simulate training
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# log metrics to wandbwandb.log({"acc": acc, "loss": loss})# [optional] finish the wandb run, necessary in notebooks
wandb.finish()
  1. 查看结果
    在这里插入图片描述
    运行的结果,系统GPU使用性能啥的,应有尽有:
    在这里插入图片描述

3 使用心得

3.1 一张图展示两条线

需求: 在一张图上展示训练的损失和验证损失,或者是训练的准确度和验证的准确度等

初步解决: 将每一步的结果都放在列表中,然后使用wandb.plot.line_series()画图上传到wandb服务器上。 不推荐,数据显示不友好

最终解决: 直接wandb.log上传结果,然后再wandb服务器上挑选数据重新生成新图

大致架构:

import wandb
# 初始化wandb
wandb.init(# set the wandb project where this run will be loggedproject="项目名称",# track hyperparameters and run metadataconfig={"learning_rate": lr,...}
)# 整体嵌入架构
epochs = 100
for i in range(epochs):net.train():train_total_loss = 0for ... in train_loader:......train_total_loss += loss.item()train_total_acc += acc(....)train_acc = train_total_acc/len(train_loader)net.eval()val_total_loss = 0for ... in val_loader:......val_total_loss += loss.item()val_total_acc += acc(...)val_acc = val_total_acc/len(val_loader)wandb.log({"train_loss":train_total_loss, "val_loss":val_total_loss, "train_acc": train_acc, "val_acc":val_acc})
wandb.finish()

生成图:
在这里插入图片描述

提醒: 每一个epoch中最好只使用一个wandb.log。因为我们每次只是记录纵坐标,横坐标是wandb自动记录wandb.log个数的。
不过也可以自行记录纵坐标,有需要可以留言,我会解答的。

3.2 想要科学上网和wandb一起使用(离线使用)

需求: 一般情况下挂VPN会导致wandb初始化出错,不能连接到wandb服务器进行数据同步上传,因此可以采用离线上传数据

解决: 使用os.environ["WANDB_API_KEY"] 先离线训练,等到训练完成之后,关闭VPN,使用wandb sync命令进行上传数据

大致架构:

import os
import wandb
os.environ["WANDB_API_KEY"] = '自己的API KEY' 
os.environ["WANDB_MODE"] = "offline"

在导包之后添加这两行代码,然后训练结束之后根据提示上传:
在这里插入图片描述

使用命令wandb sync 数据地址 上传数据

查看结果:
在这里插入图片描述
这些运行时间几秒钟的就是我离线上传的数据。

3.3 未完待续

虽然只是初步探索一下,但是发现它的功能真的是超级强大,相较于Tensoboard好用很多,后期用到其他功能也会持续更新的。
wandb操作手册: wandb tutorials


http://www.ppmy.cn/news/482955.html

相关文章

【深度学习】4-4 误差反向传播法 - 算法的具体实现

神经网络学习的全貌图 前提 神经网络中有合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为学习。神经网络的学习分为下面4个步骤: 步骤1(mini-batch) 从训练数据中随机选择一部分数据步骤2(计算梯度) 计算损失函数关于各个权重参数的梯度步…

Android Hilt:强大的依赖注入框架,高级传参解个耦?

作者:J船长 一、Hilt 干依赖注入的 Hilt是干嘛的 Hilt,一个依赖注入框架,谷歌搞出来的,基于Dagger,但是更加简洁易用。 什么是依赖注入 (Dependency Injection) 依赖注入是一种设计模式。主…

设计模式—“数据结构”

常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。 典型模式有:Composite、Iterator、Cha…

三原色亮度最高_行业最亮88000流明三色激光投影机,为何出自中科极光“之手”?...

原标题:行业最亮88000流明三色激光投影机,为何出自中科极光“之手”? 金秋9月是收获的季节,同时也是到了北京最美的季节。在这个充满了喜悦和收获特殊节点,大屏视听行业终于迎来ifocomm2020盛会。 作为工程大屏应用的重…

StencilJs学习之事件

其实并没有所谓的 stencil Event,相反 stencil 鼓励使用 DOM event。然而,Stencil 提供了一个 API 来指定组件可以触发的事件,以及组件监听的事件。 这是通过 Event()和 Listen()装饰器实现的。 Event 装饰器 组件可以使用事件发射器装饰器…

【AntDB数据库】AntDB数据库服务启停(一)

数据库服务启停 集群启停 psql到adbmgr上,可以对集群进行启停操作。 停止集群: stop all;停止agent: stop agent all;启动agent: start agent password xxxxxx ;启动集群: start all;执行完命令后,可…

苹果xsmax有高通基带吗_苹果xs max支持5g吗

苹果xs max并不支持5G网络,而且消费者并不能通过简单的软件升级让iPhone XS Max支持5G网络;预计苹果搭载高通5G基带的iPhone手机最早会在2020年左右面世,因此iPhone XS Max不太可能会推出支持5G的版本。以下是详细介绍: 1、苹果xs…