# Trình ghi log TensorBoard

TensorBoard là bộ công cụ trực quan hóa cho các thí nghiệm machine learning. TensorBoard cho phép theo dõi và trực quan hóa các chỉ số như loss và accuracy, trực quan hóa đồ thị mô hình, xem histogram, hiển thị hình ảnh và nhiều hơn nữa. TensorBoard được tích hợp chặt chẽ với Hugging Face Hub. Hub tự động phát hiện các trace của TensorBoard (chẳng hạn như `tfevents`) khi được đẩy lên Hub, từ đó khởi động một instance để trực quan hóa chúng. Để biết thêm thông tin về tích hợp TensorBoard trên Hub, hãy xem [hướng dẫn này](https://huggingface.co/docs/hub/tensorboard).

Để tận dụng tích hợp này, `huggingface_hub` cung cấp một logger tùy chỉnh để đẩy log lên Hub. Nó hoạt động như một bản thay thế trực tiếp cho [SummaryWriter](https://tensorboardx.readthedocs.io/en/latest/tensorboard.html) mà không cần thêm mã nào. Các trace vẫn được lưu cục bộ và một tác vụ nền sẽ đẩy chúng lên Hub theo các khoảng thời gian đều đặn.

## HFSummaryWriter[[huggingface_hub.HFSummaryWriter]]

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

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

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

**Tham số:**

repo_id (`str`) : id của repo mà các log sẽ được đẩy lên.

logdir (`str`, *tùy chọn*) : Thư mục nơi các nhật ký sẽ được ghi. Nếu không được chỉ định, một thư mục cục bộ sẽ được tạo bởi đối tượng `SummaryWriter` bên dưới.

commit_every (`int` hoặc `float`, *tùy chọn*) : Tần suất (tính bằng phút) để đẩy nhật ký lên Hub. Mặc định là 5 phút.

squash_history (`bool`, *tuỳ chọn*) : Có nên nén lịch sử của kho sau mỗi lần commit hay không. Mặc định là `False`. Việc nén các commit hữu ích để tránh hiệu năng giảm khi kho trở nên quá lớn.

repo_type (`str`, *tùy chọn*) : Kiểu của kho mà các nhật ký sẽ được đẩy lên. Mặc định là "model".

repo_revision (`str`, *tùy chọn*) : Phiên bản của kho mà các nhật ký sẽ được đẩy lên. Mặc định là "main".

repo_private (`bool`, *tuỳ chọn*) : Có nên đặt kho thành riêng tư hay không. Nếu là `None` (mặc định), kho sẽ là công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại.

path_in_repo (`str`, *tùy chọn*) : Đường dẫn đến thư mục trong kho mà các nhật ký sẽ được đẩy lên. Mặc định là "tensorboard/".

repo_allow_patterns (`list[str]` hoặc `str`, *tùy chọn*) : Một danh sách các mẫu cần bao gồm trong quá trình tải lên. Mặc định là `"*.tfevents.*"`. Xem [hướng dẫn tải lên](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) để biết thêm chi tiết.

repo_ignore_patterns (`list[str]` hoặc `str`, *tùy chọn*) : Một danh sách các mẫu cần loại trừ trong quá trình tải lên. Xem [hướng dẫn tải lên](https://huggingface.co/docs/huggingface_hub/guides/upload#upload-a-folder) để biết thêm chi tiết.

token (`str`, *tùy chọn*) : Token xác thực. Mặc định sẽ dùng token đã lưu. Xem https://huggingface.co/settings/token để biết thêm chi tiết

kwargs : Các đối số từ khóa bổ sung được truyền đến `SummaryWriter`.

Bọc quanh `SummaryWriter` của tensorboard để đẩy nhật ký huấn luyện lên Hub.

Dữ liệu được ghi lại cục bộ sau đó được đẩy lên Hub một cách bất đồng bộ. Việc đẩy dữ liệu lên Hub được thực hiện trong một luồng riêng để tránh chặn script huấn luyện. Cụ thể, nếu quá trình tải lên thất bại vì bất kỳ lý do nào (ví dụ: sự cố kết nối), script chính sẽ không bị gián đoạn. Dữ liệu được tự động đẩy lên Hub mỗi `commit_every` phút (mặc định là mỗi 5 phút).

> [!WARNING]
> `HFSummaryWriter` là thử nghiệm. API của nó có thể thay đổi trong tương lai mà không cần thông báo trước.

Ví dụ:
```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)
```

