> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hugging Face Transformers

> W&B を Hugging Face Transformers Trainer と併用して、実験管理、モデル チェックポイントの保存、データセットのバージョン管理を行います。

export const ColabLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="colab-link">
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01.21.03zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z" />
    </svg>
    Try in Colab
  </a>;

<ColabLink url="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/huggingface/Optimize_Hugging_Face_models_with_Weights_&_Biases.ipynb" />

[Hugging Face Transformers](https://huggingface.co/docs/transformers/index) ライブラリは、BERT のような NLP モデルや、混合精度や勾配チェックポイントなどのトレーニング手法を簡単に使用できるようにします。[W\&B インテグレーション](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) は、集中型ダッシュボードに実験管理とモデルバージョン管理を追加します。

このガイドでは、Hugging Face の `Trainer` を W\&B に接続する方法を説明します。これにより、トレーニング run はメトリクス、モデル チェックポイント、評価出力を集中型ダッシュボードに自動的にログします。最終的に、run を比較したり、W\&B Artifacts からモデル チェックポイントを保存および再読み込みしたり、独自のワークフロー用にログをカスタマイズしたりできるようになります。このガイドは、Hugging Face Transformers の `Trainer` を使用したモデルのトレーニングにすでに慣れていることを前提としています。

<h2 id="quick-start">
  クイックスタート
</h2>

```python theme={"system"}
os.environ["WANDB_PROJECT"] = "<my-project-name>"  # W&B プロジェクト名を設定します
os.environ["WANDB_LOG_MODEL"] = "checkpoint"  # すべてのモデル チェックポイントをログします

from transformers import TrainingArguments, Trainer

args = TrainingArguments(..., report_to="wandb")  # W&B ロギングを有効にします
trainer = Trainer(..., args=args)
```

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/huggingface_gif.gif?s=db5e1024dd0cbc0c1ea811c938358bd5" alt="Hugging Face ダッシュボード" width="600" height="320" data-path="products/wandb/_media/huggingface_gif.gif" />
</Frame>

<Note>
  すぐに動作するコードを試したい場合は、こちらの [Google Colab](https://wandb.me/hf) をご覧ください。
</Note>

<h2 id="get-started-track-experiments">
  はじめに: 実験をトラッキングする
</h2>

このセクションでは、W\&B で認証し、クライアントライブラリをインストールし、プロジェクト名を設定し、`Trainer` でログする機能を有効にして、最初のトレーニング run を W\&B ダッシュボードに表示する方法を説明します。

<h3 id="sign-up-and-create-an-api-key">
  登録してAPIキーを作成する
</h3>

APIキーは、マシンを W\&B に対して認証します。ユーザープロフィールからAPIキーを発行できます。

<Note>
  より簡単な方法として、[User Settings](https://forge.coreweave.com/settings) に移動して APIキーを作成することもできます。作成した APIキーはすぐにコピーし、パスワードマネージャーなどの安全な場所に保存してください。
</Note>

1. 右上のユーザープロフィールアイコンをクリックします。
2. **User Settings** を選択し、**APIキー**セクションまでスクロールします。

<h3 id="install-the-wandb-library-and-log-in">
  `wandb` ライブラリのインストールとログイン
</h3>

`wandb` ライブラリをローカルにインストールしてログインするには、次の手順に従います。

<Tabs>
  <Tab title="Command Line">
    1. `WANDB_API_KEY` [環境変数](/ja/products/wandb/track/environment-variables)に APIキーを設定します。`<>` で囲まれた値を自分の値に置き換えてください。

       ```bash theme={"system"}
       export WANDB_API_KEY=<your_api_key>
       ```

    2. `wandb` ライブラリをインストールしてログインします。

       ```bash theme={"system"}
       pip install wandb

       wandb login
       ```
  </Tab>

  <Tab title="Python">
    ```bash theme={"system"}
    pip install wandb
    ```

    ```python theme={"system"}
    import wandb
    wandb.login()
    ```
  </Tab>

  <Tab title="Python notebook">
    ```notebook theme={"system"}
    !pip install wandb

    import wandb
    wandb.login()
    ```
  </Tab>
</Tabs>

W\&B を初めて使用する場合は、[クイックスタート](/ja/products/wandb/quickstart)をご覧ください。

<h3 id="name-the-project">
  プロジェクト名を設定する
</h3>

W\&B プロジェクトには、関連する run からログされたすべてのチャート、データ、モデルが保存されます。プロジェクト名を設定すると、作業を整理し、1 つの project に関するすべての情報を一か所にまとめられます。

project に run を追加するには、`WANDB_PROJECT` 環境変数にプロジェクト名を設定します。`WandbCallback` は、この環境変数からプロジェクト名を取得し、run の設定時に使用します。

<Tabs>
  <Tab title="Command Line">
    ```bash theme={"system"}
    WANDB_PROJECT=amazon_sentiment_analysis
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={"system"}
    import os
    os.environ["WANDB_PROJECT"]="amazon_sentiment_analysis"
    ```
  </Tab>

  <Tab title="Python notebook">
    ```notebook theme={"system"}
    %env WANDB_PROJECT=amazon_sentiment_analysis
    ```
  </Tab>
</Tabs>

<Note>
  必ず `Trainer` を初期化する\_前に\_プロジェクト名を設定してください。
</Note>

プロジェクト名を指定しない場合、デフォルトのプロジェクト名は `huggingface` になります。

<h3 id="log-your-training-runs-to-wb">
  トレーニング run を W\&B にログする
</h3>

コード内またはコマンドラインから `Trainer` のトレーニング引数を定義する際に、`report_to` を `"wandb"` に設定して、W\&B へのログを有効にします。この設定がない場合、`Trainer` は W\&B にデータを送信しません。

`TrainingArguments` の `logging_steps` 引数は、トレーニング中にトレーニングメトリクスを W\&B に送信する頻度を制御します。`run_name` 引数を使用して、W\&B のトレーニング run に名を付けることもできます。

これで完了です。モデルはトレーニング中に、損失、評価メトリクス、モデルのトポロジ、勾配を W\&B にログするようになります。

<Tabs>
  <Tab title="Command Line">
    ```bash theme={"system"}
    python run_glue.py \     # Python スクリプトを実行します
      --report_to wandb \    # W&B へのログを有効にします
      --run_name bert-base-high-lr \   # W&B run の名（省略可能）
      # その他のコマンドライン引数をここに指定します
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={"system"}
    from transformers import TrainingArguments, Trainer

    args = TrainingArguments(
        # その他の args と kwargs をここに指定します
        report_to="wandb",  # W&B へのログを有効にします
        run_name="bert-base-high-lr",  # W&B run の名（省略可能）
        logging_steps=1,  # W&B にログする頻度
    )

    trainer = Trainer(
        # その他の args と kwargs をここに指定します
        args=args,  # トレーニング引数
    )

    trainer.train()  # トレーニングと W&B へのログを開始します
    ```
  </Tab>
</Tabs>

<Note>
  TensorFlow を使用していますか？PyTorch の `Trainer` を TensorFlow の `TFTrainer` に置き換えてください。
</Note>

<h3 id="turn-on-model-checkpointing">
  モデル チェックポイントの保存を有効にする
</h3>

メトリクスをログするだけでなく、トレーニング済みモデルの重み自体を W\&B に保存して、バージョン管理、ダウンロード、チーム内での共有ができます。

[Artifacts](/ja/products/wandb/artifacts) を使用すると、モデルとデータセットを最大 100 GB まで無料で保存し、W\&B [Registry](/ja/products/registry) で使用できます。Registry では、モデルを登録して調査や評価を行い、ステージングの準備をしたり、本番環境にデプロイしたりできます。

Hugging Face のモデル チェックポイントを Artifacts にログするには、`WANDB_LOG_MODEL` 環境変数を次のいずれか *1 つ* に設定します。

* **`checkpoint`**: [`TrainingArguments`](https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments) の `args.save_steps` ごとにチェックポイントをアップロードします。
* **`end`**: `load_best_model_at_end` も設定されている場合、トレーニングの終了時にモデルをアップロードします。
* **`false`**: モデルをアップロードしません。

<Tabs>
  <Tab title="Command Line">
    ```bash theme={"system"}
    WANDB_LOG_MODEL="checkpoint"
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={"system"}
    import os

    os.environ["WANDB_LOG_MODEL"] = "checkpoint"
    ```
  </Tab>

  <Tab title="Python notebook">
    ```notebook theme={"system"}
    %env WANDB_LOG_MODEL="checkpoint"
    ```
  </Tab>
</Tabs>

以降に初期化するすべての Transformers `Trainer` は、モデルを W\&B プロジェクトにアップロードします。ログしたモデル チェックポイントは [Artifacts](/ja/products/wandb/artifacts) UI で確認でき、モデルの完全なリネージも含まれます。[Artifacts UI のモデル チェックポイントの例](https://forge.coreweave.com/wandb/wandb/arttest/artifacts/model/iv3_trained/5334ab69740f9dda4fed/lineage?_gl=1*yyql5q*_ga*MTQxOTYyNzExOS4xNjg0NDYyNzk1*_ga_JH1SJHJQXJ*MTY5MjMwNzI2Mi4yNjkuMS4xNjkyMzA5NjM2LjM3LjAuMA..)をご覧ください。

<Note>
  デフォルトでは、`WANDB_LOG_MODEL` が `end` に設定されている場合、モデルは W\&B Artifacts に `model-{run_id}` として保存され、`WANDB_LOG_MODEL` が `checkpoint` に設定されている場合は `checkpoint-{run_id}` として保存されます。
  ただし、`TrainingArguments` に [`run_name`](https://huggingface.co/docs/transformers/main/en/main_classes/trainer#transformers.TrainingArguments.run_name) を渡すと、モデルは `model-{run_name}` または `checkpoint-{run_name}` として保存されます。
</Note>

<h4 id="registry">
  Registry
</h4>

チェックポイントを Artifacts にログしたら、[Registry](/ja/products/registry) を使用して、ベストなモデル チェックポイントを登録し、チーム全体で一元管理できます。Registry では、タスクごとにベストなモデルを整理したり、モデルのライフサイクルを管理したり、ML ライフサイクル全体をトラッキングして監査したり、ダウンストリームの action を[オートメーション](/ja/products/wandb/automations)したりできます。

モデル アーティファクトを link するには、[Registry](/ja/products/registry) を参照してください。

<h3 id="visualize-evaluation-outputs-during-training">
  トレーニング中の評価出力を可視化する
</h3>

モデルがどのようにトレーニングされているかを理解するには、トレーニング中や評価中にモデル出力を可視化することが欠かせない場合が多くあります。損失曲線と併せて具体的な予測を確認することで、集計メトリクスだけでは見落としがちな品質の問題を発見しやすくなります。

Transformers Trainer のコールバックシステムを使用すると、より有用なデータを W\&B 表にログできます。たとえば、モデルのテキスト生成出力やその他の予測などです。

次のような W\&B 表に、トレーニング中の評価出力をログする方法の詳しいガイドについては、[トレーニング中に評価サンプルをログして表示する](#log-and-view-evaluation-samples-during-training)を参照してください。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/huggingface_eval_tables.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=5d5fcf760a5b8770fe1253e3dcf0d80c" alt="W&B 表に評価出力が表示されている様子" width="2002" height="1214" data-path="products/wandb/_media/huggingface_eval_tables.png" />
</Frame>

<h3 id="finish-your-wb-run-notebook-only">
  W\&B run を終了する (ノートブックのみ)
</h3>

トレーニングが Python スクリプトにカプセル化されている場合、W\&B run はスクリプトが終了したときに終了します。

Jupyter または Google Colab ノートブックを使用している場合は、`run.finish()` を呼び出してトレーニングが完了したことを通知します。

```python theme={"system"}
run = wandb.init()
trainer.train()  # トレーニングを開始し、W&B にログする

# トレーニング後の分析、テスト、その他のログするコード

run.finish()
```

<h3 id="visualize-your-results">
  結果を可視化する
</h3>

トレーニング結果をログしたら、[W\&B ダッシュボード](/ja/products/wandb/track/workspaces) で探索できます。run を比較したり、検出結果をズームインしたり、インタラクティブな可視化でデータを探索できます。

この時点で、動作するインテグレーションが完成しています。`Trainer` はメトリクスを指定した project にログし、オプションでチェックポイントを Artifacts に保存し、評価出力を W\&B ダッシュボードに表示します。

<h2 id="advanced-features-and-faqs">
  高度な機能とよくある質問
</h2>

以下のセクションでは、最良のモデルの保存、チェックポイントからのトレーニングの再開、ログするためのコールバックのカスタマイズ、環境変数による W\&B の動作の設定など、一般的な追加タスクについて説明します。

<h3 id="save-the-best-model">
  最良のモデルを保存する
</h3>

`load_best_model_at_end=True` を指定した `TrainingArguments` を `Trainer` に渡すと、W\&B は最も性能の高いモデル チェックポイントを Artifacts に保存します。

モデル チェックポイントをアーティファクトとして保存すると、[Registry](/ja/products/registry) にプロモートできます。Registry では、次の操作ができます。

* 最良のモデルのバージョンを ML タスク別に整理します。
* モデルを一元管理し、チームと共有します。
* モデルを本番向けにステージングするか、追加の評価に備えてブックマークします。
* 後続の CI/CD プロセスをトリガーします。

<h3 id="load-a-saved-model">
  保存済みのモデルをロードする
</h3>

`WANDB_LOG_MODEL` を使用してモデルを W\&B Artifacts に保存した場合は、モデルの重みをダウンロードして、追加のトレーニングや推論に使用できます。ダウンロードした重みは、以前使用したものと同じ Hugging Face アーキテクチャにロードしてください。

```python theme={"system"}
# 新しい run を作成する
with wandb.init(project="amazon_sentiment_analysis") as run:
    # アーティファクトの名とバージョンを渡す
    my_model_name = "model-bert-base-high-lr:latest"
    my_model_artifact = run.use_artifact(my_model_name)

    # モデルの重みをフォルダにダウンロードし、パスを返す
    model_dir = my_model_artifact.download()

    # そのフォルダから Hugging Face モデルを読み込む
    #  同じモデルクラスを使用する
    model = AutoModelForSequenceClassification.from_pretrained(
        model_dir, num_labels=num_labels
    )

    # 追加のトレーニングを行うか、推論を実行する
```

<h3 id="resume-training-from-a-checkpoint">
  チェックポイントからトレーニングを再開する
</h3>

`WANDB_LOG_MODEL='checkpoint'` を設定している場合は、`TrainingArguments` の `model_name_or_path` 引数に `model_dir` を指定し、`Trainer` に `resume_from_checkpoint=True` を渡すことで、トレーニングを再開できます。

```python theme={"system"}
last_run_id = "xxxxxxxx"  # wandb ワークスペースから run_id を取得します

# run_id を使用して wandb の run を再開します
with wandb.init(
    project=os.environ["WANDB_PROJECT"],
    id=last_run_id,
    resume="must",
) as run:
    # アーティファクトを run に関連付けます
    my_checkpoint_name = f"checkpoint-{last_run_id}:latest"
    my_checkpoint_artifact = run.use_artifact(my_checkpoint_name)

    # チェックポイントをフォルダーにダウンロードし、パスを返します
    checkpoint_dir = my_checkpoint_artifact.download()

    # モデルとトレーナーを再初期化します
    model = AutoModelForSequenceClassification.from_pretrained(
        "<model-name>", num_labels=num_labels
    )
    # ここでトレーニングの引数を指定します。
    training_args = TrainingArguments()

    trainer = Trainer(model=model, args=training_args)

    # チェックポイントからトレーニングを再開するには、必ずチェックポイントのディレクトリを使用してください
    trainer.train(resume_from_checkpoint=checkpoint_dir)
```

<h3 id="log-and-view-evaluation-samples-during-training">
  トレーニング中に評価サンプルをログして表示する
</h3>

Transformers ライブラリの [`WandbCallback`](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) は、Transformers の `Trainer` を通じて W\&B にログする処理を担います。このコールバックをカスタマイズして、モデルの予測、混同行列、その他のカスタムデータをログできます。そのためには、`WandbCallback` をサブクラス化し、Trainer クラスの追加メソッドを使用する機能を追加します。

以下では、この新しいコールバックを Hugging Face Trainer に追加するための一般的なパターンを示し、その後に評価出力を W\&B 表にログするための完全なコード例を示します。

```python theme={"system"}
# 通常どおり Trainer をインスタンス化します
trainer = Trainer()

# Trainer オブジェクトを渡して、ログ用の新しいコールバックをインスタンス化します
evals_callback = WandbEvalsCallback(trainer, tokenizer, ...)

# コールバックを Trainer に追加します
trainer.add_callback(evals_callback)

# 通常どおり Trainer でトレーニングを開始します
trainer.train()
```

<h4 id="view-evaluation-samples-during-training">
  トレーニング中に評価サンプルを表示する
</h4>

次のセクションでは、`WandbCallback` をカスタマイズして、トレーニング中にモデルの予測を実行し、評価サンプルを W\&B 表にログする方法を説明します。これは、Trainer コールバックの `on_evaluate` メソッドを使用して、`eval_steps` ごとに実行されます。

`decode_predictions` 関数は、トークナイザーを使用してモデル出力から予測とラベルをデコードします。

次に、コードは予測とラベルから pandas データフレームを作成し、データフレームに `epoch` 列を追加します。

最後に、コードはデータフレームから `wandb.Table` を作成し、W\&B にログします。`freq` エポックごとに予測をログすることで、ログする頻度を制御できます。

<Note>
  通常の `WandbCallback` とは異なり、このカスタムコールバックは、`Trainer` の初期化中ではなく、`Trainer` がインスタンス化された**後**にトレーナーに追加する必要があります。これは、初期化中に `Trainer` インスタンスがコールバックに渡されるためです。
</Note>

```python theme={"system"}
from transformers.integrations import WandbCallback
import pandas as pd


def decode_predictions(tokenizer, predictions):
    labels = tokenizer.batch_decode(predictions.label_ids)
    logits = predictions.predictions.argmax(axis=-1)
    prediction_text = tokenizer.batch_decode(logits)
    return {"labels": labels, "predictions": prediction_text}


class WandbPredictionProgressCallback(WandbCallback):
    """Custom WandbCallback to log model predictions during training.

    This callback logs model predictions and labels to a wandb.Table at each
    logging step during training. It allows to visualize the
    model predictions as the training progresses.

    Attributes:
        trainer (Trainer): The Hugging Face Trainer instance.
        tokenizer (AutoTokenizer): The tokenizer associated with the model.
        sample_dataset (Dataset): A subset of the validation dataset
          for generating predictions.
        num_samples (int, optional): Number of samples to select from
          the validation dataset for generating predictions. Defaults to 100.
        freq (int, optional): Frequency of logging. Defaults to 2.
    """

    def __init__(self, trainer, tokenizer, val_dataset, num_samples=100, freq=2):
        """Initializes the WandbPredictionProgressCallback instance.

        Args:
            trainer (Trainer): The Hugging Face Trainer instance.
            tokenizer (AutoTokenizer): The tokenizer associated
              with the model.
            val_dataset (Dataset): The validation dataset.
            num_samples (int, optional): Number of samples to select from
              the validation dataset for generating predictions.
              Defaults to 100.
            freq (int, optional): Frequency of logging. Defaults to 2.
        """
        super().__init__()
        self.trainer = trainer
        self.tokenizer = tokenizer
        self.sample_dataset = val_dataset.select(range(num_samples))
        self.freq = freq

    def on_evaluate(self, args, state, control, **kwargs):
        super().on_evaluate(args, state, control, **kwargs)
        # `freq` エポックごとに予測をログすることで
        # ログする頻度を制御します
        if state.epoch % self.freq == 0:
            # 予測を生成します
            predictions = self.trainer.predict(self.sample_dataset)
            # 予測とラベルをデコードします
            predictions = decode_predictions(self.tokenizer, predictions)
            # 予測を wandb.Table に追加します
            predictions_df = pd.DataFrame(predictions)
            predictions_df["epoch"] = state.epoch
            records_table = self._wandb.Table(dataframe=predictions_df)
            # 表を wandb にログします
            self._wandb.log({"sample_predictions": records_table})


# まず、Trainer をインスタンス化します
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=lm_datasets["train"],
    eval_dataset=lm_datasets["validation"],
)

# WandbPredictionProgressCallback をインスタンス化します
progress_callback = WandbPredictionProgressCallback(
    trainer=trainer,
    tokenizer=tokenizer,
    val_dataset=lm_dataset["validation"],
    num_samples=10,
    freq=2,
)

# コールバックをトレーナーに追加します
trainer.add_callback(progress_callback)
```

より詳しい例については、こちらの [Colab](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/huggingface/Custom_Progress_Callback.ipynb) を参照してください。

<h3 id="additional-wb-settings">
  その他の W\&B 設定
</h3>

環境変数を設定すると、`Trainer` でログする内容をさらに細かく設定できます。W\&B の環境変数の一覧については、[環境変数リファレンス](/ja/products/wandb/platform/hosting/env-vars)を参照してください。

| 環境変数 | 使用方法 |
| - | - |
| `WANDB_PROJECT` | project の名前を指定します (デフォルトは `huggingface`) |
| `WANDB_LOG_MODEL` | <p>モデル チェックポイントを W\&B アーティファクト としてログします (デフォルトは `false`) </p><ul><li><code>false</code> (デフォルト): モデル チェックポイントを保存しません </li><li><code>checkpoint</code>: `args.save_steps` (Trainer の `TrainingArguments` で設定) ごとにチェックポイントをアップロードします。 </li><li><code>end</code>: トレーニング終了時に最終的なモデル チェックポイントをアップロードします。</li></ul> |
| `WANDB_WATCH` | <p>モデルの勾配とパラメーターのどちらをログするか、またはどちらもログしないかを設定します。</p><ul><li><code>false</code> (デフォルト): 勾配もパラメーターもログしません </li><li><code>gradients</code>: 勾配のヒストグラムをログします </li><li><code>all</code>: 勾配とパラメーターのヒストグラムをログします</li></ul> |
| `WANDB_DISABLED` | `true` に設定すると、ログを完全に無効にします (デフォルトは `false`) |
| `WANDB_QUIET` | `true` に設定すると、標準出力にログするメッセージを重要なものだけに制限します (デフォルトは `false`) |
| `WANDB_SILENT` | `true` に設定すると、`wandb` による出力を非表示にします (デフォルトは `false`) |

<Tabs>
  <Tab title="Command Line">
    ```bash theme={"system"}
    WANDB_WATCH=all
    WANDB_SILENT=true
    ```
  </Tab>

  <Tab title="ノートブック">
    ```notebook theme={"system"}
    %env WANDB_WATCH=all
    %env WANDB_SILENT=true
    ```
  </Tab>
</Tabs>

<h3 id="customize-wandbinit">
  `wandb.init()` をカスタマイズする
</h3>

`Trainer` が使用する `WandbCallback` は、`Trainer` の初期化時に `wandb.init()` を内部で呼び出します。あるいは、`Trainer` が初期化される前に `wandb.init()` を呼び出すことで、run を手動で設定することもできます。これにより、W\&B run 設定に対してフルコントロールが得られます。

以下は、`init` に渡すことができる例です。`wandb.init()` の詳細については、[`wandb.init()` リファレンス](/ja/products/wandb/ref/python/functions/init) を参照してください。

```python theme={"system"}
wandb.init(
    project="amazon_sentiment_analysis",
    name="bert-base-high-lr",
    tags=["baseline", "high-lr"],
    group="bert",
)
```

<h2 id="additional-resources">
  追加リソース
</h2>

TransformersとW\&Bに関連する記事を6つ紹介します。さらに詳しく知りたい方は、以下をご覧ください。

<details>
  <summary>Hugging Face Transformersのハイパーパラメーター最適化</summary>

  * Hugging Face Transformersのハイパーパラメーター最適化について、グリッドサーチ、ベイズ最適化、Population Based Trainingの3つの手法を比較します。
  * Hugging Face transformersの標準的なuncased BERTモデルを、SuperGLUEベンチマークのRTEデータセットでファインチューニングして使用します。
  * 比較の結果、Hugging Face transformerモデルのハイパーパラメーター最適化には、Population Based Trainingが最も効果的であることが示されています。

  詳しくは、[Hyperparameter Optimization for Hugging Face Transformers report](https://forge.coreweave.com/wandb/amogkam/transformers/reports/Hyperparameter-Optimization-for-Hugging-Face-Transformers--VmlldzoyMTc2ODI)をご覧ください。
</details>

<details>
  <summary>Hugging Tweets: ツイートを生成するモデルをトレーニングする</summary>

  * この記事では、事前トレーニング済みのGPT2 Hugging Face Transformerモデルを、誰かのツイートを使って5分でファインチューニングする方法を紹介します。
  * このモデルでは、ツイートのダウンロード、データセットの最適化、初期実験、ユーザー間の損失の比較、モデルのファインチューニングからなるパイプラインを使用します。

  詳しくは、[HuggingTweets report](https://forge.coreweave.com/wandb/wandb/huggingtweets/reports/HuggingTweets-Train-a-Model-to-Generate-Tweets--VmlldzoxMTY5MjI)をご覧ください。
</details>

<details>
  <summary>Hugging Face BERTとW\&Bによる文分類</summary>

  * この記事では、自然言語処理における近年の進歩を活用して文分類器を構築します。特に、NLPへの転移学習の応用に焦点を当てています。
  * 単一文の分類には、The Corpus of Linguistic Acceptability (CoLA) データセットを使用します。2018年5月に初めて公開された、文法的に正しいかどうかのラベルが付いた文のデータセットです。
  * GoogleのBERTを使用して、さまざまなNLPタスクに対応する高性能なモデルを少ない労力で作成します。

  詳しくは、[Sentence Classification With Hugging Face BERT and W\&B report](https://forge.coreweave.com/wandb/cayush/bert-finetuning/reports/Sentence-Classification-With-Huggingface-BERT-and-W-B--Vmlldzo4MDMwNA)をご覧ください。
</details>

<details>
  <summary>Hugging Faceのモデル性能をトラッキングするためのステップバイステップガイド</summary>

  * W\&BとHugging Face transformersを使用して、GLUEベンチマークでDistilBERTをトレーニングします。DistilBERTは、BERTより40%小さく、BERTの精度の97%を維持するTransformerです。
  * GLUEベンチマークは、NLPモデルのトレーニングに使用する9つのデータセットとタスクからなるコレクションです。

  詳しくは、[Tracking Hugging Face Model Performance report](https://forge.coreweave.com/wandb/jxmorris12/huggingface-demo/reports/A-Step-by-Step-Guide-to-Tracking-HuggingFace-Model-Performance--VmlldzoxMDE2MTU)をご覧ください。
</details>

<details>
  <summary>HuggingFaceにおけるEarly Stoppingのサンプル</summary>

  * PyTorchまたはTensorFlowの機能を使い、Early Stoppingによる正則化を適用してHugging Face Transformerをファインチューニングできます。
  * `tf.keras.callbacks.EarlyStopping`コールバックを使用すると、TensorFlowでEarly Stoppingを簡単に利用できます。
  * PyTorchにはすぐに使えるEarly Stoppingの仕組みはありませんが、動作するEarly Stopping用のフックがGitHub Gistで公開されています。

  詳しくは、[Early Stopping in Hugging Face report](https://forge.coreweave.com/wandb/ayush-thakur/huggingface/reports/Early-Stopping-in-HuggingFace-Examples--Vmlldzo0MzE2MTM)をご覧ください。
</details>

<details>
  <summary>カスタムデータセットでHugging Face Transformersをファインチューニングする方法</summary>

  カスタムのIMDBデータセットを使用して、感情分析 (二値分類) 向けにDistilBERT transformerをファインチューニングします。

  詳しくは、[Fine-Tune Hugging Face Transformers on a Custom Dataset report](https://forge.coreweave.com/wandb/ayush-thakur/huggingface/reports/How-to-Fine-Tune-HuggingFace-Transformers-on-a-Custom-Dataset--Vmlldzo0MzQ2MDc)をご覧ください。
</details>

<h2 id="get-help-or-request-features">
  ヘルプを得る、または機能をリクエストする
</h2>

Hugging Face の W\&B インテグレーションに関する問題、質問、機能のリクエストがある場合は、[Hugging Face フォーラムのこちらのスレッド](https://discuss.huggingface.co/t/logging-experiment-tracking-with-w-b/498)に投稿するか、Hugging Face の [Transformers GitHub repo](https://github.com/huggingface/transformers)で issue を作成してください。
