前言
文章来源: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_rate
和neg_weight
对模型效果(dev_f1
)的影响。同时模型也会给出整个模型中较为重要的参数。
那么该怎么结合wandb 使用 sweep呢?主要有三种方法,但是这里我介绍使用yml文件配置的方法。主要步骤是:
step 1. 写一个配置文件
method: bayes # 寻找参数的方法 metric: # 衡量目标goal: maximizename: ing f1parameters: # 参数项,就是我们需要调参的参数集合activation: distribution: categoricalvalues:- relu- tanhdropout:distribution: uniformmax: 0.6min: 0.1epoch:distribution: int_uniformmax: 300min: 150graph_threshold:distribution: uniformmax: 0.99min: 0.9lr:distribution: uniformmax: 0.02min: 0.0005lr_bert:distribution: uniformmax: 4e-05min: 1e-05lr_rgcn:distribution: uniformmax: 0.01min: 0.0005negativa_alpha:distribution: int_uniformmax: 30min: 1weight_decay:distribution: uniformmax: 0.0002min: 5e-05program: 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
如果觉得《深度学习模型训练神器之wandb》对你有帮助,请点赞、收藏,并留下你的观点哦!