メインコンテンツへスキップ
Colab で試す

はじめに

すでに TensorBoard を使用している場合は、wandb と簡単に統合できます。
import tensorflow as tf
import wandb

カスタムメトリクスをログする

TensorBoard にログされていない追加のカスタムメトリクスを記録する必要がある場合は、コード内で run.log() を呼び出せます。例: run.log({"custom": 0.8}) TensorBoard と同期している場合、run.log() の step 引数の設定は無効になります。別の step 数を設定したい場合は、次のように step メトリクス付きでメトリクスを記録できます:
with wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True) as run:
    run.log({"custom": 0.8, "global_step":global_step}, step=global_step)

TensorFlow Estimator フック

ログとして記録する内容をより細かく制御したい場合、wandb は TensorFlow Estimator 向けのフックも提供します。これにより、グラフ内のすべての tf.summary の値がログに記録されます。
import tensorflow as tf
import wandb

run = wandb.init(config=tf.FLAGS)

estimator.train(hooks=[wandb.tensorflow.WandbHook(steps_per_log=1000)])
run.finish()

手動でログを取る

TensorFlow でメトリクスを記録する最も簡単な方法は、TensorFlow のロガーを使って tf.summary を記録することです。
import wandb
run = wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True)
with tf.Session() as sess:
    # ...
    wandb.tensorflow.log(tf.summary.merge_all())
TensorFlow 2 では、カスタムループでモデルを学習する場合、tf.GradientTape を利用する方法が推奨されています。詳しくは TensorFlow custom training walkthrough を参照してください。カスタムの TensorFlow 学習ループで wandb を使ってメトリクスをログに記録したい場合は、次のスニペットを利用してください。
    with tf.GradientTape() as tape:
        # 確率を取得する
        predictions = model(features)
        # 損失を計算する
        loss = loss_func(labels, predictions)

    # メトリクスをログに記録する
    run.log("loss": loss.numpy())
    # 勾配を取得する
    gradients = tape.gradient(loss, model.trainable_variables)
    # 重みを更新する
    optimizer.apply_gradients(zip(gradients, model.trainable_variables))
TensorFlow 2 における学習ループのカスタマイズについての完全な例が公開されています。

W&B は TensorBoard とどう違うのですか?

共同創業者たちが W&B に取り組み始めたとき、彼らは TensorBoard に不満を持つ OpenAI のユーザー向けのツールを作ることから着想を得ました。ここでは、私たちが特に改善に注力してきた点をいくつか挙げます。
  1. モデルの再現: W&B は実験や探索、および後からモデルを再現する用途に適しています。メトリクスだけでなく、ハイパーパラメータやコードのバージョンも取得し、バージョン管理の状態やモデルのチェックポイントも保存できるため、あなたのプロジェクトは再現可能になります。
  2. 自動的な整理: 協力者のプロジェクトを引き継ぐとき、休暇から戻ったとき、あるいは古いプロジェクトを掘り起こすときでも、W&B を使えば試したすべてのモデルが一目でわかるため、誰も何時間もの時間や GPU サイクル、CO2 排出を無駄にして実験をやり直す必要がありません。
  3. 高速で柔軟なインテグレーション: W&B をあなたのプロジェクトに 5 分で追加できます。無料のオープンソース Python パッケージをインストールして、コードに数行追加するだけで、モデルを実行するたびにメトリクスや記録が自動でログに残ります。
  4. 永続的で一元化されたダッシュボード: ローカルマシン、共有ラボのクラスタ、クラウドのスポットインスタンスなど、どこでモデルを学習していても、結果は同じ一元的なダッシュボードに集約されます。異なるマシンから TensorBoard のファイルをコピーして整理するのに時間を費やす必要はありません。
  5. 強力なテーブル機能: 異なるモデルの結果を検索、フィルタ、ソート、グループ化できます。何千ものモデルバージョンを一覧し、さまざまなタスクに対して最も性能の良いモデルを見つけるのが容易です。TensorBoard は大規模なプロジェクトでうまく動作するようには設計されていません。
  6. コラボレーションのためのツール: W&B を使って複雑な機械学習プロジェクトを整理できます。W&B へのリンクを簡単に共有でき、プライベートなチームを使って全員が結果を共有のプロジェクトに送ることもできます。さらに、レポートを通じたコラボレーションもサポートしています — 対話的な可視化を追加し、Markdown で作業内容を説明できます。これは作業ログを残したり、上司と成果を共有したり、ラボやチームに成果を提示したりするのに最適な方法です。
無料アカウント で始めましょう。

インテグレーションがどのように動作するかを確認できるように、いくつかの例を用意しました。