Skip to main content
이 문서는 머신러닝 섹션의 일부입니다.

모델 레지스트리란?

Model Registry(모델 레지스트리) 는 학습된 ML 모델의 버전을 관리 하고, 프로덕션 승격(Promotion)을 제어하는 중앙 저장소입니다. Databricks에서는 Unity Catalog 와 통합되어, 모델에도 테이블과 동일한 거버넌스(권한, 리니지, 감사)가 적용됩니다.

1. 왜 모델 레지스트리가 필요한가

모델 관리 없이 운영할 때의 문제

실제 ML 운영 현장에서 레지스트리 없이 모델을 관리하면 다음과 같은 문제가 반복적으로 발생합니다. 버전 혼란 (Version Chaos)
  • 파일 시스템에 model_v2_final_FINAL.pkl 같은 파일이 쌓입니다.
  • 어떤 파일이 실제 프로덕션에 배포된 것인지 확인할 방법이 없습니다.
  • 팀원이 실수로 구버전 모델을 배포하는 사고가 발생합니다.
재현 불가 (Non-reproducibility)
  • 6개월 후 “이 모델을 어떻게 학습했지?”라는 질문에 답하기 어렵습니다.
  • 어떤 데이터셋, 어떤 하이퍼파라미터로 학습했는지 추적이 끊깁니다.
  • 동일한 코드로 재학습해도 결과가 달라지는 환경 의존성 문제가 생깁니다.
감사 불가 (No Auditability)
  • 금융·의료 등 규제 산업에서는 “누가 이 모델을 승인했는가”를 입증해야 합니다.
  • 모델 변경 이력이 없으면 컴플라이언스(Compliance) 감사를 통과할 수 없습니다.
  • 인시던트(Incident) 발생 시 원인 추적이 불가능합니다.
문제Registry의 해결
어떤 버전이 프로덕션인지 모름Alias (champion, challenger)로 명확히 표시
이전 버전으로 롤백이 어려움모든 버전이 보존 됨. Alias만 변경하면 롤백 완료
모델의 출처를 모름Lineage(리니지) 추적 — 어떤 데이터, 어떤 실험에서 생성되었는지
권한 관리가 어려움Unity Catalog의 GRANT/REVOKE 로 접근 제어
모델 변경 이력 추적모든 변경이 Audit Log(감사 로그) 에 기록

2. Unity Catalog 기반 모델 레지스트리

Workspace 레지스트리에서 UC 레지스트리로의 전환

Databricks는 원래 Workspace Model Registry 를 제공했습니다. 이는 Workspace 범위 내에서만 동작하는 격리된 레지스트리였습니다. 2023년부터 Unity Catalog(UC) 기반 Model Registry 가 권장 방식이 되었으며, 이유는 다음과 같습니다.
비교 항목Workspace 레지스트리UC 레지스트리
범위단일 WorkspaceAccount 전체 (멀티 Workspace)
네임스페이스model_namecatalog.schema.model_name
권한 관리Workspace 수준 ACLUC GRANT/REVOKE (세밀한 제어)
리니지 추적제한적UC Lineage와 완전 통합
Delta Sharing미지원외부 조직과 모델 공유 가능
감사 로그Workspace 감사Account-level 통합 감사

3-Level Namespace (3단계 네임스페이스)

UC의 모든 오브젝트는 catalog.schema.object 형태의 3단계 네임스페이스를 사용합니다. 모델도 동일합니다.
ml_catalog                    ← Catalog (데이터 도메인 단위)
  └── fraud_detection         ← Schema (프로젝트/팀 단위)
        ├── tables/           ← 테이블
        ├── volumes/          ← 파일
        └── models/           ← ML 모델
              └── fraud_model ← 등록된 모델
모델의 전체 이름은 ml_catalog.fraud_detection.fraud_model 이 됩니다. 이 이름 하나로 버전 관리, 권한 부여, 리니지 추적이 모두 연결됩니다.

3. 모델 등록 방법

방법 1: 학습 중 직접 등록 (MLflow API)

import mlflow
from mlflow import MlflowClient

# Unity Catalog를 레지스트리로 지정
mlflow.set_registry_uri("databricks-uc")

# 실험(Experiment) 설정
mlflow.set_experiment("/Users/user@company.com/fraud-detection")

with mlflow.start_run(run_name="xgboost-v3") as run:
    # 모델 학습
    model.fit(X_train, y_train)

    # 메트릭 로깅
    mlflow.log_metric("accuracy", accuracy)
    mlflow.log_metric("f1_score", f1)

    # 모델 로깅 + 레지스트리 등록을 한 번에
    mlflow.sklearn.log_model(
        sk_model=model,
        artifact_path="model",
        registered_model_name="ml_catalog.fraud_detection.fraud_model"  # UC 3-level 이름
    )

방법 2: 기존 Run에서 사후 등록

# 이미 완료된 Run의 모델을 나중에 레지스트리에 등록
run_id = "a1b2c3d4e5f6..."
model_uri = f"runs:/{run_id}/model"

model_version = mlflow.register_model(
    model_uri=model_uri,
    name="ml_catalog.fraud_detection.fraud_model"
)
print(f"등록된 버전: {model_version.version}")

방법 3: UI에서 등록

  1. Databricks 좌측 메뉴 → Experiments 진입
  2. 실험 Run 클릭 → Artifacts 탭 선택
  3. model 폴더 클릭 → Register Model 버튼 클릭
  4. 모델 이름을 catalog.schema.model_name 형식으로 입력
  5. Register 클릭 → 새 버전 자동 생성

방법 4: 자동 등록 (autolog)

# MLflow autolog 사용 시 모델도 자동 로깅
mlflow.sklearn.autolog(
    registered_model_name="ml_catalog.fraud_detection.fraud_model"
)

with mlflow.start_run():
    model.fit(X_train, y_train)
    # 학습이 끝나면 자동으로 모델 등록