MMEngine

MMEngine by OpenMMLab は、PyTorch に基づくディープラーニングモデルのトレーニングのための基盤ライブラリです。MMEngine は OpenMMLab のアルゴリズムライブラリ用の次世代のトレーニングアーキテクチャーを実装し、OpenMMLab 内の30以上のアルゴリズムライブラリに対して統一された実行基盤を提供します。そのコアコンポーネントには、トレーニングエンジン、評価エンジン、モジュール管理が含まれます。

Weights and Biases は、専用のWandbVisBackendを通じて MMEngine に直接統合されています。これを使用して

  • トレーニングおよび評価メトリクスをログする。
  • 実験設定をログおよび管理する。
  • グラフ、画像、スカラーなどの追加記録をログする。

はじめに

openmim および wandb をインストールします。

pip install -q -U openmim wandb
!pip install -q -U openmim wandb

次に、mim を使用して mmengine および mmcv をインストールします。

mim install -q mmengine mmcv
!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)
    

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

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

WandbVisBackend は、MMDetection のような OpenMMLab コンピュータビジョンライブラリを使って実験管理を追跡するためにも簡単に使用できます。

# デフォルトのランタイム設定から基本設定を継承する
_base_ = ["../_base_/default_runtime.py"]

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