MMEngine 集成了 TensorBoard、Weights & Biases (WandB)、MLflow 、ClearML、Neptune、DVCLive、Aim和 SwanLab 实验管理工具,你可以很方便地跟踪和可视化损失及准确率等指标。
下面基于 15 分钟上手 MMENGINE 中的例子介绍如何一行配置实验管理工具。
设置 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。
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()使用 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.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 并参考 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。
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 查询。
使用 SwanLab 前需先安装 swanlab 依赖库。
pip install swanlab
swanlab login设置 Runner 初始化参数中的 visualizer,并将 vis_backends 设置为 SwanLabVisBackend。
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='SwanLabVisBackend')]),
)
runner.train()点击 SwanLabVisBackend API 查看 SwanLabVisBackend 可配置的参数。例如 init_kwargs 参数会传给 swanlab.init 方法。
runner = Runner(
...
visualizer=dict(
type='Visualizer',
vis_backends=[
dict(
type='SwanLabVisBackend',
init_kwargs=dict(project='toy-example')
),
],
),
...
)
runner.train()



