Group Runs
個々のジョブを実験にグループ化するには、ユニークなgroup名をwandb.init()に渡します。
ユースケース
- 分散トレーニング: 実験が異なるトレーニングと評価スクリプトに分割されている場合に、これらを大きな全体の一部として表示するためにグループ化を使用します。
- 複数のプロセス: 複数の小さなプロセスを1つの実験にまとめます。
- K-フォールド交差検証: 異なるランダムシードを持つrunを1つの大きな実験としてまとめます。こちらにK-フォールド交差検証のSweepsとグルーピングの例があります。
グルーピングを設定する方法は三つあります:
1. スクリプトでgroupを設定
オプションのgroupとjob_typeをwandb.init()に渡します。これにより、個々のrunを含む各実験専用のグループページが作成されます。例えば: wandb.init(group="experiment_1", job_type="eval")
2. 環境変数でgroupを設定
環境変数としてrunのグループを指定するには、WANDB_RUN_GROUP
を使用します。詳細は環境変数のドキュメントをご確認ください。Groupはプロジェクト内でユニークであり、グループ内のすべてのrunで共有される必要があります。すべてのプロセスで使用するユニークな8文字の文字列を生成するにはwandb.util.generate_id()
を使用できます。例えば os.environ["WANDB_RUN_GROUP"] = "experiment-" + wandb.util.generate_id()
3. UIでグルーピングをトグル
任意のconfigの列で動的にグループ化できます。例えば、wandb.config
を使用してバッチサイズや学習率をログに記録すると、それらのハイパーパラメータによってwebアプリで動的にグループ化できます。
グルーピングを使用した分散トレーニング
もしwandb.init()
でグルーピングを設定した場合、UIではデフォルトでrunがグループ化されます。テーブル上部のGroupボタンをクリックしてこれをオン・オフできます。以下に、グルーピングを設定した場合のプロジェクト例とサンプルコードがあります。サイドバーの各「Group」行をクリックすると、その実験専用のグループページに移動できます。
上記のプロジェクトページから、左のサイドバーでGroupをクリックして、このような専用ページに移動できます: この例
UIでの動的なグルーピング
任意の列でrunをグループ化できます。例えばハイパーパラメータによってグループ化することができます。以下はその例です:
- サイドバー: エポック数でrunがグループ化されています。
- グラフ: 各ラインはグループの平均を表し、シェーディングは分散を示します。この振る舞いはグラフ設定で変更できます。
グルーピングの無効化
グルーピングボタンをクリックして、いつでもグループフィールドをクリアすると、テーブルとグラフがグループ化されていない状態に戻ります。
グラフ設定のグルーピング
グラフの右上の編集ボタンをクリックし、高度な設定タブを選択してラインとシェーディングを変更します。各グループのラインの平均値、最小値、最大値を選択できます。シェーディングについてはオフにすることもでき、最小値と最大値、標準偏差、標準誤差を表示することもできます。
よくある質問
タグによってrunをグループ化できますか?
runには複数のタグを付けられるため、このフィールドでのグルーピングはサポートしていません。私たちのおすすめは、これらのrunのconfig
オブジェクトに値を追加し、このconfig値でグループ化することです。これはAPIを使用して行うことができます。