주제: 6.5-2 Experiment Tracking (실험 재현성과 비교)
분류: rag_agent
타입: concept
난이도: 중급
선수지식: 있음 — 모델 학습, evaluation metric, ML pipeline
모델 개발은 대부분 작은 변화의 반복이다. learning rate를 바꾸고, 데이터 버전을 바꾸고, 프롬프트나 아키텍처를 조금씩 바꾸면서 성능을 비교한다. 이때 기록이 없으면 무엇이 좋아졌는지 금방 잊어버리고, 재현도 불가능해진다.
문제 설정
ML 모델 개발에서는 수많은 실험이 반복됩니다.
model v1
model v2
model v3
...
문제는 다음과 같습니다.
- 어떤 설정이 성능을 개선했는지 기억하기 어려움
- 실험 재현(reproducibility)이 어려움
- 모델 비교 기준이 불명확
이를 해결하는 시스템이 Experiment Tracking입니다.
즉 experiment tracking은 편의 기능이 아니라 연구와 운영의 기억 장치다. MLflow, W&B, TensorBoard 같은 도구는 모두 "실험을 비교 가능하게 만들고, 재현 가능하게 남긴다"는 공통 목적을 가진다.
1. Experiment 정의
하나의 실험은 다음 요소로 구성됩니다.
Experiment
├ parameters
├ dataset
├ model
└ metrics
모델 학습은 다음 과정을 포함합니다.
기호 의미
- w : 모델 파라미터
- η : learning rate
- L : loss function
왜 중요한가
하이퍼파라미터와 데이터가 달라지면 결과도 달라집니다.
주의점
실험 조건이 기록되지 않으면 재현이 불가능합니다.
2. Experiment 구성 요소
| 요소 | 설명 |
|---|---|
| Parameters | learning rate, batch size |
| Code Version | git commit |
| Dataset | training data version |
| Metrics | accuracy, loss |
| Artifacts | model checkpoint |
실험 결과는 보통 metric으로 비교합니다.
기호 의미
- score(x) : 샘플 평가 점수
왜 필요한가
모델 성능을 객관적으로 비교할 수 있습니다.
3. 실험 비교
실험은 baseline 대비 비교됩니다.
기호 의미
- Metric(model) : 실험 모델 성능
- Metric(baseline) : 기준 모델 성능
왜 중요한가
어떤 변경이 실제 성능 개선인지 판단할 수 있습니다.
4. 실험 재현성
재현성은 동일한 조건에서 동일 결과를 얻는 것입니다.
재현성 조건:
- dataset version 동일
- random seed 동일
- model code 동일
예:
왜 필요한가
연구 결과의 신뢰성을 보장합니다.
5. 실험 로그 구조
Experiment Run
├ parameters
├ metrics
├ artifacts
└ logs
각 run은 하나의 모델 학습 결과입니다.
6. MLflow
MLflow는 가장 널리 사용되는 experiment tracking 도구입니다.
구성:
- Tracking server
- Artifact store
- Model registry
실험 기록:
mlflow.log_param("lr",0.001)
mlflow.log_metric("accuracy",0.91)
왜 중요한가
모든 실험을 중앙에서 관리할 수 있습니다.
7. Weights & Biases (W&B)
W&B는 실험 시각화와 협업에 강점이 있습니다.
- 실험 비교 UI
- training curve visualization
- team collaboration
예:
wandb.log({"loss":loss})
8. TensorBoard
TensorBoard는 training 과정 시각화 도구입니다.
대표 기능:
- loss curve
- gradient visualization
- embedding projector
writer.add_scalar("loss",loss)
9. Experiment Tracking Workflow
Run experiment
↓
Log parameters
↓
Log metrics
↓
Save artifacts
↓
Compare experiments
코드-수식 연결
| 개념 | 코드 | 설명 |
|---|---|---|
| parameter 기록 | mlflow.log_param() |
hyperparameter 저장 |
| metric 기록 | mlflow.log_metric() |
성능 기록 |
| artifact 저장 | mlflow.log_artifact() |
모델 파일 저장 |
자주 하는 오해 5개
- 실험 결과는 메모로 기록하면 충분하다고 생각한다
- dataset version은 중요하지 않다고 생각한다
- metric 하나만 비교하면 된다고 생각한다
- 실험 재현성은 연구에서만 필요하다고 생각한다
- experiment tracking은 선택 사항이라고 생각한다
체크리스트 (스스로 설명 가능해야 하는 질문)
- Experiment tracking이 필요한 이유는 무엇인가?
- 실험을 재현하기 위해 어떤 정보가 필요할까?
- baseline 대비 실험 결과는 어떻게 비교하는가?
- MLflow와 W&B의 역할은 무엇인가?
- artifact는 어떤 데이터를 의미하는가?