前言

  • 文章来源: LawsonAbs@CSDN
  • 本文介绍深度学习模型训练过程中最最最最经常且应该使用的神器——wandb!

1. wandb

1.1 是什么?

初步接触wandb 是在TPLinker 这篇论文的代码,当初还觉得这作者搞这么麻烦的日志记录干嘛,搞不懂 (现在才知道自己是多么的无知 -_-||
训练神经网络模型需要记录每次运行的参数,这是非常重要的一个步骤,如果仅靠自己+excel来做简直太低效了。那么wandb就是一个非常好的日志记录工具了。(我要吹爆!

1.2 如何使用?

那么如何使用 wandb 呢? 非常简单,想在模型训练中添加wandb记录日志袋盖只需要5行代码:

import wandb # 导入wandb库

# 放在程序入口 
wandb.init(project="csdn_lawsonabs",entity="lawsonabs",config=opt) # project 含义是当前跑的这个模型日志放在哪个project下,entity代表是哪个用户下,config 代表是本次模型运行的参数

# 放在
wandb.log(dict_info) # dict_info 是一个字典形式的信息,主要是记录模型的metric等信息,如f1,recall , precision

2. sweep

sweep 可以和wandb一起结合来使用,主要是用来寻找模型较为合适的超参数。最常见的一个图是:
在这里插入图片描述
这里就会给出 learning_rateneg_weight 对模型效果(dev_f1)的影响。同时模型也会给出整个模型中较为重要的参数。

那么该怎么结合wandb 使用 sweep呢?主要有三种方法,但是这里我介绍使用yml文件配置的方法。主要步骤是:

  • step 1. 写一个配置文件
method: bayes # 寻找参数的方法 
metric: # 衡量目标
  goal: maximize
  name: ing f1
parameters: # 参数项,就是我们需要调参的参数集合
  activation: 
    distribution: categorical
    values:
    - relu
    - tanh
  dropout:
    distribution: uniform
    max: 0.6
    min: 0.1
  epoch:
    distribution: int_uniform
    max: 300
    min: 150
  graph_threshold:
    distribution: uniform
    max: 0.99
    min: 0.9
  lr:
    distribution: uniform
    max: 0.02
    min: 0.0005
  lr_bert:
    distribution: uniform
    max: 4e-05
    min: 1e-05
  lr_rgcn:
    distribution: uniform
    max: 0.01
    min: 0.0005
  negativa_alpha:
    distribution: int_uniform
    max: 30
    min: 1
  weight_decay:
    distribution: uniform
    max: 0.0002
    min: 5e-05
program: train_rrcs_no_batch.py
  • step 2. 创建sweep anget
    wandb sweep train.yml
    这个步骤会得到一个sweep 实例,后面我们使用这个实例即可。

  • 运行sweep 实例
    指定显卡+nohup运行+写入日志到文件+后台运行
    CUDA_VISIBLE_DEVICES=2 nohup wandb agent lawsonabs/RRCS-code/guukojam > train.log 2>&1 &

需要注意的是:这个agent 会在该卡上继续运行,直到所有的参数搜索完毕。如果中途想取消正在运行的sweep 实例,可以执行如下命令
在这里插入图片描述

参考资料

可以参考wandb中的文档

  • https://docs.wandb.ai/ref/cli/wandb-sweep
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐