TensorBoard 로거
TensorBoard는 기계 학습 실험을 위한 시각화 툴킷입니다. TensorBoard를 사용하면 손실(loss)과 정확도(accuracy)와 같은 메트릭을 추적하고 시각화하고, 모델 그래프를 시각화하고, 히스토그램을 확인하고, 이미지를 표시하는 등 다양한 작업을 수행할 수 있습니다.
TensorBoard는 Hugging Face Hub와 잘 통합되어 있습니다. Hub에 tfevents와 같은 TensorBoard 트레이스가 푸시되면 Hub가 이를 자동으로 감지하여 시각화 인스턴스를 시작합니다. Hub의 TensorBoard 통합에 대한 자세한 내용은 이 가이드를 확인하세요.
이 통합의 이점을 누리기 위해 huggingface_hub는 Hub로 로그를 푸시하는 커스텀 로거를 제공합니다. SummaryWriter의 드롭인 대체재로 작동하며 추가 코드가 필요하지 않습니다. 트레이스는 여전히 로컬에 저장되고, 백그라운드 작업이 정기적인 간격으로 Hub로 푸시합니다.
HFSummaryWriter
class huggingface_hub.HFSummaryWriter
< source >( *args**kwargs )
매개변수
- repo_id (
str) — 로그가 푸시될 저장소의 ID입니다. - logdir (
str, 선택 사항) — 로그가 기록될 디렉터리입니다. 지정하지 않으면 기본SummaryWriter객체가 로컬 디렉터리를 생성합니다. - commit_every (
int또는float, 선택 사항) — 로그가 Hub에 푸시되는 주기(분 단위)입니다. 기본값은 5분입니다. - squash_history (
bool, 선택 사항) — 각 커밋 후 리포지토리의 히스토리를 squash할지 여부입니다. 기본값은False입니다. 커밋을 squash하면 리포지토리가 너무 커질 때 성능 저하를 방지하는 데 유용합니다. - repo_type (
str, 선택 사항) — 로그가 푸시될 저장소의 유형입니다. 기본값은 “model”입니다. - repo_revision (
str, 선택 사항) — 로그가 푸시될 저장소의 리비전입니다. 기본값은 “main”입니다. - repo_private (
bool, 선택 사항) — 리포지토리를 비공개로 만들지 여부를 지정합니다.None(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 리포지토리는 공개됩니다. 리포지토리가 이미 존재하면 이 값은 무시됩니다. - path_in_repo (
str, 선택 사항) — 로그가 push될 repo 내 폴더의 경로입니다. 기본값은 “tensorboard/”입니다. - repo_allow_patterns (
list[str]또는str, 선택 사항) — 업로드에 포함할 패턴 목록입니다. 기본값은"*.tfevents.*"입니다. 자세한 내용은 업로드 가이드를 참고하세요. - repo_ignore_patterns (
list[str]또는str, 선택 사항) — 업로드에서 제외할 패턴 목록입니다. 자세한 내용은 업로드 가이드를 참고하세요. - token (
str, 선택 사항) — 인증 토큰입니다. 저장된 토큰을 기본값으로 사용합니다. 자세한 내용은 https://huggingface.co/settings/token을 참조하세요. - kwargs —
SummaryWriter에 전달되는 추가 키워드 인자.
Hub에 학습 로그를 전송하기 위해 tensorboard의 SummaryWriter를 감싸는 래퍼입니다.
데이터는 로컬에 기록된 후 Hub로 비동기적으로 전송됩니다. 학습 스크립트의 블로킹을 방지하기 위해 Hub로의 데이터 전송은 별도의 스레드에서 수행됩니다. 특히 업로드가 어떤 이유로든 실패하더라도(예: 연결 문제) 메인 스크립트는 중단되지 않습니다. 데이터는 commit_every분마다(기본값은 5분마다) Hub로 자동으로 전송됩니다.
HFSummaryWriter는 실험적 기능입니다. 사전 통보 없이 향후 API가 변경될 수 있습니다.
예:
# 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)