チュートリアル: Sweep を定義、初期化、実行する

スイープ クイックスタートでは、スイープを定義、初期化、実行する方法を示します。主な手順は4つあります。

このページでは、スイープを定義、初期化、および実行する方法を示します。主に4つのステップがあります。

  1. トレーニングコードをセットアップする
  2. スイープ設定で探索空間を定義する
  3. スイープを初期化する
  4. スイープエージェントを開始する

以下のコードを Jupyter ノートブックまたは Python スクリプトにコピーして貼り付けてください。

# W&B Python ライブラリをインポートして W&B にログインする
import wandb

wandb.login()

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

def main():
    wandb.init(project="my-first-sweep")
    score = objective(wandb.config)
    wandb.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_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")

wandb.agent(sweep_id, function=main, count=10)

以下のセクションでは、そのコードサンプルの各ステップを分解し、説明します。

トレーニングコードをセットアップする

wandb.config からハイパーパラメーターの値を取り込み、それを使用してモデルをトレーニングし、メトリクスを返すトレーニング関数を定義します。

オプションとして、W&B Run の出力を保存したいプロジェクトの名前(wandb.init内のproject パラメータ)を指定します。プロジェクトが指定されていない場合、Run は「Uncategorized」プロジェクトに入ります。

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


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

スイープ設定で探索空間を定義する

探索するハイパーパラメーターを辞書で指定します。設定オプションについては、スイープ設定を定義するを参照してください。

次の例では、ランダム検索('method':'random')を使用するスイープ設定を示しています。スイープは、バッチサイズ、エポック、および学習率の設定にリストされているランダムな値を無作為に選択します。

W&Bは、"goal": "minimize"が関連付けられているときに metric キーで指定されたメトリクスを最小化します。この場合、W&Bはメトリクス 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]},
    },
}

スイープを初期化する

W&Bは、クラウド(標準)またはローカル(ローカル)で複数のマシンを横断してスイープを管理するために、Sweep Controller を使用します。Sweep Controller についての詳細は、ローカルで探索と停止のアルゴリズムを確認するを参照してください。

スイープを初期化すると、スイープ識別番号が返されます。

sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")

スイープの初期化に関する詳細は、スイープを初期化するを参照してください。

スイープを開始する

スイープを開始するには、wandb.agent APIコールを使用します。

wandb.agent(sweep_id, function=main, count=10)

結果を視覚化する(オプション)

プロジェクトを開くと、W&Bアプリダッシュボードでライブ結果を確認できます。数回のクリックで豊富なインタラクティブグラフを構築します。例えば、並列座標プロットパラメータの重要度解析、およびその他です。

Sweeps ダッシュボード例

結果の視覚化方法に関する詳細は、スイープ結果を視覚化するを参照してください。サンプルのダッシュボードについては、このスイーププロジェクトを参照してください。

エージェントを停止する(オプション)

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