MMEngine

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

Weights and Biases は、専用の WandbVisBackend を介して MMEngine に直接統合されており、以下のことが可能です。

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

はじめに

openmimwandb をインストールします。

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

次に、mim を使用して mmenginemmcv をインストールします。

mim install -q mmengine mmcv
!mim install -q mmengine mmcv

WandbVisBackend を MMEngine Runner で使用する

このセクションでは、mmengine.runner.Runner を使用して WandbVisBackend を使用する典型的な ワークフロー を示します。

  1. 可視化 config から visualizer を定義します。

    from mmengine.visualization import Visualizer
    
    # 可視化 config を定義します
    visualization_cfg = dict(
        name="wandb_visualizer",
        vis_backends=[
            dict(
                type='WandbVisBackend',
                init_kwargs=dict(project="mmengine"),
            )
        ],
        save_dir="runs/wandb"
    )
    
    # 可視化 config から visualizer を取得します
    visualizer = Visualizer.get_instance(**visualization_cfg)
    

  1. visualizerrunner を初期化し、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 コンピュータビジョン ライブラリ で 実験 を追跡するためにも簡単に使用できます。

# デフォルトの ランタイム config からベース config を継承します
_base_ = ["../_base_/default_runtime.py"]

# `WandbVisBackend` config 辞書を、
# ベース config からの `visualizer` の `vis_backends` に割り当てます
_base_.visualizer.vis_backends = [
    dict(
        type='WandbVisBackend',
        init_kwargs={
            'project': 'mmdet',
            'entity': 'geekyrakshit'
        },
    ),
]