콘텐츠로 이동

실험 추적과 모델 패키징

실험 추적의 목적은 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로 고정합니다.

승격 절차

  1. validation 기준을 통과한 run을 candidate로 지정합니다.
  2. 고정 test와 smoke prediction 결과를 연결합니다.
  3. input signature와 dependency를 포함한 bundle을 만듭니다.
  4. clean environment에서 load와 대표 prediction을 검사합니다.
  5. 사람이 제한 조건을 확인하고 version 또는 alias를 부여합니다.

registry는 성능이 가장 높은 model을 자동으로 production에 보내는 장치가 아닙니다. 재현성, schema 호환, latency와 알려진 실패 조건까지 통과한 artifact만 승격합니다.

참고