CV工具:可视化工具wandb(一)实验跟踪 Experiment Tracking

实时追踪和可视化实验、比较baseline和快速迭代。参考自:https://docs.wandb.ai/guides/track

1. 在代码中集成W&B

  1. wandb.init():在代码的最开始初始化一次新的运行。此代码会返回一个Run对象,然后会创建一个本地的目录,这个目录里面存放所有的日志和文件,然后会异步地传输到W&B的服务器上。如果想要使用一个私有的服务器,也可以使用Self-Hosting
  2. wandb.config: 保存一个超参数的字典。在config中保存的模型设置对后面的组织和查询结果有用。
  3. wandb.log(): 将一个训练循环中的参数记录在日志里。默认情况下,当你调用此行代码时,它会在history对象中追加一个新的step,然后更新summary对象
    • history: 是一个类似字典的数组,它追踪模型参数和指标随时间的变化。时间序列的值默认情况下是以图表形式展示的
    • summary: 默认情况下,使用wandb.log()记录的衡量指标的最后一个值。可以通过手动设置让它记录最高或者最低的指标。
  4. wandb.log_artifact: 保存一次运行中的输出,例如模型的权重或者预测的结果。这可以让你不仅仅追踪模型的训练,而且还追踪所有的对最后模型有影响的流水线步骤。

2. Best Practices

一些指导方针:

  1. Config: 用于记录超参数、架构、数据集以及任何你想用来复现模型的东西。这些会在column中展示出来,可以使用config columns来分组、排序或者是在app中动态过滤运行。
  2. Project:一个project是一个实验的集合,你可以对其中的实验进行比较。每个project有一个专用的仪表盘页面,你可以很容易地开启或者关闭运行组(group of runs),以此来比较不同的模型版本
  3. Notes: 一个快速提交给自己的消息,这个可以在代码中设置以及在表格(table)中编辑
  4. Tags: 查找(indentify)baseline和最喜欢的运行(runs)。可以通过tags来过滤
import wandb

config = dict (
  learning_rate = 0.01,
  momentum = 0.2,
  architecture = "CNN",
  dataset_id = "peds-0192",
  infra = "AWS",
)

wandb.init(
  project="detect-pedestrians",
  notes="tweak baseline",
  tags=["baseline", "paper1"],
  config=config,
)

3. 什么数据被记录到日志里?

3.1 自动记录的

  • 系统指标: CPU\GPU\网络等情况。显示在run页面的system标签下。对于GPU来说,这些记录的参数可以通过nvidia-smi获取。
  • 命令行: run页面的logs标签下记录了标准输出及标准错误输出的内容。

3.2 需要通过特定代码调用记录的

  • Dataset: 可以指定以及特定的数据集样本然后上传到W$B
  • PyTorch 梯度信息: 在代码中添加wandb.watch(model)来查看权重梯度的直方图信息。
  • 配置信息:记录超参、指向数据集的链接或者你正在使用的架构的名称,像这样使用:wandb.init(config=your_config_dictionary)
  • Merics指标: 使用wandb.log来查看模型的指标。会实时更新。

你可能感兴趣的:(CV工具:可视化工具wandb(一)实验跟踪 Experiment Tracking)