Skip to main content
OpenMMLab による MMEngine は、PyTorch ベースのディープラーニングモデルをトレーニングするための基盤ライブラリです。MMEngine は OpenMMLab のアルゴリズムライブラリ向けに次世代のトレーニングアーキテクチャを実装しており、OpenMMLab 内の 30 を超えるアルゴリズムライブラリに対して、統一された実行基盤を提供します。中核となるコンポーネントには、トレーニングエンジン、評価エンジン、モジュール管理が含まれます。 W&B は、専用の WandbVisBackend を通じて MMEngine に直接統合されており、これを使用して次のことができます。
  • トレーニングおよび評価のメトリクスをログする。
  • 実験の設定をログし、管理する。
  • グラフ、画像、スカラーなどの追加データをログする。

はじめに

openmimwandb をインストールします。
pip install -q -U openmim wandb
次に、mim を使って mmenginemmcv をインストールします。
mim install -q mmengine mmcv

WandbVisBackend を MMEngine Runner で使用する

このセクションでは、mmengine.runner.Runner を使って WandbVisBackend を利用する一般的なワークフローを説明します。
  1. 可視化設定から visualizer を定義します。
    from mmengine.visualization import Visualizer
    
    # 可視化設定を定義する
    visualization_cfg = dict(
        name="wandb_visualizer",
        vis_backends=[
            dict(
                type='WandbVisBackend',
                init_kwargs=dict(project="mmengine"),
            )
        ],
        save_dir="runs/wandb"
    )
    
    # 可視化設定から visualizer を取得する
    visualizer = Visualizer.get_instance(**visualization_cfg)
    
    init_kwargs には、W&B run の初期化の入力パラメーターとして使用する引数の辞書を渡します。
  2. visualizer を指定して runner を初期化し、runner.train() を呼び出します。
    from mmengine.runner import Runner
    
    # PyTorch 用のトレーニングヘルパーである mmengine Runner を構築する
    runner = Runner(
        model,
        work_dir='runs/gan/',
        train_dataloader=train_dataloader,
        train_cfg=train_cfg,
        optim_wrapper=opt_wrapper_dict,
        visualizer=visualizer, # visualizer を渡す
    )
    
    # トレーニングを開始する
    runner.train()
    

OpenMMLabのコンピュータビジョンライブラリでWandbVisBackendを使用する

WandbVisBackendは、MMDetection などのOpenMMLabのコンピュータビジョンライブラリでExperimentsを管理する際にも、簡単に使用できます。
# デフォルトのランタイム設定から基本設定を継承する
_base_ = ["../_base_/default_runtime.py"]

# 基本設定の `visualizer` の `vis_backends` に
# `WandbVisBackend` の設定dictを割り当てる
_base_.visualizer.vis_backends = [
    dict(
        type='WandbVisBackend',
        init_kwargs={
            'project': 'mmdet',
            'entity': 'geekyrakshit'
        },
    ),
]