Skip to main content
このガイドでは、W&B を Python ライブラリ、フレームワーク、または SDK に統合する際のパターンについて説明します。依存関係の管理、認証、オプションでログする、run の初期化、アーティファクト、ハイパーパラメーター調整、分散実行を扱います。 単一のトレーニングスクリプトやノートブックではなく、再利用可能なライブラリコードに統合する場合は、このガイドを使用してください。W&B の概要については、Experiment Tracking を参照してください。

インテグレーションを設計する

ライブラリに W&B を追加する前に、以下を決定します。
  • wandb を必須の依存関係にするか、オプションの依存関係にするか。
  • W&B データを保存またはアップロードせずに、ユーザーがライブラリを実行できるようにするか。
  • ライブラリでログする設定値、メトリクス、アーティファクト。
  • W&B Sweeps によるハイパーパラメーター調整をサポートするか。
  • モデルやデータセットなどのアーティファクトを、組織の W&B Registry を通じて共有するか。
  • 分散トレーニングや複数のプロセスをライブラリでどのように処理するか。
これらの決定により、ライブラリでの W&B のインポート方法、run のライフサイクル管理方法、および W&B が利用できない場合の動作が決まります。

W&B のインストール方法を決める

W&B をライブラリとともに自動でインストールするか、オプション機能として提供するかを選択します。

W&B を依存関係として指定する

W&B がライブラリの中核となる場合は、依存関係に wandb を追加します。 requirements.txt ファイルの場合:
requirements.txt
pyproject.toml file の場合:
pyproject.toml
インテグレーションで使用する W&B の機能に応じて、互換性のあるバージョン範囲を指定することを検討してください。

W&B をオプションの依存関係として扱う

W&B がオプション機能の場合、wandb をインストールせずにライブラリをインストールできるようにします。 pyproject.toml で W&B をオプションの依存関係として宣言します。
pyproject.toml
次のコマンドでインテグレーションをインストールします。

ユーザー認証

W&B では、APIキーを使用してユーザーやマシンを認証します。ライブラリから Runs をログするには、事前に APIキーを発行し、wandb クライアントで使用できるようにしておく必要があります。 W&B は、CLI、環境変数、wandb.login() による認証をサポートしています。

APIキーを発行する

より手早く行うには、User Settings にアクセスしてAPIキーを作成してください。APIキーはすぐにコピーし、パスワードマネージャーなどの安全な場所に保存してください。

コマンドラインから認証する

ターミナルで次を実行します。
W&B からAPIキーの入力を求められます。 または、環境変数 WANDB_API_KEY を設定します。
詳細は、環境変数をご覧ください。

Python から認証する

インタラクティブな Python 環境またはノートブックで、次を呼び出します。
再利用可能なライブラリコードから wandb.login() を自動的に呼び出さないでください。非対話型ワークフローが中断される可能性があります。

W&B をログすることを任意にする

W&B で run データを保存またはアップロードするかどうかを選択します。 run データを保存しない場合は disabled を使用します。後でアップロードするためにデータをローカルに保存する場合は offline を使用します。

disabled モードを使用する

wandb.init()mode="disabled" を渡します。
または、環境で WANDB_MODE を設定します。
W&B CLI でもモードを設定できます。

offline モードを使用する

wandb.init()mode="offline" を指定します。
または、環境変数 WANDB_MODE を設定します。
Python では、wandb.init() を呼び出す前に環境変数を設定します。
W&B CLI を使用してモードを設定することもできます。
オフラインのrunを後でアップロードするには、次を使用します。

run を初期化する

認証後、run を初期化し、ライブラリからメトリクス、設定値、アーティファクト をログします。 wandb.init() を呼び出して、project とチーム entity を指定します。project を省略すると、W&B は run をデフォルトの "uncategorized" project に保存します。 トレーニング ループを囲むコンテキスト マネージャーとして wandb.init() を使用します。ブロックを抜けると、プロセスの終了前に W&B が run を終了し、保留中のデータを処理します。 たとえば、ライブラリに次のトレーニング ループがあるとします。
Python
W&B を統合するには、コンテキストマネージャーを使用して run を初期化し、設定値を wandb.init() に渡して、wandb.Run.log() でメトリクスをログします。
Python
wandb.init() を呼び出すタイミングW&B でモニタリングする処理の前に、wandb.init() を呼び出します。トレーニング ループ全体をコンテキスト マネージャーで囲むことで、run はデバッグに必要な標準出力、標準エラー出力、エラーメッセージを取得します。
次のセクションでは、ライブラリから設定値とメトリクスをログする方法を詳しく説明します。

設定とメトリクスをログする

設定値とメトリクスを W&B にログすることで、自分やチームのメンバーが実験を比較フィルターグループ化再現できるようになります。

設定値をログする

設定辞書をwandb.init()に渡して、ハイパーパラメーターやその他のメタデータを記録します。 わかりやすいキーとJSONシリアル化可能な値を使用します。
辞書を wandb.init() に渡します。
一部の値は、run の開始時にはまだ利用できないことがあります。後で wandb.Run.config.update() を使用して追加します。
詳細は、実験を設定するを参照してください。

メトリクスをログする

トレーニング中に、損失やaccuracyなどのメトリクスをログします。キーをメトリクスの名、値をメトリクス値とする辞書を作成します。この辞書をwandb.Run.log()に渡します。 次のcode snippetは、トレーニングおよび検証のメトリクスをW&Bにログします。
Python
train/val/ などの接頭辞を使用して、関連するメトリクスをグループ化します。 サポートされているデータタイプ、自动的にトラッキングされるデータ、ベストプラクティスに沿ってログする方法については、メトリクスとデータをログするを参照してください。 モデルとデータセットをトラッキングするには、artifact を使用してモデルとデータセットをトラッキングするセクションを参照してください。

カスタムログ軸を定義する

デフォルトでは、W&B はログしたメトリクスを自動的に増加するステップに対してプロットします。wandb.Run.log() を呼び出すたびに、ステップが進みます。 wandb.Run.define_metric() を使用すると、エポックやグローバルステップなどの別の値に対してメトリクスをプロットできます。 次の例では、validation_loss の x 軸として x_axis_squared を定義します。ループの各反復で、x_axis_squared はインデックス i の二乗、validation_loss はランダムに生成された値です。
Python
詳細は、カスタムログ軸を定義するをご覧ください。

アーティファクト でモデルとデータセットをトラッキングする

メトリクスに加えて、自分自身とチームのメンバーが Runs を再現して比較できるように、ライブラリが生成または使用するモデルとデータセットを永続的に保存できます。 W&B Artifacts を使用して、ライブラリが生成または使用するモデル、データセット、その他のファイルをバージョン管理します。 アーティファクトのサポートを追加する前に、次の点を決定してください。
  • ログするファイル。
  • アーティファクトをログすることをオプションにするかどうか。
  • チェックポイントをログする頻度。
  • アーティファクトとエイリアスの命名方法。
  • run の入力と出力を表すアーティファクト。

モデル チェックポイントをログする

トレーニング済みの重みを復元、バージョン管理、共有できるように、モデル チェックポイントをアーティファクトとしてログします。各チェックポイントをソースrunに関連付けるため、アーティファクト名にrun IDを含めます。 次の例では、10エポックごとにチェックポイントをログします。run IDを含む名前のアーティファクトを作成し、ローカル ディレクトリからモデルの重みを追加して、カスタムaliasを指定してアーティファクトをログします。
Python

run の入力をトラッキングする

run がデータセットやモデル チェックポイントなどのアーティファクトを使用する場合は、wandb.Run.use_artifact() を使用します。W&B はアーティファクトをrun の入力として記録します。 アーティファクトの名と、特定のバージョンのアーティファクトを参照するための任意のaliasを指定します。アーティファクトの名は、artifact_name:version または artifact_name:alias の形式です。
Python

run の出力をトラッキングする

wandb.Run.log_artifact() を使用して、アーティファクト を run の出力としてログします。
  1. wandb.Artifact() を使用して アーティファクト を作成します。
  2. 1 つ以上の file を アーティファクト に追加します。
  3. wandb.Run.log_artifact() を使用して アーティファクト をログします。
アーティファクト の作成、管理、使用方法について詳しくは、Artifactsを参照してください。

アーティファクト をダウンロードする

W&B Public API を使用すると、run を作成したり、run の入力関係を記録したりせずに アーティファクト をダウンロードできます。
詳細については、アーティファクトのダウンロードと使用を参照してください。 W&B Registry を使用すると、チーム間で アーティファクト バージョンを共有・管理できます。 アーティファクト バージョンをリンクする前に、次の点を決定します。
リンク先の Registry は、あらかじめ存在している必要があります。
次の例では、アーティファクト をログし、Registry 内のコレクションにリンクします。
詳細は、アーティファクトバージョンをコレクションにリンクするを参照してください。

ハイパーパラメーターを調整する

ライブラリがハイパーパラメーター調整をサポートしている場合は、W&B Sweeps を統合して、グリッド探索、ランダム探索、またはベイズ探索を実行します。
W&B は、sweep 設定を基盤となるトレーニングロジックとは分離しておくことを推奨します。トレーニング関数では、sweep 固有のロジックに直接依存するのではなく、wandb.Run.config からパラメーターを読み取るようにしてください。
詳細は、Sweeps を参照してください。

分散トレーニングをサポートする

ライブラリが複数のプロセスまたはマシンをサポートする場合は、どのプロセスでrunを作成し、データをログするかを指定します。 一般的なアプローチは次のとおりです。
  • メインプロセスからのみログする。この方法では、メトリクスとアーティファクトの重複を回避できます。
  • プロセスごとに1つのrunを作成し、共有のgroup値を使用してrunをグループ化する。
詳細は、分散トレーニングのExperimentsをログするを参照してください。