Shortcuts

可视化训练日志

MMEngine 集成了 TensorBoardWeights & Biases (WandB)MLflowClearMLNeptuneDVCLiveAim 实验管理工具,你可以很方便地跟踪和可视化损失及准确率等指标。

下面基于 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()

image

可以点击 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()

image

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()

image

请注意:若未提供 projectapi_token ,neptune 将被设置成离线模式,产生的文件将保存到本地 .neptune 文件下。 推荐在初始化时提供 projectapi_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 文件,即可看到如下图的可视化效果。

image

你还可以安装 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,界面如下图所示。

image

初始化配置参数可点击 Aim SDK Reference 查询。

Read the Docs v: latest
Versions
latest
stable
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.1
v0.9.0
v0.8.5
v0.8.4
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.7.4
v0.7.3
v0.7.2
v0.7.1
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.3.0
v0.2.0
Downloads
epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.