Skip to main content
W&B を使用して、機械学習の実験管理、データセットのバージョン管理、project でのコラボレーションを行いましょう。
W&B を使用するメリット

このノートブックの内容

このチュートリアルでは、W&B を PyTorch のトレーニングコードに統合し、実験のトラッキング、メトリクスと勾配のログ、モデルのバージョン管理を行う方法を説明します。既存の PyTorch パイプラインに実験管理を追加する際にご活用ください。
PyTorch と W&B のインテグレーションの図
動画チュートリアルを見ながら進めることもできます。 既存のパイプラインに W&B を統合するには、Step で始まるセクションだけを実行すれば十分です。それ以外のセクションでは、データの読み込みとモデルの定義を行います。

インストール、インポート、ログイン

実験を定義する前に、環境を設定して W&B で認証します。

ステップ 0: W&B をインストールする

まず、pip を使用して wandb ライブラリをインストールします。

ステップ 1: W&B をインポートしてログインする

W&B サービスにデータをログするには、ログインが必要です。 W&B を初めて使用する場合は、表示されるリンクから無料アカウントに登録してください。

実験とパイプラインを定義する

W&B のインストールとセッションの認証が完了したら、実験の設定と、その設定を使用するトレーニングパイプラインを定義します。

wandb.init() でメタデータとハイパーパラメーターをトラッキングする

まず、プログラムで実験を定義します。ハイパーパラメーターには何があるでしょうか。この run にはどのようなメタデータが関連付けられるでしょうか。 一般的なワークフローでは、これらの情報を config 辞書 (または同様のオブジェクト) に格納し、必要に応じて参照します。 この例では、一部のハイパーパラメーターのみを変化させ、残りはハードコーディングしています。モデルのどの部分でも config に含めることができます。 この例には、MNIST データセットと畳み込みアーキテクチャに関するメタデータも含まれています。後で同じ project で CIFAR を使って全結合アーキテクチャを扱う場合なども、このメタデータを使って run を区別できます。
次に、パイプライン全体を定義します。これはモデルのトレーニングでよく使われる構成です。
  1. モデルと、それに関連するデータおよびオプティマイザーを make します。
  2. それに応じてモデルを train します。
  3. test を実行して、トレーニングの結果を確認します。
以下のコードで、これらの関数を実装します。
標準的なパイプラインとの唯一の違いは、すべての処理が wandb.init() のコンテキスト内で実行される点です。この関数を呼び出すと、コードと W&B サーバーとの間に通信経路が確立されます。 config 辞書を wandb.init() に渡すと、その情報はすべてただちに W&B にログされます。そのため、実験で使用するよう設定したハイパーパラメーターの値を常に把握できます。 選択してログした値が確実にモデルで使用されるよう、W&B ではオブジェクトの run.config コピーを使用することを推奨しています。具体例については、以下の make の定義を参照してください。 パイプラインを定義したら、以降のセクションでは、データとモデルのセットアップ、トレーニング、テストの各ステップを順に実装していきます。
補足: W&B は独立したプロセスでコードを実行するため、W&B 側で問題が発生してもコードがクラッシュすることはありません。問題が解決したら、wandb sync を使用してデータをログできます。

データの読み込みとモデルを定義する

次に、データの読み込み方法とモデルの構成を指定します。 この部分は重要ですが、内容は wandb を使わない場合と変わりません。
wandb を使用してもモデルの定義方法は変わらないため、この例では標準的な ConvNet アーキテクチャを使用します。このコードを自由に変更して実験してください。W&B はすべての結果を Forge にログします。

トレーニングロジックを定義する

model_pipeline の次のステップとして、train の方法を指定します。ここでは、トレーニングの進行に合わせて、W&B インテグレーションが勾配、パラメーター、メトリクスをトラッキングします。 ここで使用する wandb 関数は、watch と log の 2 つです。

run.watch() で勾配をトラッキングし、それ以外はすべて run.log() でトラッキングする

run.watch() は、トレーニングの log_freq ステップごとに、モデルの勾配とパラメーターをログします。 run.watch() はトレーニングを開始する前に呼び出してください。ログモード、複数のモデルの扱い、パフォーマンスに関するヒントについては、wandb.watch で勾配とモデルの重みをログするにはどうすればよいですか?を参照してください。 それ以外のトレーニングコードは変更不要です。エポックとバッチを反復処理し、順伝播と逆伝播を実行して、optimizer を適用します。
唯一の違いはログするコードの部分です。これまではメトリクスをターミナルに出力して報告していたかもしれませんが、今後は同じ情報を run.log() に渡します。 run.log() は、strings をキーとする辞書を受け取ります。これらの strings は、値として渡されるログ対象のオブジェクトを識別します。また、オプションとして、トレーニングの現在の step をログすることもできます。
補足: モデルが処理したサンプル数を使用すると、異なるバッチサイズ間で比較しやすくなりますが、ステップ数やバッチ数をそのまま使用することもできます。長時間にわたるトレーニング run では、epoch 単位でログするのも有効です。

テストロジックを定義する

モデルのトレーニングが完了したら、モデルをテストします。たとえば、本番環境から取得した新しいデータでモデルを実行したり、手作業で厳選したサンプルに適用したりします。テストの段階は、トレーニング済みモデルを保存するのにも適したタイミングです。

オプション: run.save() を呼び出す

モデルのアーキテクチャと最終的なパラメーターをディスクに保存するなら、このタイミングが適しています。幅広い互換性を確保するため、モデルを Open Neural Network eXchange (ONNX) 形式 で export します。 そのファイル名を run.save() に渡すと、モデルのパラメーターが W&B のサーバーに保存されます。これで、どの .h5 や .pb がどのトレーニング run のものか分からなくなる心配はありません。 モデルの保存、バージョン管理、配布に使える wandb のより高度な機能については、Artifacts ツール を参照してください。

トレーニングを実行し、wandb.ai でメトリクスをリアルタイムに確認する

パイプライン全体を定義し、W&B のコードを数行追加したので、すべてが追跡される実験を実行する準備が整いました。 W&B からはいくつかのリンクが表示されます。ドキュメント、Project page (project 内のすべての run を整理するページ)、Run page (この run の結果が保存されるページ) です。 Run page にアクセスし、次のタブを確認してください。
  1. Charts: トレーニング全体を通じて、モデルの勾配、パラメーター値、損失がログされます。
  2. System: ディスク I/O 使用率、CPU および GPU のメトリクスなどのシステムメトリクスが表示されます。
  3. Logs: トレーニング中に標準出力へ出力された内容のコピーがすべて含まれます。
  4. Files: トレーニングが完了したら、model.onnx をクリックすると、Netron model viewer でネットワークを表示できます。
with wandb.init() ブロックを抜けて run が終了すると、W&B はセルの出力に結果のサマリーも表示します。

sweep でハイパーパラメーターをテストする

この例では、1 組のハイパーパラメーターのみを扱いました。しかし、ほとんどの ML ワークフローでは、複数のハイパーパラメーターを試しながら反復することが重要です。 W&B Sweeps を使用すると、ハイパーパラメーターのテストを自動化し、候補となるモデルや最適化戦略の空間を探索できます。これにより、前述の単一設定による run にとどまらず、規模を拡大できます。 W&B Sweeps を使用したハイパーパラメーター最適化のデモを紹介する Colab ノートブックをご覧ください。 W&B でハイパーパラメーター sweep を実行する手順は、次の 3 ステップです。
  1. sweep を定義する: 探索するパラメーター、探索戦略、最適化するメトリクスなどを指定する辞書または YAML ファイルを作成します。
  2. sweep を初期化する: sweep_id = wandb.sweep(sweep_config)
  3. sweep エージェントを実行する: wandb.agent(sweep_id, function=train)
ハイパーパラメーター sweep を実行するのに必要な作業はこれだけです。
PyTorch トレーニングダッシュボード
W&B で追跡・可視化された project のサンプルは、ギャラリーでご覧いただけます。

高度な設定

以下のオプションを使用すると、前述の基本的なワークフローを本番環境、オフライン環境、またはマネージド環境向けに拡張できます。
  • 環境変数: APIキーを環境変数に設定しておくと、マネージドクラスター上でトレーニングを実行できます。
  • オフラインモード: dryrun モードを使用すると、オフラインでトレーニングを行い、結果を後で同期できます。
  • オンプレミス: 自社インフラストラクチャー内のプライベートクラウドやエアギャップ環境のサーバーに W&B をインストールします。
  • Sweeps: チューニング用の軽量なツールで、ハイパーパラメーター探索をすばやく設定できます。
最終更新日 2026年9月30日