프로젝트 마무리까지 d-2. 아직 갈길이 멀다..
개발과 최적화 과정에서 실험에 사용된 요소들을 체계적으로 추적하고 관리하는 것
실험 재현성(Reproducibility)이 중요하기 때문에 여러 요소들을 체계적으로 관리해야 한다.
그리고 실험관리가 잘 된다면 모델 성능 향상과 최적화에 더 용이하다.
실험 설정(하이퍼파라미터, 모델 아키텍처), 실험 결과(성능지표, 손실 그래프 등), 실험 메타데이터(코드, 라이브러리 버전, 하드웨어 사양), 모델 및 데이터 버전 등이 주요 관리 대상이다.
실험관리 툴은 실험추적 및 관리, 시각화, 하이퍼파라미터 튜닝, 버전관리, 모델 관리 등의 기능을 포함한다.
Weights & Biases(WandB)
비즈니스는 비싸지만 개인이 쓰기엔 좋다.
실험 추적과 시각화, 대시보드, 하이퍼파라미터 최적화(Sweep), 모델 버전관리, 협업, 하드웨어 상태 모니터링 등의 기능을 제공한다. 아래와 같이 단순한 코드 몇줄로 클라우드 기반의 웹에서 실험 정보를 볼 수 있다.
import wandb
# 프로젝트 초기화
wandb.init(project="my_project")
# 모델 학습 중 성능 지표 기록
for epoch in range(epochs):
loss = compute_loss(model, data)
acc = compute_accuracy(model, data)
# 성능 기록(시간에 따라 메트릭 기록)
wandb.log({"loss": loss, "accuracy": acc})
# 최종 메트릭 기록
wandb.summary["accuracy"] = acc
# 학습 종료 후 모델 저장
torch.save(model.state_dict(), "model.pth")
wandb.save("model.pth")
# 실험 종료
wandb.finish()