Skip to main content
この記事では、W&B を分散トレーニング用フレームワークと併用したときに発生するトレーニングのハングを解消し、run が停止せずに開始および終了できるようにする方法を説明します。 W&B を分散トレーニングで使用するときにトレーニングがハングする主な原因は、次の 2 つです。
  • トレーニング開始時にハングする: W&B のマルチプロセッシングが、分散トレーニング用フレームワークのマルチプロセッシングと干渉することがあります。
  • トレーニング終了時にハングする: W&B のプロセスは、いつ終了すべきかを認識できません。

開始時のハングを解消する

トレーニングの開始時に run が停止する場合、通常は W&B のマルチプロセッシングと分散トレーニング フレームワークのマルチプロセッシングが競合していることが原因です。これを解決するには、W&B Service を有効にしてください。これは W&B SDK 0.13.0 以降でデフォルトになっています。古いバージョンを使用している場合は、SDK をアップグレードしてください。
pip install --upgrade wandb
W&B SDK 0.12.5 から 0.12.x までは、W&B Service を明示的に有効化します:
def main():
    wandb.require("service")
    # 以降のスクリプト処理
W&B SDK 0.12.4 以前では、WANDB_START_METHOD 環境変数を設定してください:
export WANDB_START_METHOD=thread
W&B Service を有効にするか (古い SDK では start method を設定すると) 、分散トレーニング run は止まることなく開始されます。

終了時のハングを解消する

トレーニング完了後に run が停止する場合、W&B は run が終了したことを検出できていません。トレーニングスクリプトの最後で wandb.finish() を呼び出し、run が完了したことを W&B に通知します:
wandb.finish()
この呼び出しにより、すべてのデータがアップロードされ、W&B プロセスが正常に終了します。 詳細は、分散トレーニングをご覧ください。
Experiments Run のクラッシュ