SageMaker의 모델 호스팅 패턴: SageMaker PlatoBlockchain Data Intelligence에서 모델을 테스트하고 업데이트하는 모범 사례입니다. 수직 검색. 일체 포함.

SageMaker의 모델 호스팅 패턴: SageMaker에서 모델을 테스트하고 업데이트하는 모범 사례

아마존 세이지 메이커 는 개발자와 데이터 과학자에게 기계 학습(ML) 모델을 신속하게 구축, 교육 및 배포할 수 있는 기능을 제공하는 완전 관리형 서비스입니다. SageMaker를 사용하면 호스팅된 엔드포인트에 ML 모델을 배포하고 추론 결과를 실시간으로 얻을 수 있습니다. 다음에서 엔드포인트에 대한 성능 메트릭을 쉽게 볼 수 있습니다. 아마존 클라우드 워치, 끝점 자동 확장 트래픽을 기반으로 가용성을 잃지 않고 프로덕션에서 모델을 업데이트합니다. SageMaker는 사용 사례에 따라 다음과 같은 방식으로 추론을 위해 ML 모델을 배포할 수 있는 다양한 옵션을 제공합니다.

  • 밀리초 단위로 제공되어야 하는 동기식 예측의 경우 SageMaker를 사용하십시오. 실시간 추론
  • 트래픽 급증 사이에 유휴 기간이 있고 콜드 스타트를 허용할 수 있는 워크로드의 경우 서버리스 추론
  • 최대 1GB의 큰 페이로드 크기, 긴 처리 시간(최대 15분) 및 실시간에 가까운 지연 시간 요구 사항(초에서 분)이 있는 요청의 경우 SageMaker를 사용하십시오. 비동기 추론
  • 전체 데이터 세트에 대한 예측을 얻으려면 SageMaker를 사용하십시오. 일괄 변환

실시간 추론은 지연 시간이 짧은 실시간 대화형 요구 사항이 있는 추론 워크로드에 이상적입니다. 모델을 SageMaker 호스팅 서비스에 배포하고 추론에 사용할 수 있는 엔드포인트를 얻습니다. 이러한 엔드포인트는 완전히 관리되는 인프라 및 지원으로 지원됩니다. 자동 스케일링. 다음을 사용하여 여러 모델을 단일 엔드포인트로 결합하여 효율성과 비용을 개선할 수 있습니다. 다중 모델 끝점 or 다중 컨테이너 끝점.

동일한 모델의 여러 변형을 프로덕션에 배포하여 성능을 측정하거나 개선 사항을 측정하거나 A/B 테스트를 실행하려는 특정 사용 사례가 있습니다. 이러한 경우 SageMaker 다중 변형 엔드포인트는 모델의 여러 프로덕션 변형을 동일한 SageMaker 엔드포인트에 배포할 수 있기 때문에 유용합니다.

이 게시물에서는 SageMaker 다중 변수 엔드포인트와 최적화를 위한 모범 사례에 대해 설명합니다.

SageMaker 실시간 추론 옵션 비교

다음 다이어그램은 SageMaker의 실시간 추론 옵션에 대한 간략한 개요를 제공합니다.

단일 모델 엔드포인트를 사용하면 짧은 대기 시간과 높은 처리량을 위해 전용 인스턴스 또는 서버리스에서 호스팅되는 컨테이너에 하나의 모델을 배포할 수 있습니다. 모델을 생성할 수 있으며 검색 a SageMaker 지원 이미지 TensorFlow, PyTorch, Scikit-learn 등과 같은 인기 있는 프레임워크용. 모델에 대한 사용자 지정 프레임워크로 작업하는 경우 다음을 수행할 수도 있습니다. 나만의 용기 가져오기 의존성을 설치합니다.

SageMaker는 다중 모델 엔드포인트(MME) 및 다중 컨테이너 엔드포인트(MCE)와 같은 고급 옵션도 지원합니다. MME는 수백에서 수만 개의 모델을 처리하고 각 모델을 개별 엔드포인트로 배포할 필요가 없는 경우에 유용합니다. MME를 사용하면 인스턴스에서 호스팅되는 공유 서빙 컨테이너를 사용하여 동일한 엔드포인트 내에서 비용 효율적이고 확장 가능한 방식으로 여러 모델을 호스팅할 수 있습니다. 기본 인프라(컨테이너 및 인스턴스)는 동일하게 유지되지만 엔드포인트에서 사용 가능한 메모리 양과 사용량에 따라 공통 S3 위치에서 모델이 동적으로 로드 및 언로드됩니다. 짧은 대기 시간, 높은 처리량 추론을 달성하려면 애플리케이션이 이 엔드포인트에 대한 대상 모델과 함께 API 호출을 포함하기만 하면 됩니다. 모든 단일 모델에 대해 별도의 엔드포인트 비용을 지불하는 대신 단일 엔드포인트 가격으로 많은 모델을 호스팅할 수 있습니다.

MCE를 사용하면 단일 엔드포인트에서 최대 15개의 서로 다른 ML 컨테이너를 실행하고 독립적으로 호출할 수 있습니다. 비용 절감을 위해 동일한 엔드포인트에서 실행되도록 서로 다른 제공 스택(예: ML 프레임워크, 모델 서버 및 알고리즘)에 이러한 ML 컨테이너를 구축할 수 있습니다. 컨테이너를 하나로 꿰맬 수 있습니다. 직렬 추론 파이프라인 또는 컨테이너를 독립적으로 호출합니다. 트래픽 패턴이 다르고 리소스 요구 사항이 유사한 여러 ML 모델이 있는 경우 이상적일 수 있습니다. MCE를 활용하는 경우의 예는 다음을 포함하지만 이에 국한되지 않습니다.

  • 인스턴스의 전체 용량을 포화시키기에 충분한 트래픽이 없는 다양한 프레임워크(예: TensorFlow, PyTorch 및 Scikit-learn)에서 모델을 호스팅합니다.
  • 다른 ML 알고리즘(예: 권장 사항, 예측 또는 분류) 및 처리기 기능을 사용하여 동일한 프레임워크에서 모델 호스팅
  • A/B 테스트와 같은 시나리오에 대해 서로 다른 프레임워크 버전(예: TensorFlow 1.x 대 TensorFlow 2.x)에서 실행되는 유사한 아키텍처의 비교

SageMaker 다중 변형 엔드포인트(MVE)를 사용하면 프로덕션 변형을 사용하여 동일한 엔드포인트 뒤에서 여러 모델 또는 모델 버전을 테스트할 수 있습니다. 각 프로덕션 변형은 제공 컨테이너 및 인스턴스와 같이 모델을 호스팅하기 위해 배포된 ML 모델 및 리소스를 식별합니다.

SageMaker 다중 변형 엔드포인트 개요

프로덕션 ML 워크플로에서 데이터 과학자와 ML 엔지니어는 데이터/모델/개념 드리프트, 하이퍼파라미터 튜닝, 기능 선택, 프레임워크 선택 등에 기반한 재훈련과 같은 다양한 방법을 통해 모델을 구체화합니다. 프로덕션 트래픽이 있는 새 모델과 이전 모델 간에 A/B 테스트를 수행하는 것은 새 모델에 대한 유효성 검사 프로세스의 효과적인 마지막 단계가 될 수 있습니다. A/B 테스트에서는 모델의 다양한 변형을 테스트하고 각 변형의 성능을 서로 비교합니다. 그런 다음 성능이 가장 좋은 모델을 선택하여 이전 모델을 이전 버전보다 더 나은 성능을 제공하는 새 버전으로 교체합니다. 프로덕션 변형을 사용하면 이러한 ML 모델과 동일한 엔드포인트 뒤에서 다른 모델 버전을 테스트할 수 있습니다. 다양한 데이터 세트, 다양한 알고리즘 및 ML 프레임워크를 사용하여 이러한 ML 모델을 교육할 수 있습니다. 다른 인스턴스 유형에 배포합니다. 또는 이러한 옵션의 조합. SageMaker 엔드포인트에 연결된 로드 밸런서는 여러 프로덕션 변형에 걸쳐 호출 요청을 분산하는 기능을 제공합니다. 예를 들어 각 변형에 대한 트래픽 분포를 지정하여 프로덕션 변형 간에 트래픽을 분산하거나 각 요청에 대해 특정 변형을 직접 호출할 수 있습니다.

초당 요청 수와 같은 메트릭을 기반으로 변형을 자동으로 확장 또는 축소하도록 Auto Scaling 정책을 구성할 수도 있습니다.

다음 다이어그램은 MVE가 어떻게 작동하는지 자세히 보여줍니다.

SageMaker 다중 변형 엔드포인트

MVE 배포도 매우 간단합니다. 이미지로 모델 객체를 정의하고 다음을 사용하여 모델 데이터를 정의하기만 하면 됩니다. create_model SageMaker Python SDK에서 생성하고 다음을 사용하여 엔드포인트 구성을 정의합니다. production_variant 각각 고유한 모델 및 리소스 요구 사항(인스턴스 유형 및 개수)이 있는 생산 변형을 생성하기 위한 구성입니다. 이를 통해 다양한 인스턴스 유형에서 모델을 테스트할 수도 있습니다. 배포하려면 endpoint_from_production_variant 엔드포인트를 생성하는 구문입니다.

엔드포인트를 생성하는 동안 SageMaker는 엔드포인트 설정에 지정된 호스팅 인스턴스를 프로비저닝하고 프로덕션 변형에 지정된 모델 및 추론 컨테이너를 호스팅 인스턴스에 다운로드합니다. 컨테이너를 시작하고 ping으로 상태 확인을 수행한 후 성공적인 응답이 반환되면 엔드포인트 생성이 완료되었음을 알리는 메시지가 사용자에게 전송됩니다. 다음 코드를 참조하십시오.

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

앞의 예에서 우리는 각각 고유한 모델이 있는 두 가지 변형을 생성했습니다(인스턴스 유형 및 개수도 다를 수 있음). 우리는 initial_weight 두 변형에 대해 1 중: 이는 요청의 50%가 Variant1, 나머지 50%는 Variant2. 두 변형에 대한 가중치의 합은 2이고 각 변형에는 1의 가중치 할당이 있습니다. 이는 각 변형이 총 트래픽의 50%를 받는다는 것을 의미합니다.

엔드포인트 호출은 일반적인 SageMaker 구성과 유사합니다. invoke_endpoint; 데이터를 페이로드로 사용하여 엔드포인트를 직접 호출할 수 있습니다.

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

SageMaker는 다음과 같은 지표를 내보냅니다. LatencyInvocations CloudWatch의 각 변형에 대해. SageMaker가 내보내는 지표의 전체 목록은 다음을 참조하십시오. Amazon CloudWatch로 Amazon SageMaker 모니터링. CloudWatch를 쿼리하여 변형당 호출 수를 가져오고 호출이 기본적으로 변형 간에 어떻게 분할되는지 확인할 수 있습니다.

모델의 특정 버전을 호출하려면 변형을 TargetVariant 호출 중 invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

다음을 사용하여 각 변형에 대한 정확도, 정밀도, 재현율, F1 점수 및 수신기 작동 특성/곡선 아래 영역과 같은 메트릭을 검토하여 각 생산 변형의 성능을 평가할 수 있습니다. Amazon SageMaker 모델 모니터. 그런 다음 다음을 호출하여 각 변형에 할당된 가중치를 업데이트하여 최상의 모델에 대한 트래픽을 늘리도록 결정할 수 있습니다. 끝점 가중치 및 용량 업데이트. 이렇게 하면 엔드포인트를 업데이트할 필요 없이 프로덕션 변형에 대한 트래픽 분포가 변경됩니다. 따라서 초기 설정에서 트래픽의 50% 대신 트래픽의 75%를 Variant2 다음을 사용하여 각 변형에 새 가중치를 할당합니다. UpdateEndpointWeightsAndCapacities. 다음 코드를 참조하십시오.

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

변형의 성능에 만족하면 트래픽의 100%를 해당 변형으로 라우팅할 수 있습니다. 예를 들어 가중치를 설정할 수 있습니다. Variant1 0에 대한 가중치 Variant2 1. 그런 다음 SageMaker는 모든 추론 요청의 100%를 Variant2. 그런 다음 엔드포인트를 안전하게 업데이트하고 삭제할 수 있습니다. Variant1 끝점에서. 또한 엔드포인트에 새 변형을 추가하여 프로덕션에서 새 모델을 계속 테스트할 수 있습니다. 엔드포인트가 수신하는 트래픽에 따라 자동으로 확장되도록 이러한 엔드포인트를 구성할 수도 있습니다.

다중 변수 엔드포인트의 이점

SageMaker MVE를 사용하면 다음을 수행할 수 있습니다.

  • 동일한 SageMaker 엔드포인트를 사용하여 모델의 여러 변형을 배포하고 테스트합니다. 이는 프로덕션에서 모델의 변형을 테스트하는 데 유용합니다. 예를 들어 모델을 프로덕션에 배포했다고 가정합니다. 소량의 트래픽(예: 5%)을 새 모델로 보내 모델의 변형을 테스트할 수 있습니다.
  • CloudWatch의 각 변형에 대한 운영 지표를 모니터링하여 트래픽을 중단하지 않고 프로덕션에서 모델 성능을 평가합니다.
  • 가용성 손실 없이 프로덕션에서 모델을 업데이트합니다. 이미 프로덕션에 배포된 모델을 서비스에서 제외하지 않고 엔드포인트를 수정할 수 있습니다. 예를 들어 새 모델 변형을 추가하거나 기존 모델 변형의 ML 컴퓨팅 인스턴스 구성을 업데이트하거나 모델 변형 간의 트래픽 분포를 변경할 수 있습니다. 자세한 내용은 다음을 참조하십시오. 엔드 포인트 업데이트끝점 가중치 및 용량 업데이트.

다중 변수 엔드포인트를 사용할 때의 문제

SageMaker MVE에는 다음과 같은 문제가 있습니다.

  • 부하 테스트 노력 – 각 변형에 대한 테스트 및 모델 매트릭스 비교에 상당한 노력과 리소스를 투자해야 합니다. A/B 테스트가 성공적인 것으로 간주되려면 테스트에서 수집된 지표에 대한 통계 분석을 수행하여 통계적으로 유의미한 결과가 있는지 확인해야 합니다. 실적이 저조한 변형 탐색을 최소화하는 것이 어려울 수 있습니다. 잠재적으로 사용할 수 있습니다 다중 무장 산적 작동하지 않는 실험으로 트래픽을 보내는 것을 방지하고 테스트할 때 성능을 최적화하는 최적화 기술입니다. 부하 테스트의 경우 다음을 탐색할 수도 있습니다. Amazon SageMaker 추론 추천자 대기 시간 및 처리량, 사용자 지정 트래픽 패턴 및 선택한 인스턴스(최대 10개)에 대한 프로덕션 요구 사항을 기반으로 광범위한 벤치마크를 수행합니다.
  • 모델 변형과 끝점 간의 긴밀한 결합 – 모델 배포 빈도에 따라 엔드포인트가 updating 업데이트되는 각 생산 변형의 상태. SageMaker는 다음도 지원합니다. 배포 가드레일, 제어된 방식으로 생산 중인 현재 모델에서 새 모델로 쉽게 전환하는 데 사용할 수 있습니다. 이 옵션은 카나리아선의 업데이트 과정 동안 현재 모델에서 새 모델로의 트래픽 이동을 세부적으로 제어할 수 있도록 트래픽 이동 모드. 자동 롤백과 같은 기본 제공 안전 장치를 사용하면 문제가 생산에 중대한 영향을 미치기 전에 조기에 문제를 파악하고 자동으로 수정 조치를 취할 수 있습니다.

다중 변수 엔드포인트에 대한 모범 사례

SageMaker MVE를 사용하여 모델을 호스팅할 때 다음을 고려하십시오.

  • SageMaker는 새 모델을 A/B 테스트 환경에 쉽게 배포할 수 있고 사용한 만큼만 비용을 지불하기 때문에 새 모델을 테스트하는 데 적합합니다. 엔드포인트가 실행되는 동안 각 인스턴스에 대해 소비된 인스턴스 시간당 요금이 부과됩니다. 테스트를 완료하고 더 이상 엔드포인트 또는 변형을 광범위하게 사용하지 않는 경우 이를 삭제하여 비용을 절약해야 합니다. 모델이 다음에 저장되기 때문에 필요할 때 언제든지 다시 만들 수 있습니다. 아마존 단순 스토리지 서비스 (아마존 S3).
  • 모델을 배포하려면 가장 최적의 인스턴스 유형과 크기를 사용해야 합니다. SageMaker는 현재 ML 컴퓨팅 인스턴스 다양한 인스턴스 패밀리에서. 엔드포인트 인스턴스는 항상 실행 중입니다(인스턴스가 서비스 중인 동안). 따라서 올바른 유형의 인스턴스를 선택하면 ML 모델의 총 비용과 성능에 상당한 영향을 미칠 수 있습니다. 부하 테스트 과잉 프로비저닝을 방지하고 필요하지 않은 용량에 대한 추가 비용 지불을 방지하기 위해 라이브 엔드포인트에 대한 Auto Scaling을 포함하거나 포함하지 않고 적절한 인스턴스 유형 및 플릿 크기를 결정하는 모범 사례입니다.
  • CloudWatch에서 모델 성능 및 리소스 사용률을 모니터링할 수 있습니다. 다음을 구성할 수 있습니다. ProductionVariant 사용 애플리케이션 자동 확장. 조정 정책에 대한 지표 및 대상 값을 지정하려면 대상 추적 조정 정책을 구성합니다. 미리 정의된 측정항목 또는 맞춤 측정항목을 사용할 수 있습니다. 정책 구성 구문에 대한 자세한 내용은 다음을 참조하세요. TargetTrackingScalingPolicyConfiguration. 자동 조정 구성에 대한 자세한 내용은 다음을 참조하십시오. Amazon SageMaker 모델 자동 확장. 변형에 대한 대상 추적 조정 정책을 신속하게 정의하기 위해 특정 CloudWatch 지표를 선택하고 임계값을 설정할 수 있습니다. 예를 들어 메트릭을 사용하십시오. SageMakerVariantInvocationsPerInstance 변형에 대한 각 인스턴스가 호출되는 분당 평균 횟수를 모니터링하거나 메트릭을 사용합니다. CPUUtilization CPU가 처리하는 작업의 합계를 모니터링합니다. 다음 예제에서는 SageMakerVariantInvocationsPerInstance 각 인스턴스가 InvocationsPerInstance 메트릭 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • 모델 배포 후 모델 아티팩트를 변경 또는 삭제하거나 추론 코드를 변경하면 예측할 수 없는 결과가 발생합니다. 프로덕션에 모델을 배포하기 전에 추론 코드 스니펫(예: model_fn, input_fn, predict_fnoutput_fn) SageMaker 노트북 인스턴스 또는 로컬 서버와 같은 로컬 개발 환경에서. 모델 아티팩트를 변경 또는 삭제하거나 추론 코드를 변경해야 하는 경우 새 끝점 구성을 제공하여 끝점을 수정합니다. 새 엔드포인트 구성을 제공한 후 이전 엔드포인트 구성에 해당하는 모델 아티팩트를 변경하거나 삭제할 수 있습니다.
  • SageMaker를 사용할 수 있습니다. 일괄 변환 생산 변형을 테스트합니다. 일괄 변환은 대규모 데이터 세트에서 추론을 얻는 데 이상적입니다. 각각의 새 모델 변형에 대해 별도의 변환 작업을 생성하고 유효성 검사 데이터 세트를 사용하여 테스트할 수 있습니다. 각 변환 작업에 대해 출력 파일에 대한 Amazon S3의 고유한 모델 이름과 위치를 지정합니다. 결과를 분석하려면 다음을 사용하십시오. 추론 파이프라인 로그 및 지표.

결론

SageMaker를 사용하면 엔드포인트에서 여러 프로덕션 변형을 실행하여 프로덕션에서 ML 모델을 쉽게 A/B 테스트할 수 있습니다. SageMaker의 기능을 사용하여 다양한 훈련 데이터 세트, 하이퍼파라미터, 알고리즘 또는 ML 프레임워크를 사용하여 훈련된 모델을 테스트할 수 있습니다. 서로 다른 인스턴스 유형에서 수행하는 방식 또는 위의 모든 조합. 엔드포인트의 변형 간에 트래픽 분포를 제공할 수 있으며 SageMaker는 지정된 분포를 기반으로 추론 트래픽을 변형으로 분할합니다. 또는 특정 고객 세그먼트에 대한 모델을 테스트하려는 경우 다음을 제공하여 추론 요청을 처리해야 하는 변형을 지정할 수 있습니다. TargetVariant 헤더와 SageMaker는 사용자가 지정한 변형으로 요청을 라우팅합니다. A/B 테스트에 대한 자세한 내용은 다음을 참조하세요. 생산 중인 모델을 안전하게 업데이트.

참고자료


저자 소개

SageMaker의 모델 호스팅 패턴: SageMaker PlatoBlockchain Data Intelligence에서 모델을 테스트하고 업데이트하는 모범 사례입니다. 수직 검색. 일체 포함.디팔리 라잘레 Amazon Web Services의 AI/ML 전문가 기술 계정 관리자입니다. 그녀는 모범 사례로 기계 학습 솔루션을 구현하는 데 대한 기술 지침을 제공하는 기업 고객과 협력합니다. 여가 시간에는 하이킹, 영화 감상, 가족 및 친구들과 어울리는 것을 즐깁니다.

SageMaker의 모델 호스팅 패턴: SageMaker PlatoBlockchain Data Intelligence에서 모델을 테스트하고 업데이트하는 모범 사례입니다. 수직 검색. 일체 포함.다왈 파텔 AWS의 수석 기계 학습 설계자입니다. 그는 분산 컴퓨팅 및 인공 지능과 관련된 문제에 대해 대기업에서 중견 스타트업에 이르는 다양한 조직과 협력했습니다. 그는 NLP 및 Computer Vision 도메인을 포함한 딥 러닝에 중점을 둡니다. 그는 고객이 SageMaker에서 고성능 모델 추론을 달성하도록 돕습니다.

SageMaker의 모델 호스팅 패턴: SageMaker PlatoBlockchain Data Intelligence에서 모델을 테스트하고 업데이트하는 모범 사례입니다. 수직 검색. 일체 포함. 사우라브 트리칸데 Amazon SageMaker Inference의 수석 제품 관리자입니다. 그는 고객과 함께 일하는 데 열정적이며 기계 학습의 민주화라는 목표에 동기를 부여합니다. 그는 복잡한 ML 애플리케이션, 다중 테넌트 ML 모델 배포, 비용 최적화 및 딥 러닝 모델 배포의 접근성 향상과 관련된 핵심 과제에 중점을 둡니다. 여가 시간에 Saurabh는 하이킹, 혁신적인 기술 학습, TechCrunch 팔로우, 가족과 함께 시간 보내기를 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습