メインコンテンツへスキップ
このチュートリアルでは、ハイパーパラメーター探索を自動化し、最良のモデルを生成する設定を見つけるために、sweep を定義し、初期化して実行する方法を紹介します。これは、すでに run のログを W&B に記録することに慣れていて、大規模なハイパーパラメーター調整を始めたいユーザーを対象としています。 このチュートリアルには、主なステップが 4 つあります。
  1. トレーニングコードを設定する
  2. sweep 設定で探索空間を定義する
  3. sweep を初期化する
  4. sweep エージェントを起動する
まず、以下のコードを Jupyter Notebook または Python スクリプトにコピー&ペーストしてください。以下のセクションでは、この例の各部分を順に説明します。

トレーニングコードを設定する

sweep エージェントは、試行するハイパーパラメーター値の組み合わせごとにトレーニング関数を呼び出すため、最初のステップは、それらの値を受け取り、メトリクスを W&B に報告する関数を記述することです。 wandb.Run.config からハイパーパラメーターの値を受け取り、それらを使用してモデルをトレーニングし、メトリクスを返すトレーニング関数を定義します。 必要に応じて、run の出力を保存するproject名を指定します (wandb.init() の project パラメーター) 。projectを指定しない場合、run は “Uncategorized” project に配置されます。
sweep と run は、どちらも同じproject内に存在する必要があります。そのため、W&B の初期化時に指定する名前は、sweep の初期化時に指定するproject名と一致している必要があります。

sweep 設定で探索空間を定義する

トレーニング関数を用意したら、次のステップは、どのハイパーパラメーターを変更するか、またそれらをどのように探索するかを W&B に指定することです。 辞書で、sweep 対象のハイパーパラメーターを指定します。設定オプションについては、sweep 設定を定義するを参照してください。 次の例は、ランダムサーチ ('method':'random') を使用する sweep 設定を示しています。この sweep では、x パラメーターと y パラメーターについて、設定に列挙された値の組み合わせからランダムに選択されます。 metric キーに "goal": "minimize" が関連付けられている場合、W&B はそのキーで指定されたメトリクスを最小化します。この場合、W&B はメトリクス score ("name": "score") が最小になるように最適化します。

Sweep を初期化する

sweep を初期化すると、探索空間が W&B に登録され、エージェントがハイパーパラメーターの組み合わせをリクエストするために使用する識別子が返されます。 W&B では、Sweep Controller を使用して、クラウド (standard) またはローカル (local) で、1 台以上のマシンにまたがる sweep を管理します。Sweep Controller の詳細については、ローカルでアルゴリズムを検索および停止するを参照してください。 sweep を初期化すると、sweep の識別番号が返されます。
詳細は、sweeps を初期化する を参照してください。

sweep を開始する

sweep を登録したら、Runs を実行して探索空間を探索するエージェントを起動します。 sweep を開始するには、wandb.agent() API を使用します。
エージェントが起動すると、W&B からハイパーパラメーターの組み合わせを取得し、各組み合わせに対してトレーニング関数を呼び出して、生成されたメトリクスを project にログします。
マルチプロセッシングPython 標準ライブラリの multiprocessing パッケージまたは PyTorch の pytorch.multiprocessing パッケージを使用する場合は、wandb.agent()wandb.sweep() の呼び出しを if __name__ == '__main__': で囲む必要があります。例:
この慣例により、コードはスクリプトが直接実行された場合にのみ実行され、ワーカープロセスでモジュールとして読み込まれた場合には実行されません。マルチプロセッシングの詳細については、Python 標準ライブラリの multiprocessing または PyTorch multiprocessing を参照してください。if __name__ == '__main__': の慣例の詳細については、Real Python の __main__ ガイド を参照してください。

オプション: 結果を可視化する

sweep の実行が始まったら、W&B App でさまざまなハイパーパラメーターの組み合わせがメトリクスにどのような影響を与えるかを確認できます。 project を開くと、W&B App のダッシュボードでリアルタイムの結果を確認できます。数回クリックするだけで、並列座標プロットパラメーター重要度分析その他のチャートタイプ などの対話型チャートを作成できます。
Sweeps ダッシュボードの例
詳細は, sweep の結果を可視化するを参照してください。ダッシュボードの例については、こちらのサンプル Sweeps Project を参照してください。

任意: エージェントを停止する

ターミナルで Ctrl+C を押すと、現在の run を停止できます。もう一度押すと、エージェントが終了します。