# Logger TensorBoard

TensorBoard adalah toolkit visualisasi untuk eksperimen machine learning. TensorBoard memungkinkan pelacakan dan visualisasi metrik seperti loss dan accuracy, visualisasi graf model, peninjauan histogram, tampilan gambar, dan banyak lagi. TensorBoard terintegrasi dengan baik dengan Hugging Face Hub. Hub secara otomatis mendeteksi jejak TensorBoard (seperti `tfevents`) saat di-push ke Hub, yang kemudian memulai sebuah instance untuk memvisualisasikannya. Untuk informasi lebih lanjut tentang integrasi TensorBoard di Hub, lihat [panduan ini](https://huggingface.co/docs/hub/tensorboard).

Untuk memanfaatkan integrasi ini, `huggingface_hub` menyediakan logger khusus untuk mengirim log ke Hub. Fungsinya sebagai pengganti langsung untuk [SummaryWriter](https://tensorboardx.readthedocs.io/en/latest/tensorboard.html) tanpa perlu kode tambahan. Trace tetap disimpan secara lokal dan sebuah tugas latar belakang mengirimkannya ke Hub pada interval yang teratur.

## HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

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

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

[Sumber](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_tensorboard_logger.py#L39)

**Parameter:**

repo_id (`str`) : id dari repo tempat log akan didorong.

logdir (`str`, *opsional*) : Direktori tempat log akan ditulis. Jika tidak ditentukan, direktori lokal akan dibuat oleh objek `SummaryWriter` yang mendasarinya.

commit_every (`int` atau `float`, *opsional*) : Frekuensi (dalam menit) di mana log akan didorong ke Hub. Bawaan adalah 5 menit.

squash_history (`bool`, *opsional*) : Apakah akan meratakan riwayat repo setelah setiap commit. Defaultnya adalah `False`. Meratakan commit berguna untuk menghindari penurunan performa pada repo ketika ukurannya menjadi terlalu besar.

repo_type (`str`, *opsional*) : Jenis repo tempat log akan didorong. Bawaan adalah "model".

repo_revision (`str`, *opsional*) : Revisi repo tempat log akan didorong. Bawaan adalah "main".

repo_private (`bool`, *opsional*) : Apakah membuat repo menjadi privat. Jika `None` (default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada.

path_in_repo (`str`, *opsional*) : Path ke folder di repo tempat log akan didorong. Defaultnya adalah "tensorboard/".

repo_allow_patterns (`list[str]` atau `str`, *opsional*) : Daftar pola yang akan disertakan dalam unggahan. Nilai defaultnya adalah `"*.tfevents.*"`. Lihat [panduan unggah](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) untuk detail lebih lanjut.

repo_ignore_patterns (`list[str]` atau `str`, *opsional*) : Daftar pola untuk dikecualikan dalam unggahan. Lihat [panduan unggah](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) untuk detail lebih lanjut.

token (`str`, *opsional*) : Token autentikasi. Akan menggunakan token yang tersimpan secara default. Lihat https://huggingface.co/settings/token untuk detail lebih lanjut

kwargs : Argumen kata kunci tambahan yang diteruskan ke `SummaryWriter`.

Wrapper di sekitar `SummaryWriter` dari tensorboard untuk mengirim log pelatihan ke Hub.

Data dicatat secara lokal dan kemudian didorong ke Hub secara asinkron. Pengiriman data ke Hub dilakukan di thread terpisah untuk menghindari pemblokiran skrip pelatihan. Secara khusus, jika unggahan gagal karena alasan apa pun (misalnya masalah koneksi), skrip utama tidak akan terputus. Data secara otomatis didorong ke Hub setiap `commit_every` menit (default setiap 5 menit).

> [!WARNING]
> `HFSummaryWriter` bersifat eksperimental. API-nya dapat berubah di masa depan tanpa pemberitahuan sebelumnya.

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

