# TensorBoardロガー

TensorBoardは、機械学習の実験を可視化するためのツールキットです。TensorBoardを使用すると、損失や精度などのメトリクスを追跡・可視化したり、モデルグラフを可視化したり、ヒストグラムを表示したり、画像を表示したり、さらに多くのことができます。TensorBoardはHugging Face Hubと密に統合されています。Hubにプッシュされた際にTensorBoardのトレース（`tfevents`など）が自動的に検出されると、それらを可視化するためのインスタンスが起動します。HubにおけるTensorBoard統合の詳細については、[このガイド](https://huggingface.co/docs/hub/tensorboard)を参照してください。

この統合の恩恵を受けるために、`huggingface_hub`は、ログをHubにプッシュするためのカスタムロガーを提供しています。[SummaryWriter](https://tensorboardx.readthedocs.io/en/latest/tensorboard.html)のドロップインリプレイスメントとして機能し、追加のコードは不要です。トレースは引き続きローカルに保存され、バックグラウンドジョブが一定の間隔でHubにプッシュします。

## HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

#### huggingface_hub.HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

```python
huggingface_hub.HFSummaryWriter(*args, **kwargs)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/_tensorboard_logger.py#L39)

**パラメータ:**

repo_id (`str`) : ログがプッシュされるリポジトリのID。

logdir (`str`, *任意*) : ログが書き込まれるディレクトリです。指定しない場合、基盤となる`SummaryWriter`オブジェクトによってローカルディレクトリが作成されます。

commit_every (`int` または `float`、*任意*) : ログを Hub にプッシュする頻度（分単位）です。デフォルトは 5 分です。

squash_history (`bool`, *任意*) : 各コミット後にリポジトリの履歴をスクワッシュするかどうか。デフォルトは`False`です。コミットをスクワッシュすることは、リポジトリが大きくなりすぎた場合のパフォーマンス低下を避けるのに役立ちます。

repo_type (`str`, *任意*) : ログがプッシュされるリポジトリの種類。デフォルトは "model" です。

repo_revision (`str`, *任意*) : ログがプッシュされるリポジトリのリビジョンです。デフォルトは "main" です。

repo_private (`bool`, *optional*) : リポジトリを非公開にするかどうか。`None`（デフォルト）の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。

path_in_repo (`str`, *任意*) : ログがプッシュされるリポジトリ内のフォルダへのパスです。デフォルトは "tensorboard/" です。

repo_allow_patterns (`list[str]` または `str`、*任意*) : アップロードに含めるパターンのリストです。デフォルトは `"*.tfevents.*"` です。詳細については、[アップロードガイド](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder)を参照してください。

repo_ignore_patterns (`list[str]` または `str`、*省略可能*) : アップロード時に除外するパターンのリストです。詳細については、[アップロードガイド](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder)を参照してください。

token (`str`, *任意*) : 認証トークン。デフォルトでは保存されているトークンが使用されます。詳細は https://huggingface.co/settings/token を参照してください。

kwargs : `SummaryWriter`に渡される追加のキーワード引数。

Tensorboardの`SummaryWriter`をラップし、トレーニングログをHubにプッシュするためのラッパーです。

データはローカルに記録され、その後非同期で Hub にプッシュされます。トレーニングスクリプトのブロッキングを避けるため、Hub へのデータプッシュは別スレッドで実行されます。具体的には、アップロードが何らかの理由で失敗した場合（接続問題など）でも、メインスクリプトは中断されません。データは `commit_every` 分ごとに自動的に Hub にプッシュされます（デフォルトは 5 分ごと）。

> [!WARNING]
> `HFSummaryWriter` は実験的な機能です。API は事前の通知なしに将来変更される可能性があります。

例:
```diff
# Taken from https://pytorch.org/docs/stable/tensorboard.html
- from torch.utils.tensorboard import SummaryWriter
+ from huggingface_hub import HFSummaryWriter

import numpy as np

- writer = SummaryWriter()
+ writer = HFSummaryWriter(repo_id="username/my-trained-model")

for n_iter in range(100):
    writer.add_scalar('Loss/train', np.random.random(), n_iter)
    writer.add_scalar('Loss/test', np.random.random(), n_iter)
    writer.add_scalar('Accuracy/train', np.random.random(), n_iter)
    writer.add_scalar('Accuracy/test', np.random.random(), n_iter)
```

```py
>>> from huggingface_hub import HFSummaryWriter

# Logs are automatically pushed every 15 minutes (5 by default) + when exiting the context manager
>>> with HFSummaryWriter(repo_id="test_hf_logger", commit_every=15) as logger:
...     logger.add_scalar("a", 1)
...     logger.add_scalar("b", 2)
```

