Amazon MLA-C01: MLOps 및 모델 수명 주기 관리 — 학습 가이드
다음의 일부입니다: AWS Machine Learning Engineer Associate MLA-C01 — 학습 가이드. 검증된 답안으로 연습하기: Amazon 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.
핵심 개념
AWS에서의 모델 수명 주기 관리는 모델을 감사 가능한 리니지, 자동화된 승격 게이트, 재현 가능한 파이프라인을 갖춘 버전 관리형 아티팩트로 취급하는 것을 중심으로 합니다. Amazon SageMaker는 이러한 기본 요소(primitive)를 제공합니다: 오케스트레이션을 위한 SageMaker Pipelines, 버전 관리 및 승인 상태를 위한 SageMaker Model Registry(ModelPackage/ModelPackageGroup), CI/CD를 위한 SageMaker Projects 및 CodePipeline, 지속적인 품질 및 편향 검사를 위한 Model Monitor/Clarify가 있습니다. 견고한 수명 주기는 재현 가능한 입력에서 시작됩니다. 즉, 서버 측 KMS 암호화와 엄격한 버킷 정책 또는 Lake Formation 제어가 적용된 S3의 불변(immutable) 학습 데이터, 소스 리포지토리에서 버전 관리되는 코드, 그리고 CreateTrainingJob이나 sagemaker SDK의 TrainingStep에 전달되는 컨테이너 이미지 URI 및 인스턴스 유형으로 선언된 학습 환경이 포함됩니다.
운영 제어에는 이그레스(egress)를 방지하기 위한 CreateTrainingJob의 VpcConfig(Subnets 및 SecurityGroupIds) 및 EnableNetworkIsolation을 통한 네트워크 격리, 그리고 최소 권한으로 범위가 지정된 IAM 역할(특정 버킷에 대한 s3:GetObject, kms:Decrypt 권한을 가진 SageMakerExecutionRole)이 포함됩니다. 학습 작업이 완료되면, CreateModelPackage 또는 SDK의 register_model 호출을 사용하여 ModelPackageGroupName과 함께 아티팩트를 Model Registry에 등록하고, ModelApprovalStatus를 “PendingManualApproval"로 설정하여 수동 승인 게이트를 구동합니다. 리니지 메타데이터(학습 하이퍼파라미터, Docker 이미지, 입력 데이터 S3 URI, Git 커밋 등)는 모델 패키지 메타데이터로 첨부되어야 합니다. 이를 통해 다운스트림 CI/CD 및 감사에서 프로덕션 엔드포인트부터 코드와 데이터셋까지 역추적할 수 있습니다.
ML을 위한 CI/CD는 아티팩트(모델, 기준선, 모니터)가 크고 비결정적 출력을 갖기 때문에 기존의 CI/CD와 다릅니다. SageMaker Projects 템플릿과 AWS CodePipeline 및 CodeBuild를 사용하여 CI/CD를 구현합니다. CodeBuild를 사용하여 유닛 테스트, 모델 학습 스모크 테스트(예: 짧은 에포크 또는 데이터 서브셋 사용), 통합 테스트를 실행합니다. CodePipeline을 사용하여 소스 → 빌드 → 모델 등록 단계를 오케스트레이션하고, 수동 승인(ManualApproval) 작업이나 Lambda 기반 사용자 지정 작업을 통합하여 UpdateModelPackage를 통해 ModelPackage의 ModelApprovalStatus를 변경합니다. 자동 승격을 위해 CodePipeline은 SageMaker의 CreateEndpointConfig 및 CreateEndpoint API를 호출하거나, SageMaker Projects에서 생성된 CloudFormation 스택을 사용하여 예측 가능한 코드형 인프라(infrastructure-as-code)로 배포할 수 있습니다.
주요 서비스 및 구성
SageMaker Pipelines는 오케스트레이션 계층입니다. Python에서 ProcessingStep, TrainingStep, ModelStep, TransformStep, RegisterModel 스텝 객체를 선언합니다. 스텝에 CacheConfig(enable_caching=True, expire_after=timedelta(days=1))를 사용하여 입력과 파라미터가 변경되지 않았을 때 스텝이 출력을 재사용하도록 합니다. 이를 통해 불필요한 인스턴스 프로비저닝을 피할 수 있습니다. RegisterModel의 경우, sagemaker.workflow.steps.RegisterModel을 사용하여 model_package_group_name을 지정하고 model_approval_status를 “PendingManualApproval"로 설정하여 파이프라인 그래프에 승인 게이트를 통합합니다. pipeline.start() API를 사용하여 실행을 시작하고, pipeline.get_steps() 또는 콘솔을 사용하여 실행 상태와 리니지를 검사합니다.
SageMaker Model Registry는 ModelPackageGroupName 아래에 모델 패키지를 저장하고 ModelPackageVersion 식별자를 할당합니다. 관련 API로는 ModelApprovalStatus를 “Approved” 또는 “Rejected"로 변경하기 위한 CreateModelPackageGroup, CreateModelPackage, DescribeModelPackage, UpdateModelPackage가 있습니다. ModelPackage 객체에는 InferenceSpecification(Containers, SupportedContentTypes, SupportedResponseMIMETypes) 및 ModelApprovalStatus와 같은 메타데이터 필드가 포함되어야 합니다. 배포 시에는 모델 패키지 ARN을 사용하여 ModelName 및 PrimaryContainer와 함께 CreateModel을 호출한 다음, DataCaptureConfig(EnableCapture=true, SamplingPercentage, DestinationS3Uri)와 함께 CreateEndpointConfig를 호출하여 추론 캡처를 활성화합니다.
모니터링 및 편향 탐지를 위해서는 SageMaker Model Monitor와 SageMaker Clarify를 사용합니다. Model Monitor는 DefaultModelMonitor.suggest_baseline을 통해 생성된 기준선(baseline)이 필요합니다. 이 작업은 기준 통계 및 제약 조건을 생성하기 위해 CreateProcessingJob을 호출하며, 생성된 기준선은 S3에 저장되고 CreateMonitoringSchedule에서 참조됩니다. 모니터링 스케줄은 CreateMonitoringSchedule로 생성되며, StartMonitoringSchedule/StopMonitoringSchedule을 통해 시작/중지할 수 있습니다. 실시간 엔드포인트에 대한 임시 편향 검사를 위해서는, 캡처된 추론 로그를 입력으로 사용하여 Clarify 컨테이너(sagemaker.processing.ScriptProcessor 또는 ClarifyProcessor를 통해)로 SageMaker Processing 작업을 실행합니다. Clarify는 모델 편향(Model Bias) 검사를 지원하고 보고서를 S3로 반환합니다.
이기종 데이터 소스를 안전하게 집계하려면 AWS Glue와 Lake Formation을 사용하여 S3, JDBC 소스(AWS Glue JDBC 커넥터를 통한 온프레미스 MySQL 및 대량 이동을 위한 DataSync 옵션), 스트리밍 소스로부터 데이터를 검색, 카탈로그화 및 ETL합니다. AWS Glue 작업(PySpark)은 선별된 데이터셋을 암호화된 S3 데이터 레이크에 기록할 수 있으며, 이때 세분화된 Lake Formation 액세스 제어를 적용할 수 있습니다. 자동 이상 탐지 및 시각화를 위해서는 관리형 서비스 중에서 선택할 수 있습니다. Amazon Lookout for Metrics는 자동화된 시계열 이상 탐지를 수행하고, SageMaker Data Wrangler는 신속한 시각적 탐색 및 변환을 제공하며 전처리 파이프라인을 SageMaker Processing 또는 Pipelines로 다시 내보낼 수 있습니다. 시각화 대시보드를 갖춘 지속적인 이상 탐지를 위해서는, 탐지를 위한 Lookout for Metrics와 시각화 및 드릴다운을 위한 Amazon QuickSight를 결합합니다.
설계 패턴 및 트레이드오프
일반적인 패턴은 **파이프라인 우선(pipeline-first)**입니다. 데이터 전처리(ProcessingStep), 훈련(TrainingStep), 모델 평가(ProcessingStep 또는 ClarifyProcessor), 모델 등록(RegisterModel), 배포(ModelStep 또는 수동 프로모션)를 포함하는 SageMaker Pipeline을 작성합니다. **단계 캐싱(step caching)**을 사용하여 중복 계산을 최소화하고 반복적인 개발을 가속화합니다. 안전한 프로모션을 위해 model_approval_status를 “PendingManualApproval"로 설정하고, CodePipeline의 ManualApproval 액션 또는 모델 패키지를 업데이트하는 승인 Lambda를 통합합니다. 이 설계는 데이터와 코드에서 프로덕션까지 감사 가능한 경로를 제공하는 동시에 사람이 개입하는(human-in-the-loop) 거버넌스를 가능하게 합니다.
CI/CD의 경우, 두 가지 트레이드오프 중에서 선택합니다. 지표 게이트(metric gates)를 통한 완전 자동 프로모션(빠르고 수동 단계가 적음)과 수동 승인 워크플로우(규정 준수)입니다. 지표 기반 게이팅(metric-based gating)은 CodeBuild가 작은 evaluate.py를 실행하여 구현합니다. 이 스크립트는 SageMaker Runtime을 호출하거나 모델 패키지를 로드하여 지표를 계산하고, CodePipeline이 통과/실패를 결정하는 데 사용하는 아티팩트를 내보냅니다. 규정 준수를 위해 사람의 승인이 필요한 경우, SNS를 통해 이메일을 트리거하고 지정된 승인자의 진행을 요구하는 AWS CodePipeline ManualApprovalAction을 삽입하거나, 모델 레지스트리 상태를 신뢰할 수 있는 단일 소스(canonical source of truth)로 사용하고 ModelApprovalStatus가 “Approved"일 때만 배포를 허용합니다.
훈련 작업 시작 지연 시간을 줄이는 것은 종종 전체 프로비저닝 반복을 피하는 것과 관련이 있습니다. 많은 파이프라인 실행이 동일한 입력으로 다시 훈련되는 경우, Pipeline CacheConfig를 활성화하여 입력이 변경되지 않았을 때 TrainingStep을 건너뛸 수 있도록 합니다. 매번 실행 시 훈련이 필요하지만 낮은 지연 시간이 요구되는 반복 작업의 경우, SageMaker Studio에서 빠른 프로토타이핑을 위해 더 작은 인스턴스 유형을 사용하거나, 영구적인 Amazon EC2 인스턴스 또는 EKS 기반의 맞춤형 훈련 오케스트레이터에서 여러 실험을 실행하여 컨테이너 콜드 스타트를 방지합니다. 이는 운영 오버헤드를 감수하는 대신 더 낮은 지연 시간을 확보하는 것입니다. 프로덕션 수준의 확장성을 위해서는 약간의 시작 지연을 감수하고 대신 재현성을 자동화합니다.
일반적인 함정 및 의사결정 기준
배포 시 DataCaptureConfig를 활성화하지 않고 드리프트 탐지를 위해 엔드포인트 로그에만 의존하는 것은 흔한 실수입니다. 캡처 없이는 Model Monitor와 Clarify가 실제 추론 입력을 분석할 수 없습니다. 항상 CreateEndpointConfig를 DataCaptureConfig(EnableCapture=true, DestinationS3Uri, CaptureOptions, InitialSamplingPercentage)와 함께 구성하고, CreateMonitoringSchedule을 통해 기준 통계(baseline statistics)에 연결되는 모니터링 스케줄을 설정해야 합니다.
또 다른 함정은 부적절한 S3 및 네트워크 보안입니다. 격리되어야 하는 훈련 작업은 CreateTrainingJob에서 VpcConfig를 사용하고 S3 객체에 대해 KMS 암호화를 활성화해야 합니다. 퍼블릭 액세스 제어에 의존하지 말고, 대신 S3 버킷 정책, VPC 엔드포인트(com.amazonaws.region.s3), IAM 역할 범위 지정을 사용하십시오. 마지막으로, 평가 지표와 모델 카드 메타데이터를 모델 패키지에 포함(baking)하고 아티팩트를 덮어쓰는 대신 불변 버전 관리(ModelPackageVersion)를 사용하여 깨지기 쉬운 CI/CD를 피해야 합니다.
실제 문제: 사용 사례 시나리오
AcmePay — 트랜잭션 스트림에 대한 사기 탐지. S3 트랜잭션 로그, 고객 프로필, 온프레미스 MySQL 테이블을 집계하고, XGBoost 사기 분류기를 훈련하며, 프로덕션 배포 전 수동 승인 기능이 있는 중앙 모델 레지스트리를 유지하고, 온디맨드로 데이터 및 편향 드리프트를 탐지하며, 버전 관리 및 반복 실행에 대한 운영 오버헤드를 최소화하는 안전하고 감사 가능한 라이프사이클을 구축하는 것이 과제입니다.
데이터 중앙화: AWS Glue를 사용하여 S3 트랜잭션 로그와 온프레미스 MySQL을 AWS Glue JDBC 커넥터(네트워크 액세스를 위해 보안 DataSync 전송 또는 VPC 피어링 사용)를 통해 크롤링합니다. Glue 데이터 카탈로그에 데이터 세트를 카탈로깅하고 AWS Lake Formation을 통해 액세스를 강제합니다. 선별된(curated) 훈련 세트를 암호화된 S3 접두사(KMS CMK)에 저장하고, 버킷 정책과 VpcEndpoint를 함께 사용하여 퍼블릭 액세스를 방지합니다.
재현 가능한 파이프라인 구축: 특성 공학을 위한 ProcessingStep(Data Wrangler 또는 Glue ETL 내보내기 사용), 하이퍼파라미터와 함께 내장 XGBoost 컨테이너를 실행하는 TrainingStep, 그리고
model_package_group_name="acmepay-fraud-group"및model_approval_status="PendingManualApproval"로RegisterModel을 호출하는 RegisterModel 단계를 포함하는 SageMaker Pipeline을 작성합니다. 전처리 및 훈련 단계에서CacheConfig를 활성화하여 입력/코드가 변경되지 않았을 때 출력을 재사용함으로써 반복적인 인스턴스 프로비저닝을 줄입니다.CI/CD 및 승인: AWS CodePipeline의 기본 구조를 생성하는 SageMaker Project를 생성합니다. 이 파이프라인은 CodeBuild에서 단위 테스트를 실행하고, SageMaker Pipeline을 트리거하며,
RegisterModel이후에 CodePipeline ManualApproval 작업을 포함합니다. 수동 승인 작업은 승인 시UpdateModelPackage를 호출하여ModelApprovalStatus="Approved"로 설정한 다음,CreateEndpointConfig와CreateEndpoint를 트리거하여 배포하는 Lambda를 호출합니다. SageMaker Projects에서 생성된 CloudFormation 리소스를 사용하여 인프라의 재현성을 유지합니다.안전한 훈련 및 배포:
CreateTrainingJob의VpcConfig(SubnetIds, SecurityGroupIds)와EnableNetworkIsolation=true를 사용하여 훈련 작업을 제출합니다. SageMaker 실행 역할이 KMS 키에 대한kms:Decrypt권한과 선별된 데이터 세트 접두사에 대한s3:GetObject권한만 갖도록 보장합니다. 엔드포인트의 경우, 추론 데이터가 모니터링을 위해 보존되도록DataCaptureConfig(EnableCapture=true, SamplingPercentage=100, DestinationS3Uri=s3://acmepay-prod/capture)를 사용하여CreateEndpointConfig를 생성합니다.온디맨드 드리프트 및 편향 검사: 캡처된 추론 데이터와 실제 레이블(ground truth labels, 사용 가능한 경우)에 대해
ProcessingJob에서 SageMaker Clarify를 사용하여 온디맨드로 ModelBias 및 ModelExplainability 분석을 실행합니다. 데이터 사이언스 팀이 평가를 요청할 때 Lambda 또는 Step Functions에서ClarifyProcessor.run()API를 통해 호출합니다. 지속적인 드리프트 알림을 위해DefaultModelMonitor.suggest_baseline을 통해 Model Monitor 기준선을 생성하고MonitoringSchedule을 만듭니다.CreateMonitoringSchedule을 사용하여 주기적인 검사를 실행하고 위반 사항에 대한 SNS 알림을 구성합니다.
AWS의 근거: Glue + Lake Formation은 최소한의 커스텀 ETL 코드만으로 이기종 소스를 중앙화하고 보호합니다. SageMaker Pipelines + CacheConfig는 반복 실행 시 인프라 변동(churn)을 최소화합니다. Model Registry는 불변의 버전 관리 및 메타데이터(ModelPackageGroupName 및 ModelPackageVersion)를 제공하고 ModelApprovalStatus를 통해 승인 워크플로우와 기본적으로(natively) 통합됩니다. 그리고 SageMaker Clarify와 Model Monitor는 온디맨드 편향 평가와 예약된 드리프트 탐지를 모두 제공합니다. SageMaker Projects와 CodePipeline을 사용하면 CI/CD를 표준화하고, 프로덕션 배포 전에 “PendingManualApproval"에서 “Approved"로의 승격(promotion)이 감사 가능하고 반복 가능하도록 강제합니다.
← 모델 배포 및 추론 · 모든 도메인 · 모델 모니터링 및 관찰 가능성 →
이 문제 연습하기 → · ExamRoll.io에서 시간 제한 연습 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
시험 합격하기 →