数行でできるワンランク上のログする

すぐに使えるコードを見たい場合は、こちらのGoogle Colabをご覧ください。
はじめに: 実験を管理する
サインアップしてAPIキーを発行する
より手早く行うには、User Settings にアクセスしてAPIキーを作成してください。APIキーはすぐにコピーし、パスワードマネージャーなどの安全な場所に保存してください。
- 右上にあるユーザープロフィールアイコンをクリックします。
- User Settings を選択し、API Keys セクションまでスクロールします。
wandb ライブラリをインストールしてログインする
wandb ライブラリをローカルにインストールしてログインするには、以下の手順に従います。
- コマンドライン
- Python
- Python notebook
-
WANDB_API_KEY環境変数に APIキー を設定します。 -
wandbライブラリをインストールし、ログインします。
プロジェクトに名前を付ける
WANDB_PROJECT 環境変数にプロジェクト名を設定するだけです。WandbCallback はこの環境変数からプロジェクト名を取得し、run の設定時に使用します。
- コマンドライン
- Python
- Python notebook
Trainer を初期化する_前に_、必ずプロジェクト名を設定してください。huggingface になります。
トレーニング run を W&B にログする
Trainer のトレーニング引数を定義する際に最も重要なステップは、W&B でログすることを有効にするため、report_to を "wandb" に設定することです。
TrainingArguments の logging_steps 引数では、トレーニング中のメトリクスをどのくらいの頻度で W&B に送信するかを制御します。また、run_name 引数を使って、W&B 上のトレーニング run に名前を付けることもできます。
以上です。これで、モデルはトレーニング中に損失、評価メトリクス、モデルのトポロジー、勾配を W&B にログするようになります。
- コマンドライン
- Python
TensorFlow を使っていますか?PyTorch の
Trainer を TensorFlow の TFTrainer に置き換えるだけです。モデル チェックポイントを有効にする
WANDB_LOG_MODEL 環境変数を次のいずれか 1 つ に設定します。
checkpoint:TrainingArgumentsのargs.save_stepsごとにチェックポイントをアップロードします。end:load_best_model_at_endも設定されている場合、トレーニング終了時にモデルをアップロードします。false: モデルをアップロードしません。
- コマンドライン
- Python
- Python ノートブック
Trainer は、モデルを W&B プロジェクトにアップロードします。ログしたモデル チェックポイントは Artifacts の UI で確認でき、完全なモデル リネージが含まれます (UI でのモデル チェックポイントの例はこちらを参照してください) 。
デフォルトでは、
WANDB_LOG_MODEL が end に設定されている場合、モデルは W&B Artifacts に model-{run_id} として保存され、WANDB_LOG_MODEL が checkpoint に設定されている場合は checkpoint-{run_id} として保存されます。
ただし、TrainingArguments に run_name を渡すと、モデルは model-{run_name} または checkpoint-{run_name} として保存されます。W&B Registry
トレーニング中に評価出力を可視化する

W&B Run を終了する (Notebook のみ)
run.finish() を呼び出して、トレーニングの完了を W&B に伝える必要があります。
結果を可視化する
高度な機能とよくある質問
最良のモデルを保存するにはどうすればよいですか
Trainer に load_best_model_at_end=True を含む TrainingArguments を渡すと、W&B は最も性能の高いモデル チェックポイントを Artifacts に保存します。
モデル チェックポイントを Artifacts として保存した場合は、Registry に昇格できます。Registry では、次のことができます。
- ML タスクごとに最良のモデル バージョンを整理する。
- モデルを一元管理し、チームと共有する。
- モデルを本番向けにステージングしたり、追加の評価のためにブックマークしたりする。
- 後続の CI/CD プロセスをトリガーする。
保存したモデルを読み込むにはどうすればよいですか?
WANDB_LOG_MODEL を使ってモデルを W&B Artifacts に保存している場合は、追加のトレーニングや推論のためにモデルの重みをダウンロードできます。あとは、それを以前使っていたのと同じ Hugging Face のアーキテクチャに読み込むだけです。
チェックポイントからトレーニングを再開するにはどうすればよいですか?
WANDB_LOG_MODEL='checkpoint' を設定していた場合は、TrainingArguments で model_dir を model_name_or_path 引数として使用し、Trainer に resume_from_checkpoint=True を渡すことで、トレーニングを再開することもできます。
トレーニング中に評価サンプルをログして表示するにはどうすればよいですか
Trainer 経由で W&B にログする処理は、Transformers ライブラリの WandbCallback が担います。Hugging Face のログすることをカスタマイズする必要がある場合は、WandbCallback をサブクラス化し、Trainer クラスの追加の method を活用する機能を加えることで、このコールバックを拡張できます。
以下に、この新しいコールバックを HF Trainer に追加する一般的なパターンを示します。さらに下には、評価出力を W&B の表にログする完全なコード例を掲載しています。
トレーニング中に評価サンプルを確認する
WandbCallback をカスタマイズして、トレーニング中にモデルの予測を実行し、評価サンプルを W&B の 表 にログする方法を示します。これは、Trainer の コールバック の on_evaluate method を使って、eval_steps ごとに実行します。
ここでは、トークナイザーを使用してモデル出力から予測とラベルをデコードする decode_predictions function を作成しています。
次に、予測とラベルから pandas DataFrame を作成し、DataFrame に epoch 列を追加します。
最後に、DataFrame から wandb.Table を作成し、それを wandb にログします。
また、freq エポックごとに予測をログすることで、ログする頻度を制御できます。
注: 通常の WandbCallback とは異なり、このカスタム コールバック は、Trainer の初期化時ではなく、Trainer をインスタンス化した後に trainer に追加する必要があります。
これは、初期化時に Trainer インスタンスが コールバック に渡されるためです。
利用可能な追加の W&B 設定は何ですか?
Trainer でログする内容をさらに細かく設定できます。W&B の環境変数の一覧は、こちらで確認できます。
- コマンドライン
- ノートブック
wandb.init() をカスタマイズするにはどうすればよいですか?
Trainer が使用する WandbCallback は、Trainer の初期化時に内部で wandb.init() を呼び出します。代わりに、Trainer が初期化される前に wandb.init() を呼び出して、run を手動で設定することもできます。これにより、W&B の run 設定を完全に制御できます。
init に渡す内容の例を以下に示します。wandb.init() の詳細については、wandb.init() referenceを参照してください。