# Registrador de TensorBoard

TensorBoard es un kit de herramientas de visualización para la experimentación en aprendizaje automático. TensorBoard permite hacer seguimiento y visualizar métricas como la pérdida y la precisión, visualizar el grafo del modelo, ver histogramas, mostrar imágenes y mucho más. TensorBoard está bien integrado con Hugging Face Hub. El Hub detecta automáticamente las trazas de TensorBoard (como `tfevents`) cuando se suben al Hub, lo que inicia una instancia para visualizarlas. Para obtener más información sobre la integración de TensorBoard en el Hub, consulta [esta guía](https://huggingface.co/docs/hub/tensorboard).

Para aprovechar esta integración, `huggingface_hub` proporciona un registrador personalizado para enviar registros al Hub. Funciona como un reemplazo directo de [SummaryWriter](https://tensorboardx.readthedocs.io/en/latest/tensorboard.html) sin necesidad de código adicional. Las trazas se siguen guardando localmente y un trabajo en segundo plano las envía al Hub a intervalos regulares.

## HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

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

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

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

**Parámetros:**

repo_id (`str`) : El id del repositorio al que se enviarán los registros.

logdir (`str`, *opcional*) : El directorio donde se escribirán los registros. Si no se especifica, se creará un directorio local mediante el objeto `SummaryWriter` subyacente.

commit_every (`int` o `float`, *opcional*) : La frecuencia (en minutos) con la que se enviarán los registros al Hub. El valor predeterminado es de 5 minutos.

squash_history (`bool`, *opcional*) : Si se debe comprimir el historial del repositorio después de cada commit. El valor predeterminado es `False`. Comprimir los commits es útil para evitar un deterioro del rendimiento en el repositorio cuando este crece demasiado.

repo_type (`str`, *opcional*) : El tipo de repositorio al que se enviarán los registros. El valor predeterminado es "model".

repo_revision (`str`, *opcional*) : La revisión del repositorio a la que se enviarán los registros. El valor predeterminado es "main".

repo_private (`bool`, *opcional*) : Si se debe hacer el repositorio privado. Si es `None` (predeterminado), el repositorio será público a menos que el valor predeterminado de la organización sea privado. Este valor se ignora si el repositorio ya existe.

path_in_repo (`str`, *opcional*) : La ruta de la carpeta en el repositorio donde se enviarán los registros. El valor predeterminado es "tensorboard/".

repo_allow_patterns (`list[str]` o `str`, *opcional*) : Una lista de patrones para incluir en la carga. El valor predeterminado es `"*.tfevents.*"`. Consulte la [guía de carga](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) para más detalles.

repo_ignore_patterns (`list[str]` o `str`, *opcional*) : Una lista de patrones para excluir en la carga. Consulta la [guía de carga](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) para más detalles.

token (`str`, *opcional*) : Token de autenticación. Por defecto, se utilizará el token almacenado. Consulte https://huggingface.co/settings/token para obtener más detalles

kwargs : Argumentos de palabra clave adicionales que se pasan a `SummaryWriter`.

Envoltorio alrededor del `SummaryWriter` de tensorboard para enviar los registros de entrenamiento al Hub.

Los datos se registran localmente y luego se envían al Hub de forma asíncrona. El envío de datos al Hub se realiza en un hilo separado para evitar bloquear el script de entrenamiento. En particular, si la carga falla por cualquier motivo (p. ej., un problema de conexión), el script principal no se interrumpirá. Los datos se envían automáticamente al Hub cada `commit_every` minutos (por defecto, cada 5 minutos).

> [!WARNING]
> `HFSummaryWriter` es experimental. Su API está sujeta a cambios en el futuro sin previo aviso.

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

