7.6 KiB
可视化训练日志
MMEngine 集成了 TensorBoard、Weights & Biases (WandB)、MLflow 、ClearML、Neptune、DVCLive 和 Aim 实验管理工具,你可以很方便地跟踪和可视化损失及准确率等指标。
下面基于 15 分钟上手 MMENGINE 中的例子介绍如何一行配置实验管理工具。
TensorBoard
设置 Runner
初始化参数中的 visualizer
,并将 vis_backends
设置为 TensorboardVisBackend。
runner = Runner(
model=MMResNet50(),
work_dir='./work_dir',
train_dataloader=train_dataloader,
optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
val_dataloader=val_dataloader,
val_cfg=dict(),
val_evaluator=dict(type=Accuracy),
visualizer=dict(type='Visualizer', vis_backends=[dict(type='TensorboardVisBackend')]),
)
runner.train()
WandB
使用 WandB 前需安装依赖库 wandb
并登录至 wandb。
pip install wandb
wandb login
设置 Runner
初始化参数中的 visualizer
,并将 vis_backends
设置为 WandbVisBackend。
runner = Runner(
model=MMResNet50(),
work_dir='./work_dir',
train_dataloader=train_dataloader,
optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
val_dataloader=val_dataloader,
val_cfg=dict(),
val_evaluator=dict(type=Accuracy),
visualizer=dict(type='Visualizer', vis_backends=[dict(type='WandbVisBackend')]),
)
runner.train()
可以点击 WandbVisBackend API 查看 WandbVisBackend
可配置的参数。例如 init_kwargs
,该参数会传给 wandb.init 方法。
runner = Runner(
...
visualizer=dict(
type='Visualizer',
vis_backends=[
dict(
type='WandbVisBackend',
init_kwargs=dict(project='toy-example')
),
],
),
...
)
runner.train()
MLflow (WIP)
ClearML
使用 ClearML 前需安装依赖库 clearml
并参考 Connect ClearML SDK to the Server 进行配置。
pip install clearml
clearml-init
设置 Runner
初始化参数中的 visualizer
,并将 vis_backends
设置为 ClearMLVisBackend。
runner = Runner(
model=MMResNet50(),
work_dir='./work_dir',
train_dataloader=train_dataloader,
optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
val_dataloader=val_dataloader,
val_cfg=dict(),
val_evaluator=dict(type=Accuracy),
visualizer=dict(type='Visualizer', vis_backends=[dict(type='ClearMLVisBackend')]),
)
runner.train()
Neptune
使用 Neptune 前需先安装依赖库 neptune
并登录 Neptune.AI 进行配置。
pip install neptune
设置 Runner
初始化参数中的 visualizer
,并将 vis_backends
设置为 NeptuneVisBackend。
runner = Runner(
model=MMResNet50(),
work_dir='./work_dir',
train_dataloader=train_dataloader,
optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
val_dataloader=val_dataloader,
val_cfg=dict(),
val_evaluator=dict(type=Accuracy),
visualizer=dict(type='Visualizer', vis_backends=[dict(type='NeptuneVisBackend')]),
)
runner.train()
请注意:若未提供 project
和 api_token
,neptune 将被设置成离线模式,产生的文件将保存到本地 .neptune
文件下。
推荐在初始化时提供 project
和 api_token
,具体方法如下所示:
runner = Runner(
...
visualizer=dict(
type='Visualizer',
vis_backends=[
dict(
type='NeptuneVisBackend',
init_kwargs=dict(project='workspace-name/project-name',
api_token='your api token')
),
],
),
...
)
runner.train()
更多初始化配置参数可点击 neptune.init_run API 查询。
DVCLive
使用 DVCLive 前需先安装依赖库 dvclive
并参考 iterative.ai 进行配置。常见的配置方式如下:
pip install dvclive
cd ${WORK_DIR}
git init
dvc init
git commit -m "DVC init"
设置 Runner
初始化参数中的 visualizer
,并将 vis_backends
设置为 DVCLiveVisBackend。
runner = Runner(
model=MMResNet50(),
work_dir='./work_dir_dvc',
train_dataloader=train_dataloader,
optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
val_dataloader=val_dataloader,
val_cfg=dict(),
val_evaluator=dict(type=Accuracy),
visualizer=dict(type='Visualizer', vis_backends=[dict(type='DVCLiveVisBackend')]),
)
runner.train()
推荐将 `work_dir` 设置为 `work_dirs`。否则,你在 OpenMMLab 仓库中运行试验时,DVC 会给出警告 `WARNING:dvclive:Error in cache: bad DVC file name 'work_dirs\xxx.dvc' is git-ignored`。
打开 work_dir_dvc
下面的 report.html
文件,即可看到如下图的可视化效果。
你还可以安装 VSCode 扩展 DVC 进行可视化。
更多初始化配置参数可点击 DVCLive API Reference 查询。
Aim
使用 Aim 前需先安装依赖库 aim
。
pip install aim
设置 Runner
初始化参数中的 visualizer
,并将 vis_backends
设置为 AimVisBackend。
runner = Runner(
model=MMResNet50(),
work_dir='./work_dir',
train_dataloader=train_dataloader,
optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
val_dataloader=val_dataloader,
val_cfg=dict(),
val_evaluator=dict(type=Accuracy),
visualizer=dict(type='Visualizer', vis_backends=[dict(type='AimVisBackend')]),
)
runner.train()
在终端中输入
aim up
或者在 Jupyter Notebook 中输入
%load_ext aim
%aim up
即可启动 Aim UI,界面如下图所示。
初始化配置参数可点击 Aim SDK Reference 查询。