メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://wb-21fd5541-update-training-api-26.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

このページでは、 Sweeps の定義、初期化、および実行方法について説明します。主に以下の4つのステップがあります。
  1. トレーニングコードのセットアップ
  2. sweep configuration による検索空間の定義
  3. sweep の初期化
  4. sweep agent の開始
以下のコードを Jupyter Notebook または Python スクリプトにコピー&ペーストしてください。
# W&B Pythonライブラリをインポートし、W&Bにログインする
import wandb

# 1: 目的関数/トレーニング関数の定義
def objective(config):
    score = config.x**3 + config.y
    return score

def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})

# 2: 検索空間の定義
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}

# 3: sweep の開始
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")

wandb.agent(sweep_id, function=main, count=10)
以下のセクションでは、コード例の各ステップを詳しく解説します。

トレーニングコードのセットアップ

wandb.Run.config から ハイパーパラメーター の値を受け取り、それらを使用して モデル をトレーニングし、 メトリクス を返すトレーニング関数を定義します。 オプションで、 W&B Runs の出力を保存する プロジェクト 名を指定します( wandb.init() の project パラメータ)。 プロジェクト が指定されていない場合、 run は “Uncategorized” プロジェクト に分類されます。
sweep と run は同じ プロジェクト 内にある必要があります。したがって、 W&B を初期化する際に指定する名前は、 sweep を初期化する際に指定する プロジェクト 名と一致させる必要があります。
# 1: 目的関数/トレーニング関数の定義
def objective(config):
    score = config.x**3 + config.y
    return score


def main():
    with wandb.init(project="my-first-sweep") as run:
        score = objective(run.config)
        run.log({"score": score})

sweep configuration による検索空間の定義

辞書 形式で、 sweep 対象となる ハイパーパラメーター を指定します。設定オプションの詳細については、 Define sweep configuration を参照してください。 上記の例では、 ランダム検索 ('method':'random') を使用する sweep configuration を示しています。この sweep では、設定にリストされた バッチサイズ 、 エポック 、 学習率の中からランダムに値のセットを選択します。 W&B は、 metric キーに "goal": "minimize" が関連付けられている場合、その メトリクス を最小化するように動作します。この例では、 メトリクス score ("name": "score") の最小化を最適化の目標としています。
# 2: 検索空間の定義
sweep_configuration = {
    "method": "random",
    "metric": {"goal": "minimize", "name": "score"},
    "parameters": {
        "x": {"max": 0.1, "min": 0.01},
        "y": {"values": [1, 3, 7]},
    },
}

sweep の初期化

W&B は Sweep コントローラ を使用して、 クラウド (標準設定)または 1 台以上のマシンにまたがる ローカル (local) で sweep を管理します。 Sweep コントローラ に関する詳細は、 Search and stop algorithms locally を参照してください。 sweep を初期化すると、 sweep ID が返されます。
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
sweep の初期化に関する詳細は、 Initialize sweeps を参照してください。

sweep の開始

wandb.agent() API コールを使用して sweep を開始します。
wandb.agent(sweep_id, function=main, count=10)
マルチプロセッシングPython 標準ライブラリの multiprocessing または PyTorch の pytorch.multiprocessing パッケージを使用する場合は、 wandb.agent() および wandb.sweep() の呼び出しを if __name__ == '__main__': でラップする必要があります。例:
if __name__ == '__main__':
    wandb.agent(sweep_id="<sweep_id>", function="<function>", count="<count>")
この慣習に従ってコードをラップすることで、スクリプトが直接実行されたときのみ実行され、ワーカープロセス内でモジュールとしてインポートされたときには実行されないようにします。マルチプロセッシングの詳細については、 Python 標準ライブラリ multiprocessing または PyTorch multiprocessing を参照してください。 if __name__ == '__main__': の慣習については、 https://realpython.com/if-name-main-python/ を参照してください。

結果の視覚化(オプション)

プロジェクト を開き、 W&B App ダッシュボード でリアルタイムの結果を確認します。数回のクリックで、 平行座標プロットパラメータの重要度 分析、 その他のチャートタイプ などのリッチで インタラクティブなグラフ を作成できます。
Sweeps Dashboard example
結果の可視化方法については、 Visualize sweep results を参照してください。 ダッシュボード の例については、こちらの サンプル Sweeps プロジェクト をご覧ください。

エージェントの停止(オプション)

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