# Логгер TensorBoard

TensorBoard — это набор инструментов для визуализации экспериментов в машинном обучении. TensorBoard позволяет отслеживать и визуализировать метрики, такие как loss и accuracy, визуализировать граф модели, просматривать гистограммы, отображать изображения и многое другое. TensorBoard хорошо интегрирован с Hugging Face Hub. Hub автоматически обнаруживает трассировки TensorBoard (например, `tfevents`) при их загрузке на Hub и запускает экземпляр для их визуализации. Чтобы узнать больше об интеграции TensorBoard на Hub, ознакомьтесь с [этим руководством](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`) : Идентификатор репозитория, в который будут отправлены логи.

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`.

Обёртка над `SummaryWriter` из tensorboard для отправки журналов обучения в Hub.

Данные записываются локально, а затем асинхронно отправляются на Hub. Отправка данных на Hub выполняется в отдельном потоке, чтобы не блокировать скрипт обучения. В частности, если загрузка по какой-либо причине (например, из-за проблемы с подключением) завершится ошибкой, основной скрипт не будет прерван. Данные автоматически отправляются на Hub каждые `commit_every` минут (по умолчанию — каждые 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)
```

