Walkthrough
このページでは、sweep を定義し、初期化し、実行する方法を示します。主に4つのステップがあります:
以下のコードを Jupyter Notebook か 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 を開始します
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
wandb.agent(sweep_id, function=main, count=10)
以下のセクションでは、コードサンプル内の各ステップについて説明しています。
Set up your training code
wandb.config
からハイパーパラメーターの値を受け取り、それらを使ってモデルをトレーニングし、メトリクスを返すトレーニング関数を定義します。
オプションとして、W&B Run の出力を保存するプロジェクトの名前を指定することもできます(wandb.init
の project パラメータ)。プロジェクトが指定されていない場合、run は "Uncategorized" プロジェクトに保存されます。
sweep と run の両方が同じプロジェクトに属している必要があります。したがって、W&B を初期化するときに指定する名前は、sweep を初期化するときに指定するプロジェクトの名前と一致する必要があります。
# 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})
Define the search space with a sweep configuration
辞書内で、どのハイパーパラメーターを対象にするかを指定します。設定オプションの詳細については、Define sweep configurationを参照してください。
以下の例では、ランダム検索方法('method':'random'
)を使用した sweep 設定を示しています。sweep は、バッチサイズ、エポック、および学習率の設定に記載されたランダムな値セットをランダムに選択します。
sweeps を通じて、W&B はメトリクスキーで指定されたメトリクスを最大化します。以下の例では、W&B は検証精度('val_acc'
)を最大化('goal':'maximize'
)するように設定されています。
# 2: 探索空間を定義します
sweep_configuration = {
"method": "random",
"metric": {"goal": "minimize", "name": "score"},
"parameters": {
"x": {"max": 0.1, "min": 0.01},
"y": {"values": [1, 3, 7]},
},
}
Initialize the Sweep
W&B は Sweep Controller を使用して、クラウド(標準)、ローカル(local)、または複数のマシンで sweeps を管理します。Sweep Controller についての詳細は、Search and stop algorithms locallyを参照してください。
sweep を初期化すると、sweep 識別番号が返されます:
sweep_id = wandb.sweep(sweep=sweep_configuration, project="my-first-sweep")
sweep の初期化についての詳細は、Initialize sweepsを参照してください。
Start the Sweep
sweep agent
を開始するには、wandb.agent
API 呼び出しを使用します。
wandb.agent(sweep_id, function=main, count=10)
Visualize results (optional)
プロジェクトを開いて、W&B アプリのダッシュボードでライブ結果を確認します。わずか数クリックで、パラレル座標図、パラメータの重要性分析、その他のようなリッチでインタラクティブなグラフを作成できます。
結果の可視化方法についての詳細は、Visualize sweep resultsを参照してください。ダッシュボードの例については、このサンプル Sweeps Project を参照してください。
Stop the agent (optional)
ターミナルから Ctrl+c
を押して、現在の sweep agent の run を停止します。agent を終了するには、run を停止した後に再度 Ctrl+c
を押します。