Skip to main content
このガイドでは、ハイパーパラメーター探索を最適化するために、Python のトレーニングスクリプトまたはノートブックに W&B を統合する際の推奨事項を紹介します。これらの推奨事項に従うと、W&B Sweeps を使用してハイパーパラメーターの値を探索し、トレーニングと検証のメトリクスをログして、優れたモデル性能が得られる設定を特定できます。 このガイドは、Python のトレーニングスクリプトをすでに用意しており、ハイパーパラメーター sweep のサポートを追加したい機械学習の実務者を対象としています。以下のセクションでは、まずトレーニングスクリプトの例を紹介し、次にそのスクリプトを W&B Sweeps で動作するように更新する方法を説明します。

元のトレーニングスクリプト

モデルをトレーニングする Python スクリプトがあるとします (以下のコードを参照) 。目標は、検証精度 (val_acc) を最大化するハイパーパラメーターを見つけることです。 この Python スクリプトでは、train_one_epoch と evaluate_one_epoch の 2 つの関数を定義します。train_one_epoch 関数は 1 エポック分のトレーニングをシミュレートし、トレーニングの精度と損失を返します。evaluate_one_epoch 関数は検証データセットでのモデルの評価をシミュレートし、検証精度と損失を返します。 学習率、バッチサイズ、エポック数などのハイパーパラメーター値を含む、config という名前の設定辞書を定義します。この設定辞書の値によってトレーニングプロセスを制御します。 次に、一般的なトレーニングループを模した main という関数を定義します。スクリプトはエポックごとに、トレーニングデータセットと検証データセットでの精度と損失を計算します。
このコードはモックのトレーニングスクリプトです。実際にはモデルをトレーニングせず、精度と損失の値をランダムに生成してトレーニングプロセスをシミュレートします。このコードの目的は、トレーニングスクリプトに W&B を統合する方法を示すことです。
以下のセクションでは、Python スクリプトに W&B を追加して、トレーニング中のハイパーパラメーターとメトリクスをトラッキングする方法を説明します。ここでは、W&B を使用して、検証精度 (val_acc) を最大化する最適なハイパーパラメーターを検索することを目指します。

トレーニングスクリプトに W&B を追加する

このセクションでは、元のトレーニングスクリプトを変更して、sweep エージェントが各 run にハイパーパラメーターの値を渡し、得られたメトリクスを W&B で記録できるようにする方法を説明します。Python スクリプトまたはノートブックに W&B を統合する方法は、sweep の管理方法によって異なります。 W&B Python SDK を使用して sweep の開始、停止、管理を行う場合は、Python script or notebook タブの手順に従ってください。W&B CLI を使用する場合は、CLI タブの手順に従ってください。
sweep 設定を記述した YAML 設定ファイルを作成します。設定ファイルには、sweep で探索するハイパーパラメーターを定義します。次の例では、sweep は run ごとに batch_size、epochs、lr の各ハイパーパラメーターの値を変化させます。
詳細については、sweep 設定を定義するを参照してください。YAML ファイルの program キーには、Python スクリプトの名前を指定する必要があります。次に、コード例に以下を追加します。
  1. W&B Python SDK (wandb) と PyYAML (yaml) をインポートします。PyYAML は YAML 設定ファイルの読み込みに使用します。
  2. 設定ファイルを読み込みます。
  3. wandb.init() を使用して、データを同期し W&B Run としてログするバックグラウンドプロセスを開始します。設定オブジェクトを config パラメーターに渡します。
  4. ハイパーパラメーターの値はハードコードせず、wandb.Run.config から取得して定義します。
  5. 最適化したいメトリクスを wandb.Run.log() でログします。設定で定義したメトリクスは必ずログしてください。この例では、設定辞書 (sweep_configuration) で、val_acc の値を最大化するように sweep を定義しています。
トレーニングスクリプトを更新したら、CLI から sweep を初期化して開始します。
  1. wandb sweep コマンドで sweep を初期化します。引数には YAML ファイル名を指定します。必要に応じて、--project フラグでプロジェクト名を指定します。
    このコマンドを実行すると sweep ID が返されます。詳細については、sweep を初期化するを参照してください。
  2. sweep ID をコピーし、次のコマンドの [SWEEP-ID] を置き換えてから、wandb agent コマンドで sweep ジョブを開始します。[YOUR-ENTITY] は W&B の entity 名に置き換えてください。必要に応じて、--count を指定すると、エージェントが試行する run の数を制限できます (この例では 5 に設定しています) 。
sweep エージェントは、YAML 設定で定義したハイパーパラメーター値の組み合わせを毎回変えながらトレーニングスクリプトを繰り返し実行し、その結果を W&B にログします。詳細については、sweep ジョブを開始するを参照してください。
sweep で W&B にメトリクスをログする最適化の対象として定義するメトリクスは、sweep 設定で定義するだけでなく、wandb.Run.log() でもログする必要があります。たとえば、sweep 設定で最適化するメトリクスを val_acc と定義した場合は、val_acc も W&B にログする必要があります。メトリクスをログしないと、W&B は最適化を実行できません。
次の例は、W&B へのメトリクスのログ方法が誤っています。sweep 設定では val_acc を最適化の対象としていますが、コードでは val_acc をキー validation 配下のネストされた辞書内にログしています。メトリクスはネストされた辞書内ではなく、直接ログする必要があります。
最終更新日 2026年9月30日