trackio
는 wandb 의 대안으로, 기존에 알고 있는 문법으로 바로 시작할 수 있습니다.
자신의 머신러닝 모델을 훈련해 본 적이 있다면, 훈련 중 지표 (metrics), 매개변수 (parameters), 하이퍼파라미터를 추적하고 이후 시각화하여 훈련 실행을 더 잘 이해하는 것이 얼마나 중요한지 아실 것입니다.
대부분의 머신러닝 연구자들은 이를 위해 특정 실험 추적 라이브러리를 사용합니다. 그러나 이러한 라이브러리들은 유료일 수 있으며, 복잡한 설정이 필요하거나 빠른 실험과 공유에 필요한 유연성을 부족할 수 있습니다.
Hugging Face 에서 과학팀 (science team) 은 연구 프로젝트에서 Trackio 를 사용하고 있으며, 다른 추적 솔루션에 비해 여러 가지 핵심 장점을 발견했습니다:
쉬운 공유 및 임베딩: Trackio 는 동료와 훈련 진행 상황을 공유하거나 iframes 를 사용하여 블로그 포스트 및 문서에 플롯을 직접 내장하는 것을 매우 간단하게 만듭니다. 이는 특정 훈련 곡선이나 지표를 보여주고 다른 사람들이 계정을 설정하거나 복잡한 대시보드를 탐색할 필요가 없을 때 특히 유용합니다.
표준화 및 투명성: GPU 에너지 사용량과 같은 지표는 커뮤니티와 공유하여 모델 훈련의 에너지 요구사항 및 환경적 영향을 더 잘 이해할 수 있도록 추적하고 공유하는 것이 중요합니다. trackio 는 nvidia-smi 명령에서 직접 정보를 가져오며, 이를 통해 에너지 사용을 정량화하고 비교하며 모델 카드에 추가하기 쉽습니다.
데이터 접근성: 일부 추적 도구는 데이터가 독점 API 를 뒤로 잠근 채로 하지만, Trackio 는 기록된 데이터를 추출하고 분석하는 것을 간단하게 만듭니다. 이는 연구자가 커스텀 분석을 수행하거나 훈련 지표를 연구 워크플로우에 통합해야 할 때 매우 중요합니다.
실험을 위한 유연성: Trackio 의 경량 설계는 훈련 실행 중 새로운 추적 기능을 쉽게 실험할 수 있게 합니다. 예를 들어, 텐서를 로깅하는 동안 GPU 에서 CPU 로 이동할 시기를 결정할 수 있으며, 이는 모델/중간 상태를 추적해야 할 때 성능에 영향을 주지 않으면서 훈련 투과 (throughput) 를 크게 개선합니다.
그렇다면 Trackio 는 무엇이며 어떻게 사용하는 것인가요? Trackio 는 로컬 Gradio 대시보드를 사용하여 어떤 지표도 추적하고 시각화할 수 있는 오픈소스 Python 라이브러리입니다. 또한 이 대시보드를 Hugging Face Spaces 에 동기화할 수 있으며, URL 을 공유함으로써 다른 사용자와 대시보드를 쉽게 공유할 수 있습니다. Spaces 가 개인적이거나 공개적일 수 있으므로, 이는 대시보드를 공개적으로 또는 Hugging Face 조직의 회원들 사이에서만 공유할 수 있음을 의미합니다.
pip 를 사용하여 trackio 를 설치할 수 있습니다:
또는 uv 를 선호하는 경우:
trackio 는 실험 추적 라이브러리 (예: wandb) 의 대안으로 설계되었습니다. API 는 wandb.init, wandb.log, 및 wandb.finish 와 호환되므로 코드에서 trackio 를 wandb 로 직접 가져올 수 있습니다.
- import wandb
+ import trackio as wandb
예를 들어:
import trackio
import random
import time
...
실험을 로깅한 후 결과를 시각화하기 위해 대시보드를 실행할 수 있습니다. 터미널에서 다음 명령을 실행하세요:
또는 Python 에서 실행할 수 있습니다:
import trackio
trackio.show()
프로젝트 이름을 지정할 수도 있습니다:
trackio show --project "my project"
또는 Python 에서:
trackio.show(project="my project")
Hugging Face Spaces 로 로컬 대시보드를 동기화하려면 space_id 를 init 에 전달하면 됩니다:
trackio.init(project="fake-training", space_id="org_name/space_name")
Spaces 에서 대시보드를 호스팅하는 경우, URL 을 공유하거나 iframe 으로 어디든 삽입할 수 있습니다:
<iframe src="https://org_name-space_name.hf.space/?project=fake-training&metrics=train_loss,train_accuracy&sidebar=hidden" width=600 height=600 frameBorder="0"></iframe>
Spaces 는 공개적이거나 비공개일 수 있으므로, 대시보드를 공개적으로 공유하거나 Hugging Face 조직의 구성원만 볼 수 있도록 제한할 수 있습니다. 모든 것이 무료입니다!
Trackio 대시보드를 Hugging Face Spaces 로 동기화하면 데이터는 Spaces 의 일시적인 Sqlite 데이터베이스에 기록됩니다. 이 데이터베이스는 Space 가 재시작되면 초기화되므로, Trackio 는 Sqlite 데이터베이스를 Parquet 데이터셋으로 변환하고 5 분마다 Hugging Face Dataset 에 백업합니다. 이를 통해 언제든지 Hugging Face 데이터셋에서 기록된 지표를 쉽게 시각화할 수 있습니다:
팁: dataset_id 를 trackio.init() 에 전달하여 이 데이터셋의 이름을 설정할 수 있습니다.
Trackio 는 transformers 와 accelerate 같은 Hugging Face 라이브러리와 원생적으로 통합되므로, 최소한의 설정으로 지표를 기록할 수 있습니다.
transformers.Trainer 와 함께:
import numpy as np
from datasets import Dataset
from transformers import Trainer, AutoModelForCausalLM, TrainingArguments
...
accelerate 와 함께:
from accelerate import Accelerator
accelerator = Accelerator(log_with="trackio")
accelerator.init_trackers("fake-training")
...
추가 설정이 필요 없습니다. 단순히 연결하고 추적 시작하기만 하면 됩니다.
- 인기 있는 실험 추적 라이브러리와 호환되는 API, Trackio 로의 전환 및 이동을 원활하게 만듭니다.
- 로컬 우선: 로그와 대시보드는 기본적으로 로컬에서 실행되고 지속되며, Hugging Face Spaces 에서 호스팅할 옵션이 있습니다.
- 경량화되고 확장 가능: 핵심 코드베이스는 1,000 줄의 Python 코드로 이루어져 있어 이해하고 수정하기 쉽습니다.
- 무료 오픈 소스: 모든 기능, включая 호스팅은 무료입니다.
- 🤗 Datasets 과 Spaces 를 기반으로 하여 견고한 데이터 처리 및 시각화를 제공합니다.
Trackio 는 의도적으로 경량화되어 있으며 현재 베타 버전입니다. 다른 추적 도구에서 찾을 수 있는 일부 기능 (예: 아티팩트 관리 또는 복잡한 시각화) 은 아직 제공되지 않습니다. 이러한 기능을 원하시면, 여기 이슈를 생성해 주세요: https://github.com/gradio-app/trackio/issues
Trackio 의 경량화와 오픈 소스 특성으로 인해, 우리는 모든 사람이 사용할 수 있는 실험 추적 제품을 설계하기 위해 머신러닝 커뮤니티와 함께 작업하고 싶습니다!