# TensorBoard 로거

TensorBoard는 기계 학습 실험을 위한 시각화 툴킷입니다. TensorBoard를 사용하면 손실(loss)과 정확도(accuracy)와 같은 메트릭을 추적하고 시각화하고, 모델 그래프를 시각화하고, 히스토그램을 확인하고, 이미지를 표시하는 등 다양한 작업을 수행할 수 있습니다. TensorBoard는 Hugging Face Hub와 잘 통합되어 있습니다. Hub에 `tfevents`와 같은 TensorBoard 트레이스가 푸시되면 Hub가 이를 자동으로 감지하여 시각화 인스턴스를 시작합니다. 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`, *선택 사항*) : 저장소를 비공개로 만들지 여부입니다. `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`에 전달되는 추가 키워드 인자입니다.

Hub에 학습 로그를 전송하기 위해 tensorboard의 `SummaryWriter`를 감싸는 래퍼입니다.

데이터는 로컬에 기록된 후 Hub로 비동기적으로 전송됩니다. Hub로의 데이터 전송은 학습 스크립트의 블로킹을 방지하기 위해 별도의 스레드에서 수행됩니다. 특히 업로드가 어떤 이유로든 실패하더라도(예: 연결 문제) 메인 스크립트는 중단되지 않습니다. 데이터는 `commit_every`분마다(기본값은 5분마다) 자동으로 Hub로 전송됩니다.

> [!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)
```

