본문으로 건너뛰기
AWS ML Blog조회 1

MLflow 모델 등록과 SageMaker 거버넌스 자동화

MLflow의 모델과 지표·계보를 SageMaker AI Model Registry로 자동 동기화해 승인과 배포 통제를 연결합니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

Managed MLflow와 Amazon SageMaker AI Model Registry의 동기화 기능이 모델 등록 시 Model Package Group과 버전을 자동 생성하고 학습 지표, 평가 결과, 추론 사양, 계보까지 함께 전달합니다. 데이터 과학자는 MLflow에서 모델을 기록하고 등록한 뒤 alias로 staging을 요청하며, governance officer는 SageMaker Studio에서 지표와 계보를 확인하고 production 승인을 수행합니다. IAM 조건 키는 역할별 수명 주기 전환을 제한하고, 승인 이후 리소스 태그는 모델 그룹을 동결해 후속 변경을 막습니다. 이 글은 단일 AWS 계정 구성을 다루며, 다음 편에서는 AWS RAM을 활용한 계정 간 거버넌스로 확장합니다.

섹션별 상세

01
기존 MLflow와 Model Registry 연결은 모델 자체만 전달하고 학습 지표, 평가 결과, 계보를 함께 넘기지 않아 governance officer가 검토를 위해 MLflow로 돌아가거나 정보를 수집해야 했습니다. 강화된 동기화는 MLflow에서 등록한 각 모델에 대응하는 Model Package Group과 Package version을 자동 생성하고 네 가지 메타데이터를 함께 운반합니다. 그 결과 실험 기록은 MLflow에 남기면서 운영 후보 모델의 검토와 감사 기준은 SageMaker AI Model Registry에 모을 수 있습니다.
02
Model Registry sync는 기본적으로 비활성화되어 있으며 MLflow 앱을 만들거나 업데이트할 때 AutoModelRegistrationEnabled로 켤 수 있습니다. 앱의 IAM service role에는 Model Package Group과 버전 생성, 태그 추가, 계보 기록 권한이 필요하고, 이후 mlflow.register_model 호출이 Registry 객체 생성을 촉발합니다. 등록 자동화가 모델 계보를 수작업으로 유지하는 부담을 줄이면서도 governance officer가 일관된 모델 수명 주기 기록을 확보하게 합니다.
bash
# Activate Model Registry sync when creating an MLflow app
aws sagemaker create-mlflow-app \
 --name my-mlflow-app \
 --artifact-store-uri s3:///mlflow \
 --role-arn arn:aws:iam:::role/my-mlflow-app-role \
 --model-registration-mode AutoModelRegistrationEnabled \
 --region

새 Managed MLflow 앱을 만들면서 Model Registry sync를 활성화하고 서비스 역할과 등록 모드를 지정합니다.

bash
# Updating an existing MLflow app with Model Registry sync
aws sagemaker update-mlflow-app \
 --arn \
 --model-registration-mode AutoModelRegistrationEnabled \
 --region

이미 만든 MLflow 앱의 모델 등록 모드를 자동 동기화로 변경합니다.

python
import mlflow, sagemaker_mlflow
# Log the trained model during the run.
model_info = mlflow.sklearn.log_model(model, name="sklearn-model")
# Optionally log evaluation metrics
sagemaker_mlflow.evaluate(model_info, data=dataset, model_type="regressor")
# Optionally log an inference specification:
# enables direct deployment from the registry
sagemaker_mlflow.log_inference_specification(
 model_info.model_id,
 inference_specification=inference_spec
)
# Register the logged model:
# creates the Model Package Group and version automatically
mv = mlflow.register_model(f"models:/{model_info.model_id}", "my-model")

학습 모델을 MLflow에 기록하고 평가 지표와 추론 사양을 선택적으로 첨부한 뒤 모델을 등록합니다.

03
모델 등록 전에 sagemaker-mlflow plugin으로 평가 지표와 추론 사양을 선택적으로 기록할 수 있습니다. 동기화된 모델 버전에는 실행 파라미터, 학습 지표, 데이터셋 위치, 모델 아티팩트 경로가 들어가고 평가 지표는 Studio의 Evaluate 탭에 표시되는 model card로 전달됩니다. 추론 사양은 컨테이너 이미지, S3 모델 위치, 지원 인스턴스 유형과 SAGEMAKER_PROGRAM 환경 변수를 정의하며, 실제 직접 배포를 위해서는 inference.py 같은 추론 핸들러도 모델 아티팩트에 포함해야 합니다.
python
client = mlflow.MlflowClient()
# Move a candidate to staging
client.set_registered_model_alias(
 "my-model", "sagemakerlifecycle-staging-pending", version)

등록된 모델 버전에 MLflow alias를 부여해 SageMaker AI Model Registry의 staging 대기 상태로 이동시킵니다.

json
{
 "Version": "2012-10-17",
 "Statement": [{
 "Sid": "DenyProductionPromotion",
 "Effect": "Deny",
 "Action": "sagemaker:UpdateModelPackage",
 "Resource": "*",
 "Condition": {
 "StringEquals": {"sagemaker:ModelLifeCycle/stage": "production"}
 }
 }]
}

데이터 과학자 역할이 모델을 production 단계로 직접 승격하지 못하도록 IAM 조건 키를 사용해 거부 정책을 설정합니다.

MLflow Artifacts 화면에서 모델 디렉터리와 inference.py, input_example.json, sagemaker_inference_specification.json, serving_input_example.json을 보여주는 스크린샷입니다.
Screenshot스크린샷은 등록 모델의 아티팩트에 추론 핸들러와 추론 사양 파일이 함께 저장된 모습을 보여줍니다. 오른쪽 JSON에는 컨테이너 이미지 URI, ModelDataUrl, SAGEMAKER_PROGRAM을 통한 inference.py 지정, 지원 실시간 추론 인스턴스 유형이 표시되어 Registry에서 직접 배포하기 위한 입력 구성을 확인할 수 있습니다.
모델의 train_rmse, test_rmse, score, mean_absolute_error, root_mean_squared_error, r2_score 등 학습 지표를 표시한 화면입니다.
Chart화면은 SageMaker Studio의 Metrics 영역에서 학습 과정의 성능 지표를 표 형태로 확인하는 장면입니다. score와 r2_score가 0.9867045052258642로 표시되고 example_count는 100이며, RMSE와 오차 지표도 함께 노출되어 governance officer가 학습 결과를 Registry에서 검토할 수 있음을 보여줍니다.
Model Package version의 Lineage 탭에서 Image, MLflow Experiment, Approval이 Version 1과 Model Group으로 연결된 그래프입니다.
Diagram계보 그래프는 컨테이너 이미지, MLflow Experiment, Approval이 특정 모델 버전으로 모이고 다시 Model Group과 연결되는 관계를 표현합니다. 이 연결은 모델의 생성 출처와 승인 맥락을 한 화면에서 추적하게 해 Registry 기반 검토와 감사에 필요한 lineage 정보를 시각화합니다.
04
MLflow alias인 sagemakerlifecycle-{stage}-{status}는 staging 또는 production 단계와 pending 또는 active 상태를 SageMaker AI Model Registry의 수명 주기 값에 연결합니다. IAM condition key인 sagemaker:ModelLifeCycle/stage와 sagemaker:ModelLifeCycle/stageStatus로 역할별 전환 대상을 제한하고, 승인 후에는 aws:ResourceTag/frozen = true 조건을 이용해 Model Package Group의 추가 업데이트를 거부할 수 있습니다. 수명 주기 변경은 Amazon EventBridge 이벤트와 감사 기록을 남기므로 외부 거버넌스 도구의 승인 흐름에도 연결됩니다.
SageMaker Studio Model Package version의 Evaluate 탭에서 평가 지표와 Train, Evaluate, Optimize, Audit, Deploy 상태를 보여주는 화면입니다.
Screenshot화면은 Model Package version이 학습과 평가를 완료한 뒤 평가 지표를 검토하는 위치를 나타냅니다. score, example_count, mean_absolute_error, mean_squared_error, root_mean_squared_error, r2_score 등이 Evaluate 영역에 함께 표시되어 학습 지표와 별도로 평가 결과를 확인하는 구조를 보여줍니다.
05
단일 계정 구성에서는 data scientist가 Jupyter notebook과 MLflow에서 학습·등록·staging 이동을 수행하고 governance officer가 SageMaker Studio Models view에서 지표와 계보를 검토합니다. 데이터 과학자 역할에는 production 승격 거부 정책을 적용하고 governance officer 역할에는 해당 거부를 적용하지 않아 승인 권한을 분리하며, 승인된 모델은 ML engineer가 일반적으로 CI/CD pipeline을 통해 SageMaker AI endpoint에 배포합니다. 이 구성은 소규모 팀이나 초기 프로젝트에 맞고, 더 큰 조직은 다음 편에서 AWS RAM을 이용한 hub-and-spoke 및 규제 환경용 hybrid topology로 확장합니다.
단일 AWS account 안에서 data scientist, governance officer, ML engineer가 MLflow와 SageMaker AI Model Registry 및 Hosting을 연결하는 흐름도입니다.
Diagram다이어그램은 data scientist가 MLflow에서 모델과 평가 정보를 등록하면 Model Registry sync가 SageMaker AI Model Registry로 Model Package Group과 버전을 만드는 과정을 나타냅니다. IAM condition key가 data scientist의 production 승격을 거부하고 governance officer만 production/active 승격과 freeze를 수행하며, 이후 ML engineer가 승인 모델을 SageMaker Hosting에 배포하는 역할 분리를 시각화합니다.
Governance officer의 조치 전 Model Package Group 화면으로 Version 1에 production 단계와 승인 상태가 아직 표시되지 않습니다.
Screenshot화면의 버전 표에는 Deployment status, Stage, Stage status, Description, Modified by와 같은 열이 있지만 모델 버전은 아직 production이나 Approved 상태에 도달하지 않았습니다. 이는 data scientist가 staging에 둔 후보 모델을 governance officer가 검토하고 승격하기 전의 상태를 나타냅니다.
Governance officer의 조치 후 Version 1에 Approved 배포 상태, production 단계, active 단계 상태가 표시된 화면입니다.
Screenshot화면은 승인 이후 모델 버전이 Deployment status에서 Approved, Stage에서 production, Stage status에서 active로 바뀐 결과를 보여줍니다. 이 상태 전환은 MLflow alias와 IAM으로 통제된 승격 흐름이 SageMaker AI Model Registry에 반영되고, 이후 배포 가능한 모델로 구분된다는 글의 절차와 연결됩니다.

용어 해설

모델 레지스트리(Model Registry)
Model Registry는 학습과 평가를 마친 모델 버전의 메타데이터, 배포 정보, 승인 상태를 한곳에서 관리하는 저장소입니다. 모델 패키지와 버전을 등록하고 수명 주기 단계를 통제해 어떤 모델이 운영 환경으로 이동할 수 있는지 추적합니다. 이 글에서는 Amazon SageMaker AI Model Registry가 MLflow에서 전달된 모델을 검토·승인·감사하는 기준 저장소 역할을 맡습니다.
모델 계보(Model Lineage)
Model Lineage는 모델이 어떤 MLflow 실험과 학습 실행에서 만들어졌고 어떤 데이터셋, 컨테이너 이미지, 모델 그룹과 연결되는지 기록하는 관계 정보입니다. 등록된 모델의 출처와 변경 경로를 이어 주므로 거버넌스 담당자가 모델을 검토하고 감사할 때 수작업으로 맥락을 모을 필요가 줄어듭니다. 글에서는 MLflow 실험·모델 버전·컨테이너 이미지·Model Package Group 사이의 연결이 SageMaker AI Model Registry로 전달됩니다.
IAM 조건 키(IAM condition key)
IAM condition key는 정책이 적용되는 요청의 속성을 검사해 특정 작업을 허용하거나 거부하는 접근 제어 조건입니다. 이 글에서는 sagemaker:ModelLifeCycle/stage와 sagemaker:ModelLifeCycle/stageStatus를 사용해 역할별 모델 수명 주기 전환을 제한합니다. 데이터 과학자는 staging까지만 이동할 수 있고 governance officer만 production 승인을 수행하도록 권한 경계를 만듭니다.
모델 패키지 그룹(Model Package Group)
Model Package Group은 동일한 모델 계열의 여러 Model Package version을 묶어 관리하는 SageMaker AI Model Registry 구조입니다. MLflow에서 모델을 등록하면 동기화 기능이 해당 그룹과 버전을 자동으로 생성하고, 각 버전에 학습 지표·평가 결과·추론 사양·계보를 연결합니다. 승인 후 그룹에 리소스 태그를 적용하면 추가 변경을 차단하는 동결 정책도 결합할 수 있습니다.

기술

  • MLflow
  • Managed MLflow
  • Amazon SageMaker AI Model Registry
  • SageMaker Studio
  • sagemaker-mlflow
  • AWS Identity and Access Management
  • Amazon S3
  • Amazon EventBridge
  • AWS Resource Access Manager
  • Jupyter notebook
  • CI/CD

활용 사례

  • MLflow에서 실험한 모델의 자동 등록
  • 학습·평가 지표와 계보를 포함한 모델 검토
  • IAM 역할별 staging·production 승격 통제
  • 승인 모델의 변경 동결과 감사 추적
  • SageMaker AI endpoint로의 승인 모델 배포
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 09. 09.수집 2026. 09. 09.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.