# Logger do TensorBoard

TensorBoard é um conjunto de ferramentas de visualização para experimentação em aprendizado de máquina. O TensorBoard permite rastrear e visualizar métricas, como perda e precisão, visualizar o grafo do modelo, exibir histogramas, exibir imagens e muito mais. O TensorBoard está bem integrado ao Hugging Face Hub. O Hub detecta automaticamente os rastros do TensorBoard (como `tfevents`) quando enviados ao Hub, o que inicia uma instância para visualizá-los. Para obter mais informações sobre a integração do TensorBoard no Hub, consulte [este guia](https://huggingface.co/docs/hub/tensorboard).

Para se beneficiar dessa integração, `huggingface_hub` fornece um logger personalizado para enviar logs ao Hub. Ele funciona como uma substituição direta para [SummaryWriter](https://tensorboardx.readthedocs.io/en/latest/tensorboard.html) sem a necessidade de código extra. Os rastros ainda são salvos localmente e um job em segundo plano os envia ao Hub em intervalos regulares.

## HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

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

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

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

**Parâmetros:**

repo_id (`str`) : O id do repositório para o qual os logs serão enviados.

logdir (`str`, *opcional*) : O diretório onde os logs serão gravados. Se não for especificado, um diretório local será criado pelo objeto `SummaryWriter` subjacente.

commit_every (`int` ou `float`, *opcional*) : A frequência (em minutos) com que os logs serão enviados ao Hub. O padrão é 5 minutos.

squash_history (`bool`, *opcional*) : Se deve comprimir o histórico do repositório após cada commit. O padrão é `False`. Comprimir commits é útil para evitar o desempenho degradado no repositório quando ele cresce demais.

repo_type (`str`, *opcional*) : O tipo do repositório para o qual os logs serão enviados. O padrão é "model".

repo_revision (`str`, *opcional*) : A revisão do repositório para a qual os logs serão enviados. O padrão é "main".

repo_private (`bool`, *opcional*) : Se deve tornar o repositório privado. Se `None` (padrão), o repositório será público, a menos que o padrão da organização seja privado. Este valor é ignorado se o repositório já existir.

path_in_repo (`str`, *opcional*) : O caminho para a pasta no repositório onde os logs serão enviados. O padrão é "tensorboard/".

repo_allow_patterns (`list[str]` ou `str`, *opcional*) : Uma lista de padrões a serem incluídos no upload. O padrão é `"*.tfevents.*"`. Consulte o [guia de upload](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) para mais detalhes.

repo_ignore_patterns (`list[str]` ou `str`, *opcional*) : Uma lista de padrões para excluir no upload. Consulte o [guia de upload](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) para mais detalhes.

token (`str`, *opcional*) : Token de autenticação. O padrão será o token armazenado. Consulte https://huggingface.co/settings/token para mais detalhes

kwargs : Argumentos de palavra-chave adicionais passados para `SummaryWriter`.

Wrapper em torno do `SummaryWriter` do tensorboard para enviar logs de treinamento para o Hub.

Os dados são registrados localmente e, em seguida, enviados para o Hub de forma assíncrona. O envio de dados para o Hub é realizado em uma thread separada para evitar bloquear o script de treinamento. Em particular, se o upload falhar por qualquer motivo (por exemplo, um problema de conexão), o script principal não será interrompido. Os dados são enviados automaticamente para o Hub a cada `commit_every` minutos (padrão: a cada 5 minutos).

> [!WARNING]
> `HFSummaryWriter` é experimental. Sua API está sujeita a alterações no futuro sem aviso prévio.

Exemplos:
```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)
```

