pip install wandb
import wandb
wandb.login()
会让你输入api,你新建仓库,复制api就算初始化完成了
可以写一个配置文件
cfg = Namespace(
project_name = 'snake2022',
batch_size =20,
lr = 0.001,
max_lr = 0.001,
epochs = 20,
wd = 5e-4,
optimizer_type = 'AdamW',
scheduler_type = 'OneCycleLR',
num_workers = 48,
#采用那个模型
model_number = 7,
#开启多gpu
more_gpu = True,
checkpoint_path = 'best_checkpoint.pth',
id = wandb.util.generate_id(),
best_acc = 0.0,
resume = True
)
你想要输出什么曲线就可以输入
wandb.init(project = cfg.project_name,
config = cfg.__dict__,
name =nowtime,
save_code=True,
resume=True)
最后在训练代码中加入输出曲线的代码wandb.log
wandb.log({"train_acc":train_acc,
"train_loss":train_loss,
"lr":optimizer.param_groups[0]['lr'],
"epoch": epoch})
每一次运行就会生成一个图,还可以生成报告分享给别人看
最后在你写完所有的功能代码后,要在代码最后加上wandb.finsh()结束wandb传输
在断点训练的时候不想让wandb重新生成一张图,想在原来的图上继续划线,如下图所示,棕色线是接下去,而下边的绿和墨绿是分开的
首先需要把resume甚至为ture,然后直接运行就可以
wandb.init(project = cfg.project_name,
config = cfg.__dict__,
name =nowtime,
save_code=True,
resume=True)
若是发现此时训练的id和上次不一样,那么需要强制更改,找到wandb文件下的json闻佳,更改里边的id为想要继续的id,然后重新运行就可以
可以使用一下代码来保存每一次运行的日志,模型等文件
这段代码是放到我的模型训练后的,在写完wandb的其他代码后要加上wandb.finsh()
arti_code = wandb.Artifact('ipynb',type = 'effb7')
arti_code.add_file('snake2022.ipynb')
wandb.log_artifact(arti_code)
arti_bmodel= wandb.Artifact('bestcheckpoint',type = 'effb7')
arti_bmodel.add_file('best_checkpoint.pth')
wandb.log_artifact(arti_bmodel)
arti_lmodel= wandb.Artifact('lastcheckpoint',type = 'effb7')
arti_lmodel.add_file('last_checkpoint.pth')
wandb.log_artifact(arti_lmodel)
arti_log = wandb.Artifact('effb7-log',type = 'effb7')
arti_log.add_file('effb7-02.txt')
wandb.log_artifact(arti_log)
wandb.finish()