天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > 深度学习模型训练神器之wandb

深度学习模型训练神器之wandb

时间:2022-01-18 01:32:49

相关推荐

深度学习模型训练神器之wandb

前言

文章来源: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: 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》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。