任意のライブラリに wandb を追加する
このガイドでは、独自の Python ライブラリに W&B をインテグレーションするためのベストプラクティスを提供します。このことで、強力な実験管理、GPU およびシステム監視、モデルチェックポイントなどが利用可能になります。W&B の使い方をまだ学んでいる場合は、読み進める前に 実験管理 など、他の W&B ガイドを探索することをお勧めします。
- 設定要件
- ユーザーログイン
- wandb Run の開始
- Run Config の定義
- W&B へのログ記録
- 分散トレーニング
- モデルチェックポイントなど
- ハイパーパラメータチューニング
- 高度なインテグレーション
設定要件
始める前に、ライブラリの依存関係に W&B を必須にするかどうかを決めてください:インストール時に W&B を必須にする
W&B の Python ライブラリ(wandb)を requirements.txt ファイルなどに含めて依存関係ファイルに追加します:
インストール時に W&B をオプションにする
W&B SDK(wandb)をオプションにする方法は2つあります:
A. ユーザーが手動でインストールせずに wandb 機能を使用しようとしたときにエラーメッセージを表示してエラーを発生させる:
wandb をオプションの依存関係として pyproject.toml ファイルに追加する:
ユーザーログイン
API キーの作成
API キーはクライアントまたはマシンを W&B に認証するものです。ユーザープロフィールから API キーを生成できます。よりスムーズな方法として、https://wandb.ai/authorize に直接アクセスして API キーを生成できます。表示された API キーをコピーし、パスワードマネージャーなどの安全な場所に保存してください。
- 右上隅のユーザープロフィールアイコンをクリックします。
- User Settings を選択し、API Keys セクションまでスクロールします。
- Reveal をクリックします。表示された API キーをコピーします。API キーを非表示にするには、ページをリロードします。
wandb ライブラリのインストールとログイン
ローカルに wandb ライブラリをインストールしてログインします:
- Command Line
- Python
- Python notebook
-
WANDB_API_KEY環境変数 にあなたの API キーを設定します。 -
wandbライブラリをインストールしてログインします。
wandb.init を呼び出す際に自動的にログインを求められます。
Run の開始
W&B Run は、W&B によってログ記録された計算の単位です。通常、トレーニング実験ごとに1つの W&B Run を関連付けます。 以下のコードで W&B を初期化して Run を開始します:wandb_project といったパラメータを使ってユーザーに設定してもらうこともできます。エンティティのパラメータについては wandb_entity などのユーザー名やチーム名を使用します:
run.finish() を呼び出す必要があります。次のように Run をコンテキストマネージャとして使うこともできます:
wandb.init を呼び出すタイミング?
ライブラリは、W&B Run を可能な限り早く作成するべきです。なぜなら、コンソール出力に含まれるエラーメッセージなどの内容が W&B Run の一部としてログされ、デバッグが容易になるからです。
wandb をオプション依存関係として使用する
ユーザーがライブラリを使うときに wandb をオプションにしたい場合、以下のいずれかの方法を使用できます:
- 次のように
wandbフラグを定義する:
- Python
- Bash
- または、
wandb.initでwandbをdisabledに設定する:
- Python
- Bash
- または、
wandbをオフラインに設定します - これは wandb を実行はしますが、インターネットを介して W&B に通信を試みません:
- Environment Variable
- Bash
Run Config の定義
wandb の Run Config を使って、W&B Run を作成する際にモデルやデータセットに関するメタデータを提供できます。この情報を利用して、異なる実験を比較し、その主な違いをすばやく理解することができます。

- モデル名、バージョン、アーキテクチャパラメータなど
- データセット名、バージョン、トレイン/バルの例数など
- 学習パラメータ(学習率、バッチサイズ、オプティマイザーなど)
Run Config の更新
run.config.update を使用して設定を更新します。設定辞書の更新は、辞書が定義された後にパラメータが取得された場合に役立ちます。たとえば、モデルがインスタンス化された後にモデルのパラメータを追加したい場合などです。
W&B へのログ記録
メトリクスのログ記録
キーがメトリクス名となる辞書を作成し、この辞書オブジェクトをrun.log に渡します:
train/... と val/... を使用することで、トレーニングや検証メトリクス、その他のメトリクスを分けたセクションが W&B ワークスペースに作られます:

run.log の詳細を学ぶ。
x軸の非整合を防ぐ
同じトレーニングステップでrun.log を複数回呼び出すと、wandb SDK は run.log を呼び出すたびに内部のステップカウンタを増加させます。このカウンタはトレーニングループ内のトレーニングステップと一致しないことがあります。
このような状況を避けるために、wandb.init を呼び出した直後に run.define_metric を使用して x 軸のステップを明示的に定義してください:
* は、すべてのメトリクスがチャートの x 軸として global_step を使用することを意味します。特定のメトリクスのみを global_step に対してログする場合は、代わりにそれらを指定できます:
step メトリクス、および global_step を run.log を呼び出すたびにログします:
画像、テーブル、オーディオなどのログ記録
メトリクスに加えて、プロット、ヒストグラム、テーブル、テキスト、画像、動画、オーディオ、3D などのメディアをログすることができます。 データをログする際の考慮事項には以下が含まれます:- メトリクスはどのくらいの頻度でログされるべきか? オプション化すべきか?
- 視覚化に役立つデータの種類は何か?
- 画像の場合、サンプル予測、セグメンテーションマスクなどのログを記録して、時間の経過を見て進化を追うことができます。
- テキストの場合、後で検討できるサンプル予測のテーブルをログすることができます。
分散トレーニング
分散環境をサポートするフレームワークでは、以下のワークフローのいずれかを適用することができます:- 「メイン」のプロセスを検出し、そこでのみ
wandbを使用してください。他のプロセスから必要なデータは最初にメインプロセスにルーティングされなければなりません(このワークフローが推奨されます)。 - すべてのプロセスで
wandbを呼び出し、それらすべてに同じ一意のgroup名を与えて自動グループ化します。
モデルチェックポイントとその他のログ記録
フレームワークがモデルまたはデータセットを使用または生成する場合、W&B Artifacts を通じて wandb で完全なトレース可能性を持ってそれらをログし、パイプライン全体を自動的に監視させることができます。
- モデルチェックポイントまたはデータセットをログする機能を有すること(任意にする場合)。
- 使用されるアーティファクトのパス/参照を入力として使用する場合。たとえば、
user/project/artifactのような指定。 - Artifacts をログする頻度。
モデルチェックポイントのログ記録
モデルチェックポイントを W&B にログすることができます。ユニークなwandb Run ID を使用して出力モデルチェックポイントに名前を付け、Run 間でそれらを区別するのが有効です。また、有用なメタデータを追加することもできます。さらに、以下のようにモデルごとにエイリアスを追加することもできます:
学習済みモデルまたはデータセットのログと追跡
トレーニングの入力として使用されるアーティファクト(学習済みモデルやデータセットなど)をログすることができます。以下のスニペットでは、アーティファクトをログし、上記のグラフのように進行中の Run の入力として追加する方法を示しています。アーティファクトをダウンロードする
アーティファクト(データセット、モデルなど)を再利用する場合、wandb はローカルにコピー(およびキャッシュ)をダウンロードします:
latest, v2, v3)またはログ時に手動で生成されるエイリアス(best_accuracy など)で参照できます。
たとえば分散環境や単純な推論のために wandb Run(wandb.init を通して)を作成せずに Artifact をダウンロードしたい場合、代わりに wandb API を使用してアーティファクトを参照できます: