Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 직렬 추론을 위한 설계 패턴입니다. 수직 검색. 일체 포함.

Amazon SageMaker의 직렬 추론을 위한 디자인 패턴

머신 러닝(ML)이 주류가 되고 널리 채택됨에 따라 ML 기반 애플리케이션은 다양한 복잡한 비즈니스 문제를 해결하기 위해 점점 더 일반화되고 있습니다. 이러한 복잡한 비즈니스 문제에 대한 솔루션은 여러 ML 모델을 사용해야 하는 경우가 많습니다. 이러한 모델을 순차적으로 결합하여 전처리, 데이터 변환, 모델 선택, 추론 생성, 추론 통합 및 후처리와 같은 다양한 작업을 수행할 수 있습니다. 조직에는 이러한 복잡한 ML 워크플로를 조정하기 위한 유연한 옵션이 필요합니다. 직렬 추론 파이프라인은 이러한 워크플로를 일련의 단계로 배열하는 디자인 패턴 중 하나입니다. 각 단계는 이전 단계에서 생성된 출력을 강화하거나 추가로 처리하고 출력을 파이프라인의 다음 단계로 전달합니다.

또한 이러한 직렬 추론 파이프라인은 다음을 제공해야 합니다.

  • 유연하고 맞춤형 구현(종속성, 알고리즘, 비즈니스 로직 등)
  • 프로덕션 구현을 위해 반복 가능하고 일관성 있음
  • 인프라 관리를 최소화하여 차별화된 중량물

이 게시물에서는 직렬 추론 파이프라인의 몇 가지 일반적인 사용 사례를 살펴보고 다음을 사용하여 이러한 각 사용 사례에 대한 몇 가지 구현 옵션을 살펴봅니다. 아마존 세이지 메이커. 또한 이러한 각 구현 옵션에 대한 고려 사항에 대해서도 설명합니다.

다음 표에는 직렬 추론, 구현 고려 사항 및 옵션에 대한 다양한 사용 사례가 요약되어 있습니다. 이것들은 이 포스트에서 논의됩니다.

적용 사례 사용 사례 설명 기본 고려 사항 전반적인 구현 복잡성 권장 구현 옵션 샘플 코드 아티팩트 및 노트북
직렬 추론 파이프라인(전처리 및 후처리 단계 포함) 추론 파이프라인은 추론 생성을 위해 훈련된 모델을 호출하기 전에 수신 데이터를 사전 처리한 다음 생성된 추론을 사후 처리해야 다운스트림 애플리케이션에서 쉽게 사용할 수 있습니다. 손쉬운 구현 낮은 SageMaker Inference Toolkit을 사용하는 추론 컨테이너 훈련된 PyTorch 모델 배포
직렬 추론 파이프라인(전처리 및 후처리 단계 포함) 추론 파이프라인은 추론 생성을 위해 훈련된 모델을 호출하기 전에 수신 데이터를 사전 처리한 다음 생성된 추론을 사후 처리해야 다운스트림 애플리케이션에서 쉽게 사용할 수 있습니다. 분리, 단순화된 배포 및 업그레이드 중급 SageMaker 추론 파이프라인 사용자 정의 컨테이너 및 xgBoost를 사용한 추론 파이프라인
직렬 모델 앙상블 추론 파이프라인은 여러 모델을 순차적으로 호스팅하고 정렬해야 최종 추론을 생성하기 전에 각 모델이 이전 모델에서 생성된 추론을 향상시킬 수 있습니다. 분리, 단순화된 배포 및 업그레이드, 모델 프레임워크 선택의 유연성 중급 SageMaker 추론 파이프라인 Scikit-learn 및 Linear Learner를 사용한 추론 파이프라인
직렬 추론 파이프라인(그룹에서 대상 모델 호출 포함) 추론 파이프라인은 사전 처리 및 사후 처리 작업 외에도 요청 특성을 기반으로 또는 비용 최적화를 위해 배포된 모델 그룹에서 특정 사용자 지정 모델을 호출해야 합니다. 비용 최적화 및 사용자 정의 높은 다중 모델 엔드포인트(MME)가 있는 SageMaker 추론 파이프라인 선형 학습기를 사용하는 Amazon SageMaker 다중 모델 엔드포인트

다음 섹션에서는 각 사용 사례에 대해 더 자세히 설명합니다.

추론 컨테이너를 사용한 직렬 추론 파이프라인

직렬 추론 파이프라인 사용 사례에는 추론 생성을 위해 사전 훈련된 ML 모델을 호출하기 전에 수신 데이터를 사전 처리해야 하는 요구 사항이 있습니다. 또한 경우에 따라 생성된 추론을 추가 처리해야 다운스트림 애플리케이션에서 쉽게 사용할 수 있습니다. 이는 스트리밍 데이터 소스를 실시간으로 처리해야 모델을 적용할 수 있는 사용 사례의 일반적인 시나리오입니다. 그러나 이 사용 사례는 일괄 추론에도 나타날 수 있습니다.

SageMaker는 추론 컨테이너를 사용자 지정하고 직렬 추론 파이프라인을 구축하는 데 사용하는 옵션을 제공합니다. 추론 컨테이너는 SageMaker 추론 툴킷 에 구축 SageMaker 다중 모델 서버(MMS)ML 모델을 제공하는 유연한 메커니즘을 제공합니다. 다음 다이어그램은 추론 컨테이너를 사용하여 직렬 추론 파이프라인을 구현하는 방법의 참조 패턴을 보여줍니다.

SageMaker MMS는 모델을 로드하고, 입력 데이터를 사전 처리하고, 모델에서 예측을 가져오고, 출력 데이터를 사후 처리하기 위해 다음 기능을 구현하는 Python 스크립트를 예상합니다.

  • input_fn () – 입력 데이터의 역직렬화 및 전처리를 담당합니다.
  • model_fn () – 아티팩트에서 훈련된 모델을 로드하는 책임 아마존 단순 스토리지 서비스 (아마존 S3)
  • predict_fn () – 모델에서 추론을 생성하는 책임
  • output_fn () – 출력 데이터(추론)의 직렬화 및 사후 처리를 담당합니다.

추론 컨테이너를 사용자 지정하는 자세한 단계는 다음을 참조하십시오. 자신의 추론 컨테이너 조정.

추론 컨테이너는 다음과 같은 기본 고려 사항이 있는 직렬 추론 파이프라인 사용 사례에 이상적인 디자인 패턴입니다.

  • 높은 응집력 – 처리 논리 및 해당 모델이 단일 비즈니스 기능을 구동하고 함께 배치되어야 함
  • 낮은 전체 지연 시간 – 추론 요청이 이루어진 후 응답이 수신되기까지의 경과 시간

직렬 추론 파이프라인에서 처리 논리와 모델은 동일한 단일 컨테이너 내에 캡슐화되므로 많은 호출 호출이 컨테이너 내에 남아 있습니다. 이는 전체 홉 수를 줄이는 데 도움이 되며 결과적으로 파이프라인의 전체 대기 시간과 응답성이 향상됩니다.

또한 구현 용이성이 중요한 기준인 사용 사례의 경우 추론 컨테이너가 도움이 될 수 있으며 파이프라인의 다양한 처리 단계가 동일한 컨테이너 내에 공존할 수 있습니다.

SageMaker 추론 파이프라인을 사용하는 직렬 추론 파이프라인

직렬 추론 파이프라인 사용 사례의 또 다른 변형은 파이프라인의 다양한 단계(예: 데이터 사전 처리, 추론 생성, 데이터 사후 처리, 형식 지정 및 직렬화) 간에 보다 명확한 디커플링이 필요합니다. 이는 다양한 이유 때문일 수 있습니다.

  • 감 결합 – 파이프라인의 다양한 단계에는 명확하게 정의된 목적이 있으며 관련된 기본 종속성으로 인해 별도의 컨테이너에서 실행해야 합니다. 이것은 또한 파이프라인을 잘 구조화하는 데 도움이 됩니다.
  • 프레임 워크 – 파이프라인의 다양한 단계는 특정 목적에 맞는 프레임워크(예: scikit 또는 Spark ML)를 사용하므로 별도의 컨테이너에서 실행해야 합니다.
  • 리소스 격리 – 파이프라인의 다양한 단계에는 다양한 리소스 소비 요구 사항이 있으므로 더 많은 유연성과 제어를 위해 별도의 컨테이너에서 실행해야 합니다.

또한 약간 더 복잡한 직렬 추론 파이프라인의 경우 요청을 처리하고 추론을 생성하기 위해 여러 단계가 포함될 수 있습니다. 따라서 운영 관점에서 이러한 단계를 별도의 컨테이너에 호스팅하여 기능을 더 잘 격리하고 더 쉽게 업그레이드 및 향상을 촉진하는 것이 유리할 수 있습니다(다른 모델이나 처리 단계에 영향을 주지 않고 한 단계 변경).

사용 사례가 이러한 고려 사항 중 일부와 일치하는 경우 SageMaker 추론 파이프라인 직렬 추론 파이프라인을 구축하기 위한 쉽고 유연한 옵션을 제공합니다. 다음 다이어그램은 SageMaker 추론 파이프라인을 사용하여 전용 컨테이너에서 호스팅되는 여러 단계를 사용하여 직렬 추론 파이프라인을 구현하는 방법의 참조 패턴을 보여줍니다.

ml9154-추론-파이프라인

SageMaker 추론 파이프라인은 데이터에 대한 추론 요청을 처리하는 2-15개 컨테이너의 선형 시퀀스로 구성됩니다. 추론 파이프라인은 사전 훈련된 SageMaker 내장 알고리즘 또는 Docker 컨테이너에 패키지된 사용자 지정 알고리즘을 사용하는 옵션을 제공합니다. 컨테이너는 동일한 기본 인스턴스에서 호스팅되므로 전체 지연 시간을 줄이고 비용을 최소화하는 데 도움이 됩니다.

다음 코드 조각은 여러 처리 단계와 모델을 결합하여 직렬 추론 파이프라인을 만드는 방법을 보여줍니다.

파이프라인의 일부로 사용할 Spark ML 및 XGBoost 기반 모델을 빌드하고 지정하는 것으로 시작합니다.

from sagemaker.model import Model
from sagemaker.pipeline_model import PipelineModel
from sagemaker.sparkml.model import SparkMLModel
sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
sparkml_model = SparkMLModel(model_data=sparkml_data)
xgb_model = Model(model_data=xgb_model.model_data, image=training_image)

그런 다음 모델은 파이프라인 모델 정의 내에서 순차적으로 정렬됩니다.

model_name = 'serial-inference-' + timestamp_prefix
endpoint_name = 'serial-inference-ep-' + timestamp_prefix
sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model])

그런 다음 호스트 ML 인스턴스의 유형과 수를 지정하여 실시간 추론을 위해 엔드포인트 뒤에 추론 파이프라인을 배포합니다.

sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)

조립된 전체 추론 파이프라인은 외부 사전 처리 없이 실시간 예측을 수행하거나 일괄 변환을 직접 처리하는 데 사용할 수 있는 SageMaker 모델로 간주될 수 있습니다. 추론 파이프라인 모델 내에서 SageMaker는 외부 응용 프로그램에서 시작되는 HTTP 요청 시퀀스로 호출을 처리합니다. 파이프라인의 첫 번째 컨테이너는 초기 요청을 처리하고 일부 처리를 수행한 다음 중간 응답을 파이프라인의 두 번째 컨테이너에 요청으로 전달합니다. 이것은 파이프라인의 각 컨테이너에 대해 발생하고 마지막으로 호출 클라이언트 애플리케이션에 최종 응답을 반환합니다.

SageMaker 추론 파이프라인은 완전히 관리됩니다. 파이프라인이 배포되면 SageMaker는 각 정의된 컨테이너를 설치하고 실행합니다. 아마존 엘라스틱 컴퓨트 클라우드 엔드포인트 또는 배치 변환 작업의 일부로 프로비저닝된 (Amazon EC2) 인스턴스. 또한 컨테이너가 같은 EC2 인스턴스에 함께 배치되고 호스팅되기 때문에 전체 파이프라인 지연 시간이 줄어듭니다.

SageMaker 추론 파이프라인을 사용하는 직렬 모델 앙상블

앙상블 모델은 여러 ML 모델이 결합되어 최종 추론을 생성하기 위한 추론 프로세스의 일부로 사용되는 ML의 접근 방식입니다. 앙상블 모델의 동기에는 정확도 향상, 특정 입력 기능에 대한 모델 민감도 감소, 단일 모델 편향 감소 등이 포함될 수 있습니다. 이 게시물에서는 여러 ML 모델이 직렬 추론 파이프라인의 일부로 순차적으로 결합되는 직렬 모델 앙상블과 관련된 사용 사례에 중점을 둡니다.

특정 테마 또는 주제를 기반으로 사용자가 업로드한 이미지를 그룹화해야 하는 직렬 모델 앙상블과 관련된 특정 예를 고려해 보겠습니다. 이 파이프라인은 세 가지 ML 모델로 구성될 수 있습니다.

  • 모델 1 – 이미지를 입력으로 받아들이고 이미지 해상도, 방향 등을 기반으로 이미지 품질을 평가합니다. 그런 다음 이 모델은 이미지 품질을 업스케일하려고 시도하고 특정 품질 임계값을 충족하는 처리된 이미지를 다음 모델(모델 2)로 보냅니다.
  • 모델 2 – Model 1을 통해 검증된 이미지를 수용하고 수행 이미지 인식 이미지에서 개체, 장소, 사람, 텍스트 및 기타 사용자 지정 작업과 개념을 식별합니다. 식별된 개체를 포함하는 모델 2의 출력이 모델 3으로 전송됩니다.
  • 모델 3 – 모델 2의 출력을 수락하고 주제를 기반으로 이미지를 그룹화하기 위한 주제 모델링과 같은 자연어 처리(NLP) 작업을 수행합니다. 예를 들어, 위치나 식별된 사람을 기준으로 이미지를 그룹화할 수 있습니다. 출력(그룹화)은 클라이언트 애플리케이션으로 다시 전송됩니다.

다음 다이어그램은 SageMaker 추론 파이프라인을 사용하여 직렬 모델 앙상블에서 호스팅되는 여러 ML 모델을 구현하는 방법에 대한 참조 패턴을 보여줍니다.

ml9154-모델 앙상블

앞서 논의한 바와 같이 SageMaker 추론 파이프라인이 관리되므로 ML 모델 선택 및 개발에 집중할 수 있는 동시에 직렬 앙상블 파이프라인 구축과 관련된 획일적인 무거운 작업을 줄일 수 있습니다.

또한, 모델 개발을 위한 디커플링, 알고리즘 및 프레임워크 선택, 배포와 관련하여 앞서 논의한 몇 가지 고려 사항도 여기와 관련이 있습니다. 예를 들어 각 모델은 별도의 컨테이너에서 호스팅되기 때문에 각 모델과 전체 사용 사례에 가장 적합한 ML 프레임워크를 유연하게 선택할 수 있습니다. 또한 분리 및 운영 관점에서 다른 모델에 영향을 주지 않고 개별 단계를 훨씬 더 쉽게 계속 업그레이드하거나 수정할 수 있습니다.

SageMaker 추론 파이프라인은 SageMaker 모델 레지스트리 일관된 운영 모범 사례를 지원하기 위해 모델 카탈로그, 버전 관리, 메타데이터 관리 및 프로덕션 환경에 대한 관리 배포를 위한 것입니다. SageMaker 추론 파이프라인은 다음과도 통합됩니다. 아마존 클라우드 워치 추론 파이프라인에서 다중 컨테이너 모델을 모니터링할 수 있습니다. 당신은 또한 가시성을 얻을 수 있습니다 실시간 측정항목 문제 해결 및 리소스 최적화에 도움이 되는 파이프라인의 각 컨테이너에 대한 호출 및 대기 시간을 더 잘 이해합니다.

SageMaker 추론 파이프라인을 사용하는 직렬 추론 파이프라인(그룹에서 대상 모델 호출 포함)

SageMaker 다중 모델 끝점 (MME)는 단일 엔드포인트 뒤에 다수의 ML 모델을 배포할 수 있는 비용 효율적인 솔루션을 제공합니다. 다중 모델 끝점을 사용하는 동기에는 요청 특성(예: 출처, 지리적 위치, 사용자 개인화 등)을 기반으로 특정 사용자 지정 모델을 호출하거나 단순히 비용 최적화를 달성하기 위해 동일한 끝점 뒤에 여러 모델을 호스팅하는 것이 포함될 수 있습니다.

단일 다중 모델 지원 엔드포인트에 여러 모델을 배포하면 모든 모델이 컴퓨팅 리소스와 모델 제공 컨테이너를 공유합니다. SageMaker 추론 파이프라인은 MME에 배포할 수 있습니다. 여기서 파이프라인의 컨테이너 중 하나는 호출되는 특정 모델을 기반으로 요청을 동적으로 처리할 수 있습니다. 파이프라인 관점에서 모델은 동일한 사전 처리 요구 사항을 갖고 동일한 기능 세트를 기대하지만 특정 동작에 맞게 훈련됩니다. 다음 다이어그램은 이 통합 파이프라인의 작동 방식에 대한 참조 패턴을 보여줍니다.

ml9154-mme

MME의 경우 클라이언트 애플리케이션에서 시작된 추론 요청은 호출해야 하는 대상 모델을 지정해야 합니다. 파이프라인의 첫 번째 컨테이너는 초기 요청을 처리하고 일부 처리를 수행한 다음 여러 모델을 호스팅하는 파이프라인의 두 번째 컨테이너에 요청으로 중간 응답을 디스패치합니다. 추론 요청에 지정된 대상 모델을 기반으로 모델이 호출되어 추론을 생성합니다. 생성된 추론은 추가 처리를 위해 파이프라인의 다음 컨테이너로 전송됩니다. 이는 파이프라인의 각 후속 컨테이너에 대해 발생하며 마지막으로 SageMaker는 호출 클라이언트 애플리케이션에 최종 응답을 반환합니다.

여러 모델 아티팩트가 S3 버킷에 유지됩니다. 특정 모델이 호출되면 SageMaker는 이를 엔드포인트를 호스팅하는 컨테이너에 동적으로 로드합니다. 모델이 이미 컨테이너의 메모리에 로드된 경우 SageMaker가 Amazon S3에서 모델을 다운로드할 필요가 없기 때문에 호출이 더 빠릅니다. 인스턴스 메모리 사용률이 높고 새 모델이 호출되어 로드해야 하는 경우 사용하지 않는 모델은 메모리에서 언로드됩니다. 그러나 언로드된 모델은 인스턴스의 스토리지 볼륨에 남아 있으며 S3 버킷에서 다시 다운로드하지 않고도 나중에 컨테이너의 메모리에 다시 로드할 수 있습니다.

MME를 사용하는 동안 주요 고려 사항 중 하나는 모델 호출 대기 시간 동작을 이해하는 것입니다. 앞에서 설명한 것처럼 모델은 호출될 때 엔드포인트를 호스팅하는 인스턴스의 컨테이너 메모리에 동적으로 로드됩니다. 따라서 모델 호출은 처음 호출될 때 더 오래 걸릴 수 있습니다. 모델이 이미 인스턴스 컨테이너의 메모리에 있으면 후속 호출이 더 빠릅니다. 인스턴스 메모리 사용률이 높고 새 모델을 로드해야 하는 경우 사용되지 않은 모델이 언로드됩니다. 인스턴스의 스토리지 볼륨이 가득 차면 사용하지 않은 모델이 스토리지 볼륨에서 삭제됩니다. SageMaker는 특정 작업을 수행할 필요 없이 모델의 로드 및 언로드를 완전히 관리합니다. 그러나 이 동작은 모델 호출 대기 시간과 전체 종단 간 대기 시간에 영향을 미치므로 이를 이해하는 것이 중요합니다.

파이프라인 호스팅 옵션

SageMaker는 여러 인스턴스 유형 사용 사례, 처리량 및 비용 요구 사항에 따라 ML 모델을 배포하고 추론 파이프라인을 구축하기 위해 선택할 수 있는 옵션입니다. 예를 들어 CPU 또는 GPU 최적화 인스턴스를 선택하여 단일 컨테이너 또는 여러 컨테이너에 직렬 추론 파이프라인을 구축할 수 있습니다. 그러나 추가적인 유연성을 위해 동일한 파이프라인 내에서 CPU 또는 GPU 기반 인스턴스에서 모델을 실행하기 위한 유연성과 지원이 필요한 경우가 있습니다.

이제 NVIDIA Triton Inference Server를 사용하여 이기종 컴퓨팅 요구 사항에 대해 SageMaker에서 추론을 위한 모델을 제공할 수 있습니다. 체크 아웃 Amazon SageMaker의 NVIDIA Triton 추론 서버로 빠르고 확장 가능한 AI 배포 자세한 내용은.

결론

조직이 ML로 구동되는 새로운 솔루션을 발견하고 구축함에 따라 이러한 파이프라인을 오케스트레이션하는 데 필요한 도구는 주어진 사용 사례를 기반으로 지원할 수 있을 만큼 충분히 유연해야 하며 진행 중인 운영 오버헤드를 단순화하고 줄여야 합니다. SageMaker는 요구 사항에 따라 이러한 직렬 추론 워크플로를 설계하고 구축할 수 있는 여러 옵션을 제공합니다.

직렬 추론 파이프라인을 사용하여 구축 중인 사용 사례에 대한 귀하의 의견을 기다립니다. 질문이나 피드백이 있으면 댓글로 공유해 주세요.


저자 소개

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 직렬 추론을 위한 설계 패턴입니다. 수직 검색. 일체 포함. 라훌 샤르마 AWS Data Lab의 수석 솔루션 아키텍트이며 AWS 고객이 AI/ML 솔루션을 설계하고 구축할 수 있도록 지원합니다. AWS에 합류하기 전에 Rahul은 금융 및 보험 부문에서 몇 년을 보내면서 고객이 데이터 및 분석 플랫폼을 구축하도록 지원했습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 직렬 추론을 위한 설계 패턴입니다. 수직 검색. 일체 포함. 아난드 프라 카쉬 AWS Data Lab의 수석 솔루션 아키텍트입니다. Anand는 고객이 AI/ML, 데이터 분석 및 데이터베이스 솔루션을 설계 및 구축하여 생산 경로를 가속화하도록 돕는 데 중점을 둡니다.

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

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 직렬 추론을 위한 설계 패턴입니다. 수직 검색. 일체 포함. 사우라브 트리칸데 Amazon SageMaker Inference의 수석 제품 관리자입니다. 그는 고객과 함께 일하고 기계 학습을 보다 쉽게 ​​이용할 수 있도록 하는 데 열정적입니다. 여가 시간에 Saurabh는 하이킹, 혁신적인 기술 학습, TechCrunch 팔로우, 가족과 시간 보내기를 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습