> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-sandboxes-integrations-placement.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Hugging Face Transformers

> Hugging Face Transformers Trainer で W&B を使用して、実験管理、モデル チェックポイント、データセットのバージョン管理を行う。

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>
    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 モデルや、混合精度、gradient checkpointing などのトレーニング手法を簡単に利用できます。[W\&B インテグレーション](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) を使うと、その使いやすさはそのままに、インタラクティブな一元管理ダッシュボードで、充実した柔軟な実験管理とモデルのバージョン管理を行えます。

<div id="next-level-logging-in-few-lines">
  ## 数行でできるワンランク上のログする
</div>

```python theme={null}
os.environ["WANDB_PROJECT"] = "<my-amazing-project>"  # W&B project に名前を付ける
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/wb-21fd5541-docs-sandboxes-integrations-placement/F9fRIboixVPY5pzA/images/integrations/huggingface_gif.gif?s=ce71032feda7448ef823450ca899cce0" alt="HuggingFace ダッシュボード" width="600" height="320" data-path="images/integrations/huggingface_gif.gif" />
</Frame>

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

<div id="get-started-track-experiments">
  ## はじめに: 実験を管理する
</div>

<div id="sign-up-and-create-an-api-key">
  ### サインアップしてAPIキーを発行する
</div>

APIキーは、お使いのマシンをW\&Bに認証するために使用します。APIキーはユーザープロフィールから発行できます。

<Note>
  より手早く行うには、[User Settings](https://wandb.ai/settings) にアクセスしてAPIキーを作成してください。APIキーはすぐにコピーし、パスワードマネージャーなどの安全な場所に保存してください。
</Note>

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

<div id="install-the-wandb-library-and-log-in">
  ### `wandb` ライブラリをインストールしてログインする
</div>

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

<Tabs>
  <Tab title="コマンドライン">
    1. `WANDB_API_KEY` [環境変数](/ja/models/track/environment-variables/)に APIキー を設定します。

       ```bash theme={null}
       export WANDB_API_KEY=<your_api_key>
       ```

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

       ```shell theme={null}
       pip install wandb

       wandb login
       ```
  </Tab>

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

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

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

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

W\&B を初めて使用する場合は、[クイックスタート](/ja/models/quickstart/)を確認することをおすすめします。

<div id="name-the-project">
  ### プロジェクトに名前を付ける
</div>

W\&B のプロジェクトは、関連する run からログされたすべてのチャート、データ、モデルを保存する場所です。プロジェクトに名前を付けることで、作業を整理しやすくなり、1 つのプロジェクトに関するすべての情報を 1 か所にまとめられます。

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

<Tabs>
  <Tab title="コマンドライン">
    ```bash theme={null}
    WANDB_PROJECT=amazon_sentiment_analysis
    ```
  </Tab>

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

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

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

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

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

コード内でもコマンドラインからでも、`Trainer` のトレーニング引数を定義する際に**最も重要なステップ**は、W\&B でログすることを有効にするため、`report_to` を `"wandb"` に設定することです。

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

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

<Tabs>
  <Tab title="コマンドライン">
    ```bash theme={null}
    python run_glue.py \     # Python スクリプトを実行
      --report_to wandb \    # W&amp;B へログすることを有効化
      --run_name bert-base-high-lr \   # W&amp;B の run 名（任意）
      # ここに他のコマンドライン引数を指定
    ```
  </Tab>

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

    args = TrainingArguments( # ここに他の引数と kwargs を指定
    report_to="wandb", # W&B へログすることを有効化
    run_name="bert-base-high-lr", # W&B の run 名（任意）
    logging_steps=1, # W&B にログする頻度
    )

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

    trainer.train() # トレーニングを開始し、W&B へログする

    ```
  </Tab>
</Tabs>

<Note>
  TensorFlow を使っていますか？PyTorch の `Trainer` を TensorFlow の `TFTrainer` に置き換えるだけです。
</Note>

```
```

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

[Artifacts](/ja/models/artifacts/) を使用すると、最大 100GB までのモデルとデータセットを無料で保存でき、さらに W\&B の [Registry](/ja/models/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="コマンドライン">
    ```bash theme={null}
    WANDB_LOG_MODEL="checkpoint"
    ```
  </Tab>

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

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

  <Tab title="Python ノートブック">
    ```notebook theme={null}
    %env WANDB_LOG_MODEL="checkpoint"
    ```
  </Tab>
</Tabs>

これ以降に初期化するすべての Transformers `Trainer` は、モデルを W\&B プロジェクトにアップロードします。ログしたモデル チェックポイントは [Artifacts](/ja/models/artifacts/) の UI で確認でき、完全なモデル リネージが含まれます (UI でのモデル チェックポイントの例は[こちら](https://wandb.ai/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>

<div id="wb-registry">
  #### W\&B Registry
</div>

チェックポイントをArtifactsにログしたら、[Registry](/ja/models/registry/) を使って最良のモデル チェックポイントを登録し、チーム全体で一元管理できます。Registry を使うと、最良のモデルをタスクごとに整理し、モデルのライフサイクルを管理し、ML ライフサイクル全体をトラッキングおよび監査し、後続のアクションを[自動化](/ja/models/automations/)できます。

モデル Artifact をリンクする方法については、[Registry](/ja/models/registry/) を参照してください。

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

トレーニング中または評価時にモデルの出力を可視化することは、モデルがどのように学習しているかを正しく理解するうえで重要になることがよくあります。

Transformers Trainer のコールバックシステムを使用すると、モデルのテキスト生成結果やその他の予測など、役立つ追加データを W\&B 表 にログできます。

トレーニング中に評価出力をログし、このような W\&B 表 に記録する方法の詳細なガイドについては、以下の[カスタム ログする セクション](#custom-logging-log-and-view-evaluation-samples-during-training)を参照してください。

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-sandboxes-integrations-placement/F9fRIboixVPY5pzA/images/integrations/huggingface_eval_tables.png?fit=max&auto=format&n=F9fRIboixVPY5pzA&q=85&s=4955a3ae9106500365014a4d206e8015" alt="評価出力を含む W&B 表 を示しています" width="2002" height="1214" data-path="images/integrations/huggingface_eval_tables.png" />
</Frame>

<div id="finish-your-wb-run-notebook-only">
  ### W\&B Run を終了する (Notebook のみ)
</div>

トレーニングを Python スクリプト内で実行している場合、W\&B run はスクリプトの終了とともに終了します。

Jupyter または Google Colab のノートブックを使用している場合は、`run.finish()` を呼び出して、トレーニングの完了を W\&B に伝える必要があります。

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

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

run.finish()
```

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

トレーニング結果をログしたら、[W\&B ダッシュボード](/ja/models/track/workspaces/) で結果をインタラクティブに確認できます。数十件のrunを一度に簡単に比較し、興味深い発見を拡大して詳しく見たり、柔軟でインタラクティブな可視化によって複雑なデータからインサイトを引き出したりできます。

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

<div id="how-do-i-save-the-best-model">
  ### 最良のモデルを保存するにはどうすればよいですか
</div>

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

モデル チェックポイントを Artifacts として保存した場合は、[Registry](/ja/models/registry/) に昇格できます。Registry では、次のことができます。

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

<div id="how-do-i-load-a-saved-model">
  ### 保存したモデルを読み込むにはどうすればよいですか？
</div>

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

```python theme={null}
# 新しい run を作成する
with wandb.init(project="amazon_sentiment_analysis") as run:
    # Artifact の名前とバージョンを渡す
    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
    )

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

<div id="how-do-i-resume-training-from-a-checkpoint">
  ### チェックポイントからトレーニングを再開するにはどうすればよいですか？
</div>

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

```python theme={null}
last_run_id = "xxxxxxxx"  # wandb workspace から run_id を取得する

# run_id から wandb の run を再開する
with wandb.init(
    project=os.environ["WANDB_PROJECT"],
    id=last_run_id,
    resume="must",
) as run:
    # run に Artifact を接続する
    my_checkpoint_name = f"checkpoint-{last_run_id}:latest"
    my_checkpoint_artifact = run.use_artifact(my_model_name)

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

    # モデルと trainer を再初期化する
    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)
```

<div id="how-do-i-log-and-view-evaluation-samples-during-training">
  ### トレーニング中に評価サンプルをログして表示するにはどうすればよいですか
</div>

Transformers の `Trainer` 経由で W\&B にログする処理は、Transformers ライブラリの [`WandbCallback`](https://huggingface.co/transformers/main_classes/callback.html#transformers.integrations.WandbCallback) が担います。Hugging Face のログすることをカスタマイズする必要がある場合は、`WandbCallback` をサブクラス化し、Trainer クラスの追加の method を活用する機能を加えることで、このコールバックを拡張できます。

以下に、この新しいコールバックを HF Trainer に追加する一般的なパターンを示します。さらに下には、評価出力を W\&B の表にログする完全なコード例を掲載しています。

```python theme={null}
# Trainer を通常通りインスタンス化する
trainer = Trainer()

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

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

# Trainer のトレーニングを通常通り開始する
trainer.train()
```

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

次のセクションでは、`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` インスタンスが コールバック に渡されるためです。

```python theme={null}
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):
    """トレーニング中にモデルの予測をログするカスタム WandbCallback。

    このコールバックは、トレーニング中の各ログステップで、モデルの予測とラベルを
    wandb.Table にログします。トレーニングの進行に伴い、モデルの予測を
    可視化することができます。

    Attributes:
        trainer (Trainer): Hugging Face の Trainer インスタンス。
        tokenizer (AutoTokenizer): モデルに関連付けられたトークナイザー。
        sample_dataset (Dataset): 予測生成に使用する検証データセットのサブセット。
        num_samples (int, optional): 予測生成のために検証データセットから
          選択するサンプル数。デフォルトは 100。
        freq (int, optional): ログの頻度。デフォルトは 2。
    """

    def __init__(self, trainer, tokenizer, val_dataset, num_samples=100, freq=2):
        """WandbPredictionProgressCallback インスタンスを初期化します。

        Args:
            trainer (Trainer): Hugging Face の Trainer インスタンス。
            tokenizer (AutoTokenizer): モデルに関連付けられた
              トークナイザー。
            val_dataset (Dataset): 検証データセット。
            num_samples (int, optional): 予測生成のために検証データセットから
              選択するサンプル数。
              デフォルトは 100。
            freq (int, optional): ログの頻度。デフォルトは 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 に追加する
trainer.add_callback(progress_callback)
```

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

<div id="what-additional-wb-settings-are-available">
  ### 利用可能な追加の W\&B 設定は何ですか？
</div>

環境変数を設定することで、`Trainer` でログする内容をさらに細かく設定できます。W\&B の環境変数の一覧は、[こちら](/ja/platform/hosting/env-vars)で確認できます。

| 環境変数              | 用途                                                                                                                                                                                                                                                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `WANDB_PROJECT`   | プロジェクトに名前を付けます (デフォルトは `huggingface`)                                                                                                                                                                                                                                                                         |
| `WANDB_LOG_MODEL` | <p>モデル チェックポイントを W\&B Artifact としてログします (デフォルトは `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>モデルの gradient、parameter、またはそのどちらもログしないかを設定します</p><ul><li><code>false</code> (デフォルト) : gradient や parameter はログしません </li><li><code>gradients</code>: gradient のヒストグラムをログします </li><li><code>all</code>: gradient と parameter のヒストグラムをログします</li></ul>                                                         |
| `WANDB_DISABLED`  | `true` に設定すると、ログすることを完全に無効にします (デフォルトは `false`)                                                                                                                                                                                                                                                               |
| `WANDB_QUIET`.    | `true` に設定すると、標準出力にログされるメッセージを重大なもののみに制限します (デフォルトは `false`)                                                                                                                                                                                                                                                  |
| `WANDB_SILENT`    | `true` に設定すると、wandb が出力する内容を表示しないようにします (デフォルトは `false`)                                                                                                                                                                                                                                                      |

<Tabs>
  <Tab title="コマンドライン">
    ```bash theme={null}
    WANDB_WATCH=all
    WANDB_SILENT=true
    ```
  </Tab>

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

<div id="how-do-i-customize-wandbinit">
  ### `wandb.init()` をカスタマイズするにはどうすればよいですか？
</div>

`Trainer` が使用する `WandbCallback` は、`Trainer` の初期化時に内部で `wandb.init()` を呼び出します。代わりに、`Trainer` が初期化される前に `wandb.init()` を呼び出して、run を手動で設定することもできます。これにより、W\&B の run 設定を完全に制御できます。

`init` に渡す内容の例を以下に示します。`wandb.init()` の詳細については、[`wandb.init()` reference](/ja/models/ref/python/functions/init)を参照してください。

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

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

以下は、Transformers と W\&B に関連するおすすめの 6 本の記事です

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

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

  [Hugging Face Transformers のハイパーパラメーター最適化レポート](https://wandb.ai/amogkam/transformers/reports/Hyperparameter-Optimization-for-Hugging-Face-Transformers--VmlldzoyMTc2ODI)をお読みください。
</details>

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

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

  完全版のレポートは[こちら](https://wandb.ai/wandb/huggingtweets/reports/HuggingTweets-Train-a-Model-to-Generate-Tweets--VmlldzoxMTY5MjI)をご覧ください。
</details>

<details>
  <summary>Hugging Face BERT と WB による文分類</summary>

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

  完全版のレポートは[こちら](https://wandb.ai/cayush/bert-finetuning/reports/Sentence-Classification-With-Huggingface-BERT-and-W-B--Vmlldzo4MDMwNA)をご覧ください。
</details>

<details>
  <summary>Hugging Face モデル性能をトラッキングするための step ごとのガイド</summary>

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

  完全版のレポートは[こちら](https://wandb.ai/jxmorris12/huggingface-demo/reports/A-Step-by-Step-Guide-to-Tracking-HuggingFace-Model-Performance--VmlldzoxMDE2MTU)をご覧ください。
</details>

<details>
  <summary>HuggingFace における Early Stopping の例</summary>

  * Early Stopping 正則化を使用した Hugging Face Transformer のファインチューニングは、PyTorch または TensorFlow でネイティブに実行できます。
  * TensorFlow では、`tf.keras.callbacks.EarlyStopping` コールバック を使って簡単に Early Stopping を利用できます。
  * PyTorch にはそのまま使える early stopping method はありませんが、GitHub Gist で動作する early stopping hook が公開されています。

  完全版のレポートは[こちら](https://wandb.ai/ayush-thakur/huggingface/reports/Early-Stopping-in-HuggingFace-Examples--Vmlldzo0MzE2MTM)をご覧ください。
</details>

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

  カスタム IMDB データセットで、感情分析 (2 値分類) のために DistilBERT transformer をファインチューニングします。

  完全版のレポートは[こちら](https://wandb.ai/ayush-thakur/huggingface/reports/How-to-Fine-Tune-HuggingFace-Transformers-on-a-Custom-Dataset--Vmlldzo0MzQ2MDc)をご覧ください。
</details>

<div id="get-help-or-request-features">
  ## サポートを受ける、または機能を要望する
</div>

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