Trackio: Hugging Face에서 공개한 AI/ML 실험 추적을 위한 경량 오픈소스 라이브러리

Trackio 소개

머신러닝 프로젝트를 진행하다 보면, 실험의 하이퍼파라미터와 각종 메트릭을 기록하고 시각화하는 일이 필수적이라는 사실을 실감하게 됩니다. 이는 단순한 편의 기능이 아니라, 모델 성능을 향상시키고 반복 가능한 실험 환경을 구축하기 위해 꼭 필요한 작업입니다. 기존에도 Weights & Biases(wandb)와 같은 도구가 널리 사용되어 왔지만, 유료 요금제나 복잡한 설정 문제로 인해 불편함을 느끼는 경우도 많았습니다.

Trackio 사용 예시

이러한 상황에서 Hugging Face는 자체적인 경량 실험 추적 도구인 Trackio(TRACK-yo로 발음)를 새롭게 선보였습니다. 이 도구는 오픈소스이며, 로컬에서 실행되는 대시보드와 Hugging Face Spaces와의 연동을 통해 손쉬운 공유 기능을 제공합니다. 특히 기존의 wandb 사용자에게 익숙한 API를 그대로 유지하면서도, 더 가볍고 유연한 경험을 제공하는 것이 강점입니다.

Trackio는 단순한 로그 수집기를 넘어, 학습 중 발생하는 GPU 에너지 사용량, 텐서 상태 기록 등의 세부 기능까지 지원하며 연구자들이 데이터 접근성과 분석 자유도를 확보할 수 있게 돕습니다. 본 글에서는 Trackio의 주요 기능과 사용법, 그리고 기존 도구와의 비교 등을 상세히 다뤄보겠습니다.

Trackio의 주요 특징

Trackio는 다음과 같은 점에서 기존의 실험 추적 도구들과 차별화를 시도합니다:

  • wandb 대비 API 호환성: 기존 wandb 코드를 거의 수정 없이 import trackio as wandb로 교체 가능하며, 동일한 함수 이름(init, log, finish)을 사용합니다.
  • 로컬 중심 설계: 데이터가 기본적으로 로컬에 저장되며, 필요 시 Hugging Face Spaces에 연동하여 공유 가능.
  • 오픈소스와 무료: 모든 기능이 무료로 제공되며, 코드 기반도 1,000줄 이하로 매우 간결하게 유지됩니다.
  • 데이터 접근의 투명성: 데이터를 Sqlite로 저장하고 Parquet 포맷으로 자동 백업하여 커스터마이징 분석에 유리합니다.
  • 환경정보 추적 기능: nvidia-smi를 통해 GPU 에너지 사용량 등의 정보를 추적할 수 있습니다.

Trackio 설치 방법

Trackio는 pip 혹은 uv를 통해 간편하게 설치할 수 있습니다.

# pip 사용 시
pip install trackio
# uv 사용 시
uv pip install trackio

기본 사용법

기존 wandb와 동일하게 사용할 수 있으며, 다음과 같이 사용합니다:

import trackio

trackio.init(project="my-project", config={"learning_rate": 0.001})

for epoch in range(10):
    loss = compute_loss()
    trackio.log({"epoch": epoch, "loss": loss})

trackio.finish()

특히, Trackio는 wandb.init, wandb.logwandb.finish와 API 호환성을 갖습니다. 따라서 기존 wandb 사용자는 다음과 같이 Trackio를 불러오기만 하면 기존 코드 수정 없이 사용할 수 있습니다:

import trackio as wandb

# 기존 wandb를 사용한 코드

시각화 기능

실험 로그를 기록한 후, 다음 명령어를 통해 로컬 대시보드를 실행할 수 있습니다:

trackio show

또는, Python 코드 내에서 직접 실행도 가능합니다:

import trackio
trackio.show(project="my-project")

Hugging Face Spaces 연동

Trackio는 Hugging Face Spaces와 완전히 통합되어 있어, 대시보드를 간단히 공유할 수 있습니다:

trackio.init(project="my-project", space_id="org_name/space_name")

해당 Spaces URL을 iframe 형태로 임베드하여 문서나 블로그에도 삽입할 수 있습니다:

<iframe src="https://org_name-space_name.hf.space/?project=my-project" width=600 height=600></iframe>

데이터는 기본적으로 Sqlite로 저장되며, 5분마다 Hugging Face Dataset 포맷으로 자동 백업됩니다.

Hugging Face의 Transformers, Accelerate와의 통합

Trackio는 Hugging Face 생태계의 주요 라이브러리인 transformers와 accelerate와도 통합되어 있어, 별다른 설정 없이 로깅 기능을 사용할 수 있습니다:

다음은 transformer.Trainer와 함께 사용하는 예시 코드입니다:

# transformers 예시
from transformers import Trainer, TrainingArguments

trainer = Trainer(
    args=TrainingArguments(run_name="my-project", report_to="trackio"),
    ...
)
trainer.train()

다음은 accelerate와 함께 사용하는 예시입니다:

# accelerate 예시
from accelerate import Accelerator

accelerator = Accelerator(log_with="trackio")
accelerator.init_trackers("my-project")
...
accelerator.log({"training_loss": loss}, step=step)
accelerator.end_training()

Trackio 설계 철학

Trackio는 다음의 원칙을 중심으로 설계되었습니다:

  • API 호환성: 기존 도구에서 손쉽게 마이그레이션 가능
  • 로컬 우선 접근: 클라우드 의존도가 낮음
  • 간결한 코드베이스: 전체 코드가 1,000줄 미만
  • 무료, 오픈소스: 상업적 제약 없이 사용 가능
  • :hugs: Datasets와 Spaces 위에서 구현 : 신뢰성과 확장성 확보

라이선스

Trackio 프로젝트는 MIT 라이선스로 공개 및 배포 되고 있습니다. 상업적 이용에도 제한이 없습니다.

:scroll: Trackio 프로젝트 소개 블로그

:github: Trackio 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: