728x90
딥러닝 실험은 “계속 바뀝니다”.
하이퍼파라미터, 데이터셋, 옵티마이저, 구조 모두가 달라지고,
그 결과로 생성되는 모델도 서로 다른 의미와 성능을 지닙니다.
이 모든 실험 결과를 체계적으로 추적하고,
언제든 원하는 지점으로 돌아갈 수 있게 해주는 것이 바로 **Model Versioning(모델 버전 관리)**입니다.
✅ 왜 Model Versioning이 중요한가?
| 필요성 | 설명 |
| 재현 가능성 | 실험 A에서 좋은 결과가 나왔지만, 코드가 변경됨 → 원래 모델 못 찾는 경우 방지 |
| 서빙 관리 | 운영 중인 모델이 어떤 버전인지 명확히 구분 필요 |
| 비교 분석 | 여러 실험 결과 간 성능/리소스 비교 |
| 롤백 | 최신 모델이 성능 저하 시 즉시 이전 버전으로 복구 |
| 협업 | 팀원 간 실험 결과 공유 및 리뷰 가능 |
✅ Version 관리 대상
| 대상 | 설명 |
| Model Weight | .pt, .ckpt, .onnx 등 모델 파라미터 파일 |
| Code Snapshot | 실험 당시의 학습 코드 (Git hash 등) |
| Hyperparameters | learning rate, batch size, dropout 등 |
| Dataset 버전 | 사용한 데이터셋의 버전 또는 샤드 ID |
| Training Logs | 성능 지표(LogLoss, Accuracy 등) |
| Environment | PyTorch, CUDA, TorchScript 버전 등 |
✅ Versioning 방식
| 방식 | 설명 | 예시 |
| 파일 이름 기반 | model_v1.0.pt, model_20230812.pt | 가장 단순한 형태 |
| 디렉토리 구조화 | outputs/v1.0/weights.pt, v1.0/config.json | 실험 단위로 구성 |
| Git + DVC/MLflow | Git으로 코드 관리 + DVC로 모델 파일 연결 | 버전 간 추적 명확 |
| Model Registry 사용 | MLflow, Weights & Biases 등에서 제공 | Production 모델까지 관리 가능 |
✅ 실무 도구 예시
| 도구 | 설명 |
| MLflow | 모델 추적, 버전 관리, 서빙 연동 |
| Weights & Biases | 실험 기록, 시각화, 비교 분석 |
| DVC (Data Version Control) | 모델, 데이터 파일 Git처럼 버전 관리 |
| huggingface hub | 공개/비공개 모델 저장소, REST API로 버전 관리 |
| TensorBoard | 각 버전별 지표 시각화 |
| Custom Registry | 조직 내부 전용 버전 관리 플랫폼 구축 |
✅ 서빙과 연계된 버전 관리
- 모델 서빙 API에 /predict?version=v2.1 형식으로 버전 명시
- Canary 배포: 버전 2를 일부 사용자에게만 적용하여 테스트
- Shadow Test: 새 버전 모델에 요청을 복제하여 예측 비교
- 롤백 시 latest → v1.9로 레지스트리 태그 변경만으로 반영
✅ 마무리
Model Versioning은 단순히 모델 파일을 보관하는 것이 아닙니다.
모델의 진화 히스토리를 추적하고, 안정적으로 운영까지 연결하는 핵심 전략입니다.
코드는 Git으로 관리하듯,
이제는 모델도 Git처럼 관리하는 시대입니다.
728x90