실험 추적과 모델 패키징¶
실험 추적의 목적은 run을 많이 쌓는 것이 아니라 배포된 model이 어떤 데이터, 코드, 설정과 평가를 거쳐 만들어졌는지 역으로 찾는 것입니다.
Run에 남길 값¶
| 구분 | 값 |
|---|---|
| source | Git commit, entrypoint, container/dependency version |
| data | dataset URI, checksum, split manifest, schema version |
| params | preprocessing, feature, model, seed 설정 |
| metrics | validation·test metric, subgroup, calibration, runtime |
| artifacts | fitted pipeline, prediction, plot, evaluation report |
| decision | candidate, rejected, approved와 판단 근거 |
MLflow Tracking은 parameter, code version, metric과 artifact를 run 단위로 기록합니다. 개인 프로젝트는 local backend로 시작하고, 여러 환경이나 사용자가 같은 run을 조회해야 할 때 database와 object storage를 분리합니다.
Model bundle¶
model/
├── model artifact
├── input schema and example
├── preprocessing
├── class mapping
├── dependency versions
├── training metadata
└── metrics and limitations
scikit-learn은 pickle 계열 artifact를 다른 dependency version에서 불러오는 것을 지원하지 않습니다. 학습 데이터 snapshot 참조, source code, dependency version과 cross-validation 결과를 함께 보관하고 동일 환경을 container로 고정합니다.
승격 절차¶
- validation 기준을 통과한 run을 candidate로 지정합니다.
- 고정 test와 smoke prediction 결과를 연결합니다.
- input signature와 dependency를 포함한 bundle을 만듭니다.
- clean environment에서 load와 대표 prediction을 검사합니다.
- 사람이 제한 조건을 확인하고 version 또는 alias를 부여합니다.
registry는 성능이 가장 높은 model을 자동으로 production에 보내는 장치가 아닙니다. 재현성, schema 호환, latency와 알려진 실패 조건까지 통과한 artifact만 승격합니다.