Amazon MLA-C01: 모델 배포 및 추론 — 학습 가이드
다음의 일부입니다: AWS Machine Learning Engineer Associate MLA-C01 — 학습 가이드. 검증된 답안으로 연습하기: Amazon 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.
실시간, 서버리스, 비동기, 배치 엔드포인트 — 핵심 개념
Amazon SageMaker의 실시간 추론은 지연 시간이 짧은 상태 저장(stateful) 서비스 모델입니다. 이 모델에서는 Model, EndpointConfig, Endpoint를 생성하여 프로비저닝된 컴퓨팅(ml.* 인스턴스 유형)을 할당하고, InvokeEndpoint API를 통해 요청을 처리할 수 있도록 항상 사용 가능한 상태를 유지합니다. CreateEndpointConfig는 ProductionVariants를 받으며, 각 ProductionVariant는 ModelName, InitialInstanceCount, InstanceType, InitialVariantWeight를 정의합니다. UpdateEndpointWeightsAndCapacities 또는 UpdateEndpoint를 사용하여 트래픽과 용량을 변경할 수 있습니다. 예측 가능한 짧은 지연 시간이 요구될 때, 프로비저닝된 실시간 엔드포인트가 주요 옵션이며, 전처리, 모델, 후처리 컨테이너를 연결하는 다중 컨테이너 추론 파이프라인을 지원합니다.
서버리스 추론(Serverless Inference)은 인스턴스 관리가 필요 없으며, 엔드포인트 수준에서 각 ProductionVariant에 대한 MemorySizeInMB와 MaxConcurrency를 지정하는 ServerlessConfig로 구성됩니다. SageMaker가 컨테이너 프로비저닝을 관리하고 유휴 상태일 때는 0으로 축소되므로, 트래픽이 급증하고 처리량이 낮은 워크로드에 이상적입니다. 비동기 추론(Asynchronous Inference)은 실행 시간이 길거나 클라이언트가 동기적 응답을 요구하지 않는 요청에 최적화되어 있습니다. 비동기 엔드포인트는 CreateEndpointConfig에서 AsyncInferenceConfig(S3OutputPath가 있는 OutputConfig, 선택적 ClientConfig, MaxConcurrentInvocationsPerInstance)를 사용하여 생성됩니다. 클라이언트는 입력 S3 URI를 제공하며 InvokeEndpointAsync를 호출하고, 결과는 구성된 S3 출력 위치에 기록됩니다. 배치 변환(Batch Transform)은 대규모 오프라인 추론 워크로드를 위한 별도의 작업 유형(CreateTransformJob)입니다. 이 API는 TransformInput(S3Uri와 S3DataType을 포함하는 S3DataSource), TransformOutput(S3OutputPath, Accept, AssembleWith), TransformResources(InstanceType, InstanceCount)를 필요로 합니다. 배치 변환은 지연 시간보다는 처리량이 중요할 때 가장 적합하며, 데이터 세트에 걸쳐 대규모 병렬 처리를 지원합니다.
다중 모델 엔드포인트, 추론 파이프라인, 섀도잉 및 A/B 테스팅 — 주요 서비스 및 구성
모델당 QPS가 낮은 다수의 모델을 호스팅할 때, SageMaker Multi-Model Endpoints(MME)를 사용하면 단일 컨테이너에서 S3에 저장된 수십에서 수천 개의 모델 아티팩트를 호스팅하고 필요에 따라 로드할 수 있습니다. SageMaker 다중 모델 서버 패턴을 구현하는 모델 서버 컨테이너를 구축하거나 지원되는 프레임워크 이미지를 사용하고, 모델 tarball을 S3에 업로드한 다음, 해당 컨테이너를 참조하는 Model 리소스를 생성합니다. 호출 시에는 InvokeEndpoint API의 TargetModel 파라미터(또는 X-Amzn-SageMaker-Target-Model 헤더)를 통해 대상 모델 이름을 전달하여 서버가 해당 모델을 S3에서 메모리로 로드하도록 합니다. MME는 대규모 모델 플릿의 메모리와 운영 비용을 절감하지만, 아직 런타임에 상주하지 않는 모델에 대해서는 콜드 로드(cold-load) 지연 시간이 추가됩니다.
추론 파이프라인은 다중 컨테이너 모델로 구현되며, 이때 Model 리소스는 Containers를 순서대로 나열합니다. 엔드포인트는 페이로드를 첫 번째 컨테이너(전처리), 그 다음 모델 컨테이너, 마지막으로 후처리 컨테이너 순으로 라우팅합니다. CreateModel에서 각 컨테이너를 고유한 ModelDataUrl과 환경 변수로 정의합니다. 카나리(canary) 또는 블루/그린(blue/green) 방식의 테스트를 위해서는 EndpointConfig에 여러 ProductionVariants를 사용하고, InitialVariantWeight와 나중에 UpdateEndpointWeightsAndCapacities를 통해 트래픽 분할을 제어합니다. 섀도우 배포(shadow deployment)는 애플리케이션 계층에서 각 요청의 복사본을 섀도우 엔드포인트로 보내거나(프로덕션 엔드포인트에는 트래픽 가중치 없음), 가중치가 낮은 ProductionVariant를 생성하여 엔드포인트 인프라가 일부 미러링된 트래픽을 받도록 하는 방식으로 구현할 수 있습니다. 애플리케이션 계층에서의 요청 복제는 실험의 완전한 격리와 독립적인 관측 가능성을 제공합니다.
온디맨드 및 지속적인 모니터링을 위해, 엔드포인트를 생성할 때 DataCaptureConfig를 구성하여 요청 및 응답 페이로드를 S3에 저장할 수 있습니다. 주요 DataCaptureConfig 필드에는 EnableCapture (true), InitialSamplingPercentage, DestinationS3Uri, CaptureOptions (REQUEST, RESPONSE)가 포함됩니다. 캡처된 데이터는 SageMaker Model Monitor 및 SageMaker Clarify의 배포 후 확인 작업의 기반이 됩니다. Model Monitor의 CreateMonitoringSchedule을 사용하여 기준선(baseline)을 생성하고, 내장된 모델 모니터링 컨테이너를 사용하는 임시(ad-hoc) Processing 작업을 실행하여 제약 조건 및 드리프트 지표를 계산할 수 있습니다.
설계 패턴과 장단점
한 자릿수에서 십 단위 초반의 밀리초 지연 시간이 필요하고 항상 켜져 있는 용량을 감당할 수 있는 경우 프로비저닝된 실시간 엔드포인트를 선택하십시오. 유휴 상태일 때의 분당 비용이 주된 제약 조건이고 트래픽이 간헐적이라면 서버리스 엔드포인트가 운영 부담을 줄여줍니다. 각 variant에 대해 ServerlessConfig.MemorySizeInMB 및 ServerlessConfig.MaxConcurrency를 구성하고 SageMaker가 자동 확장하도록 하십시오. 장기 실행 추론이나 무거운 페이로드 교환 패턴을 가진 워크로드의 경우, 비동기 엔드포인트는 클라이언트 수명 주기를 컴퓨팅과 분리합니다. 입력/출력에 S3가 필요하며, 클라이언트가 완료 여부를 폴링하거나 S3 알림을 받을 수 있을 때 가장 적합합니다.
멀티 모델 엔드포인트는 메모리 중복과 S3 객체 관리 복잡성을 줄여주지만, 모델별 콜드 스타트 지연 시간을 추가하며 온디맨드 S3 로딩과 적절한 수명 주기 관리(제거/LRU)가 가능한 모델 서버가 필요합니다. 모델별 지연 시간이 중요하다면, 핫 모델은 전용 ProductionVariants에 호스팅하고 트래픽이 적은 모델은 MME로 오프로드하십시오. 추론 파이프라인은 전처리 및 후처리 로직을 모델에 더 가깝게 중앙 집중화하여 클라이언트 측 코드를 줄이고 훈련과 추론 간의 일관된 변환을 보장하지만, 엔드포인트 시작 복잡성을 증가시키고 견고한 컨테이너 계약 설계(입력/출력 코덱 및 콘텐츠 유형)를 요구합니다.
ProductionVariant 가중치를 사용한 A/B 테스트는 트래픽 분할 및 오프라인 지표 수집에 간단하지만, 프로덕션 지표에 영향을 주지 않고 트래픽을 섀도잉하고 싶을 때는 애플리케이션 수준 미러링을 사용하는 것이 좋습니다. 점진적 배포 및 롤백 자동화를 위해, CloudWatch 지표 및 Model Monitor 경고를 사용한 자동 지표 평가와 최종 프로모션을 제어하는 수동 승인 작업을 포함하는 CodePipeline 또는 Step Functions 워크플로에 UpdateEndpointWeightsAndCapacities를 통합하십시오.
일반적인 함정과 의사결정 기준
일반적인 운영상의 실수 중 하나는 Model Monitor가 레이블 가용성 문제를 감지할 것이라고 가정하는 것입니다. Model Monitor는 캡처된 요청에서 피처 분포 드리프트와 데이터 품질 위반을 감지할 수 있지만, 레이블 기반 지표(F1, 재현율) 저하를 측정하려면 모니터링 작업이 사용할 수 있는 형식으로 실제 레이블(ground-truth)을 S3에 다시 전달하고 예측 대 실제를 계산하는 모니터링 작업을 예약해야 합니다. 또 다른 함정은 ServerlessConfig.MemorySizeInMB를 적절하게 설정하지 못하는 것입니다. 메모리를 부족하게 프로비저닝하면 쓰로틀링이나 컨테이너 충돌이 발생하고, 과도하게 프로비저닝하면 비용이 증가합니다. 다중 모델 엔드포인트의 경우, 적절한 S3 객체 레이아웃과 수명 주기(접두사, 모델 매니페스트)를 설정하지 않으면 콜드 로드가 느려지고 제거 정책이 복잡해집니다.
사기 탐지를 위한 클래스 불균형을 처리할 때는 운영 오버헤드를 최소화하기 위해 무거운 샘플링 파이프라인보다 알고리즘 자체의 가중치 부여 방식을 선호해야 합니다. 예를 들어, XGBoost(SageMaker XGBoost 컨테이너)는 ‘scale_pos_weight’ 하이퍼파라미터를 지원하며, 이는 negative_examples/positive_examples로 계산하여 CreateTrainingJob 호출의 하이퍼파라미터 맵을 통해 전달합니다. 수동 배포 게이트를 위해서는 SageMaker Model Registry를 사용합니다. ModelPackageGroup을 생성하고, CreateModelPackage를 호출하여 모델 패키지를 등록하고 모델 패키지 상태를 PendingManualApproval로 설정합니다. 그런 다음 외부 CodePipeline 수동 승인 작업이나 Step Functions + SNS 수동 확인을 통해 UpdateModelPackage를 호출하여 ApprovalStatus = “Approved"로 설정한 후 CreateModel 또는 CreateEndpoint를 실행할 수 있습니다.
실제 문제: 사용 사례 시나리오
FraudDetectCo는 S3의 트랜잭션 로그와 온프레미스 MySQL 고객 프로필 테이블을 통합하고, XGBoost 모델을 훈련하며, 거의 실시간에 가까운 지연 시간으로 배포하고, 프로덕션 릴리스에 대한 수동 승인 게이트를 적용하며, 데이터세트 이상 및 모델 드리프트를 온디맨드로 탐지해야 하는 온라인 사기 탐지 시스템을 구축하고 있습니다.
데이터 집계 및 전처리: AWS Database Migration Service(DMS) 또는 AWS Glue의 JDBC 커넥터를 사용하여 온프레미스 MySQL 테이블을 S3(parquet) 또는 Amazon RDS/Athena가 활성화된 데이터 레이크로 지속적으로 복제합니다. AWS Glue로 카탈로깅하고 Amazon SageMaker Feature Store 오프라인 스토어에 피처를 등록하여 일관된 훈련 및 온라인 서빙 피처 조회를 제공합니다. 이를 통해 피처 계보를 중앙에서 관리하고, 격리를 위해 S3 보안 정책과 Lake Formation 거버넌스를 적용합니다.
훈련 및 클래스 불균형 처리: SageMaker XGBoost 내장 컨테이너를 사용하여 SageMaker Training 작업을 실행합니다. 훈련 레이블 비율을 계산하고 XGBoost 하이퍼파라미터 “scale_pos_weight"를 CreateTrainingJob의 HyperParameters 맵에 설정하여 최소한의 전처리로 클래스 불균형 문제를 해결합니다. 훈련 채널에 Pipe 모드(DataSource에 S3DataSource와 S3DataType을 S3Prefix로 설정하고, Pipe 모드 사용 시 “RecordWrapperType”:“None” 활성화)를 사용하여 연속적인 작업 간의 시작 시간과 데이터 다운로드 지연 시간을 줄입니다.
모델 레지스트리 및 수동 승인: ModelPackageGroup 내에서 CreateModelPackage를 호출하여 훈련된 모델을 SageMaker Model Registry에 등록합니다. 초기 ApprovalStatus를 PendingManualApproval로 설정하고, AWS Manual Approval 작업을 포함하는 AWS CodePipeline을 통합합니다. 수동 확인 후 UpdateModelPackage를 ApprovalStatus=“Approved"로 호출하여 ModelPackage를 프로덕션으로 승격시키기 전에 CreateModel 및 CreateEndpointConfig를 통해 배포합니다.
배포 및 추론 토폴로지: 낮은 지연 시간의 스코어링을 위해 프로비저닝된 실시간 엔드포인트에 모델을 배포합니다. 나중에 수백 개의 모델을 호스팅해야 하는 경우, 다중 모델 엔드포인트(Multi-Model Endpoint)를 평가하고 InvokeEndpoint의 TargetModel 파라미터를 사용하여 S3에 저장된 특정 모델을 지정합니다. DataCaptureConfig(EnableCapture=true, InitialSamplingPercentage=100, DestinationS3Uri=s3://
<bucket>/captures, CaptureOptions=[‘REQUEST’,‘RESPONSE’])를 구성하여 온디맨드 분석을 위한 요청/응답 페이로드를 수집합니다.모니터링 및 이상 탐지: 데이터 품질 및 피처 드리프트를 위해 CreateMonitoringSchedule로 SageMaker Model Monitor 기준선을 예약합니다. 데이터세트 수준의 이상 탐지 및 시각화를 위해, 캡처된 S3 데이터를 Amazon Lookout for Metrics에 공급하여 이상을 자동으로 탐지하고 Amazon QuickSight에 공급하여 대시보드를 만듭니다. 온디맨드 편향 및 드리프트 평가를 위해서는, 캡처된 데이터에 대해 SageMaker Clarify 처리 작업을 실행하거나, 저장된 기준선 제약 조건을 적용하고 비교 보고서를 생성하는 임시 Model Monitor 처리 작업(CreateProcessingJob을 통해)을 시작합니다.
근거: 이 접근 방식은 재현 가능한 훈련과 짧은 지연 시간의 서빙을 위해 피처를 중앙 집중화하고, 최소한의 파이프라인 복잡성으로 클래스 불균형을 처리하기 위해 XGBoost의 scale_pos_weight를 사용하며, CodePipeline과 통합된 Model Registry에서 수동 승인을 강제하고, 훈련 데이터 스트리밍에 Pipe 모드를 사용하여 훈련 시작 지연 시간을 줄이며, 캡처된 추론 데이터를 사용하여 자동화된 이상 탐지(Lookout for Metrics)와 온디맨드 공정성/드리프트 확인(Clarify + Model Monitor)을 모두 제공합니다.
← 모델 평가 및 선택 · 모든 도메인 · MLOps 및 모델 수명 주기 관리 →
이 문제 연습하기 → · 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.
시험 합격하기 →