wandb----基础使用和断点训练时让曲线接上(resume)

1、基础使用

安装   

pip install wandb

初始化

import wandb
wandb.login()

会让你输入api,你新建仓库,复制api就算初始化完成了

wandb----基础使用和断点训练时让曲线接上(resume)_第1张图片

wandb----基础使用和断点训练时让曲线接上(resume)_第2张图片

保存输出参数曲线

可以写一个配置文件

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----基础使用和断点训练时让曲线接上(resume)_第3张图片

最后在你写完所有的功能代码后,要在代码最后加上wandb.finsh()结束wandb传输

2、断点训练让曲线输出在一张图上(resume)

在断点训练的时候不想让wandb重新生成一张图,想在原来的图上继续划线,如下图所示,棕色线是接下去,而下边的绿和墨绿是分开的

wandb----基础使用和断点训练时让曲线接上(resume)_第4张图片

 

首先需要把resume甚至为ture,然后直接运行就可以

wandb.init(project = cfg.project_name, 
           config = cfg.__dict__,
           name =nowtime,
           save_code=True,
           resume=True)

若是发现此时训练的id和上次不一样,那么需要强制更改,找到wandb文件下的json闻佳,更改里边的id为想要继续的id,然后重新运行就可以

wandb----基础使用和断点训练时让曲线接上(resume)_第5张图片

wandb----基础使用和断点训练时让曲线接上(resume)_第6张图片

 3、Artifact文件保存功能

可以使用一下代码来保存每一次运行的日志,模型等文件

 wandb----基础使用和断点训练时让曲线接上(resume)_第7张图片

 这段代码是放到我的模型训练后的,在写完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()

你可能感兴趣的:(动手学习深度学习,python,深度学习,开发语言)