
このノートブックで学ぶこと

インストール、インポート、ログイン
Step 0: W&B をインストール
pip を使って wandb ライブラリをインストールする必要があります。
Step 1: W&B をインポートしてログイン
実験とパイプラインを定義する
wandb.init() でメタデータとハイパーパラメーターをトラッキングする
config 辞書 (または同様のオブジェクト) に保存し、必要に応じて参照するのが一般的なワークフローです。
この例では、変化させるハイパーパラメーターはごく一部だけで、残りはコードに直接書いています。モデルのどの部分でも config に含めることができます。
この例には、MNIST データセットと畳み込みアーキテクチャに関するメタデータも含まれています。後で、たとえば同じプロジェクト内で CIFAR 上の全結合アーキテクチャを扱うことになった場合でも、このメタデータによって run を区別しやすくなります。
- モデルとそれに対応するデータ、オプティマイザを
makeします。 - 次にモデルを
trainします。 - 最後に
testし、トレーニングの結果を確認します。
wandb.init() のコンテキスト内で行われることです。
この関数を呼び出すと、
コードと W&B のサーバーの間の通信が確立されます。
config 辞書を wandb.init() に渡すと、
その情報はすぐにすべてログされるため、
実験で使用するよう設定した
ハイパーパラメーターの値をいつでも把握できます。
選択してログした値が常に実際にモデルで使われる値になるよう、
W&B ではオブジェクトの run.config コピーを使用することをおすすめします。
いくつか例を示すので、次の make の定義を確認してください。
パイプラインの定義ができたので、次のセクションではその各ステップ、つまりデータとモデルのセットアップ、トレーニング、テストを順に実装します。
補足: W&B ではコードを別プロセスで実行するようにしているため、W&B 側で問題が発生してもあなたのコードがクラッシュすることはありません。問題が解決したら、wandb sync を使ってデータをログできます。
データの読み込みとモデルを定義する
wandb を使わない場合と変わりません。
wandb を使っても変わらないため、この例では標準的な ConvNet アーキテクチャをそのまま使います。このコードを自由に試してみてください。結果はすべて wandb.ai にログされます。
トレーニングロジックを定義する
model_pipeline を進めていき、次は train をどのように行うかを指定します。ここで、トレーニングの進行に合わせて W&B インテグレーション が勾配、パラメーター、メトリクスをトラッキングします。
ここでは、wandb の 2 つの関数 watch と log を使います。
勾配は run.watch() でトラッキングし、それ以外はすべて run.log() でログする
run.watch() は、トレーニング中 log_freq step ごとに、モデルの勾配とパラメーターをログします。
トレーニングを始める前に run.watch() を呼び出してください。ログモード、複数のモデル、パフォーマンスのヒントについては、wandb.watch で勾配とモデルの重みをログするにはどうすればよいですか? を参照してください。
それ以外のトレーニングコードはそのままです。エポックとバッチを繰り返し処理し、フォワードパスとバックワードパスを実行して、optimizer を適用します。
run.log() に渡します。
run.log() には、キーが文字列の辞書を渡します。これらの文字列は、ログするオブジェクトを識別する名前で、対応する値がその内容になります。さらに、トレーニングのどの step にいるかを任意でログすることもできます。
補足: モデルがこれまでに見たサンプル数を使うと、バッチサイズが違っても比較しやすくなりますが、単純な step 数やバッチ数を使用してもかまいません。トレーニング run が長い場合は、epoch ごとにログするのも合理的です。
テスト方法を定義する
任意: run.save() を呼び出す
export します。
そのファイル名を run.save() に渡すことで、モデルのパラメーターが W&B のサーバーにも保存されます。これで、どの .h5 や .pb がどのトレーニング runs に対応しているのか分からなくなることはありません。
モデルの保存、バージョン管理、配布に関する、より高度な wandb の機能については、Artifacts tools を参照してください。
トレーニングを実行し、wandb.ai でメトリクスをライブで確認する
- Charts。ここでは、モデルの勾配、パラメーターの値、損失がトレーニング全体を通してログされます。
- System。ここには、ディスク I/O 使用率や CPU、GPU のメトリクスなどのシステムメトリクスが表示されます。
- Logs。ここには、トレーニング中に標準出力に出力された内容のコピーがあります。
- Files。ここでは、トレーニング完了後に
model.onnxをクリックして、Netron model viewer でネットワークを表示できます。
with wandb.init() ブロックを抜けると、W&B は結果の概要もセル出力に表示します。
Sweeps でハイパーパラメーターを試す
- sweep を定義する: 検索対象のパラメーター、検索戦略、最適化メトリクスなどを指定する辞書または YAML ファイル を作成します。
- sweep を初期化する:
sweep_id = wandb.sweep(sweep_config). - sweep エージェントを実行する:
wandb.agent(sweep_id, function=train).
