Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 앙상블 ML 모델을 실행하세요. 수직 검색. 일체 포함.

Amazon SageMaker에서 앙상블 ML 모델 실행

머신 러닝(ML)의 모델 배포는 점점 더 복잡해지고 있습니다. 하나의 ML 모델뿐만 아니라 앙상블 워크플로로 표현되는 대규모 ML 모델 그룹을 배포하려고 합니다. 이러한 워크플로는 여러 ML 모델로 구성됩니다. 다양한 성능 및 대기 시간 요구 사항을 준수해야 하기 때문에 이러한 ML 모델을 생산하는 것은 어렵습니다.

아마존 세이지 메이커 단일 인스턴스 앙상블 지원 트리톤 추론 서버. 이 기능을 사용하면 단일 인스턴스에 맞는 모델 앙상블을 실행할 수 있습니다. 무대 뒤에서 SageMaker는 Triton Inference Server를 활용하여 엔드포인트 뒤의 모든 인스턴스에서 앙상블을 관리하여 초저(한자리 밀리초) 추론 대기 시간으로 처리량과 하드웨어 활용을 극대화합니다. Triton을 사용하면 지원되는 광범위한 ML 프레임워크(TensorFlow, PyTorch, ONNX, XGBoost 및 NVIDIA TensorRT 포함)와 GPU, CPU 및 AWS 인 페렌 시아.

SageMaker의 이 기능을 사용하면 비용이 많이 드는 네트워크 대기 시간을 방지하고 앙상블 추론 파이프라인에 대한 컴퓨팅 및 데이터 지역성의 이점을 활용하여 워크로드를 최적화할 수 있습니다. 이 게시물에서는 Triton Inference Server 사용의 이점과 이것이 워크로드에 적합한 옵션인지에 대한 고려 사항에 대해 설명합니다.

솔루션 개요

Triton Inference Server는 팀이 GPU 또는 CPU 기반 인프라의 모든 프레임워크에서 훈련된 AI 모델을 배포, 실행 및 확장할 수 있도록 설계되었습니다. 또한 동적 일괄 처리, 동시 실행, 최적의 모델 구성, 모델 앙상블 기능 및 스트리밍 입력 지원과 같은 기능을 통해 대규모 고성능 추론을 제공하도록 최적화되었습니다.

워크로드는 모델이 제공될 수 있도록 Triton이 제공하는 기능을 고려해야 합니다. Triton은 TensorFlow, PyTorch, ONNX, XGBoost 및 NVIDIA TensorRT를 포함하여 즉시 사용 가능한 여러 프레임워크를 지원합니다. Triton은 다양한 백엔드도 지원합니다. 알고리즘이 제대로 실행되는 데 필요합니다. 이러한 백엔드가 모델을 지원하는지 확인해야 하며 백엔드가 지원하지 않는 경우 Triton을 사용하여 자체 구현하고 통합할 수 있습니다. 또한 알고리즘 버전이 지원되는지 확인하고 해당 백엔드에서 모델 아티팩트를 수용할 수 있는지 확인해야 합니다. 특정 알고리즘이 지원되는지 확인하려면 다음을 참조하십시오. Triton 추론 서버 백엔드 NVIDIA에서 유지 관리하는 기본적으로 지원되는 백엔드 목록은

기본적으로 지원되는 백엔드가 알고리즘에 존재하지 않는 경우와 같이 더 많은 노력이 필요하지 않으면 모델 또는 모델 앙상블이 Triton에서 작동하지 않는 몇 가지 시나리오가 있을 수 있습니다. 특히 페이로드 크기가 요청에 비해 클 수 있는 경우 페이로드 형식이 이상적이지 않을 수 있는 것과 같이 고려해야 할 몇 가지 다른 고려 사항이 있습니다. 항상 그렇듯이 이러한 워크로드를 배포한 후 성능을 검증하여 기대치가 충족되었는지 확인해야 합니다.

이미지 분류 신경망 모델을 사용하여 워크로드를 가속화할 수 있는 방법을 살펴보겠습니다. 이 예에서는 NVIDIA DALI 백엔드를 사용하여 앙상블 컨텍스트에서 사전 처리를 가속화합니다.

Triton 모델 앙상블 생성

Triton Inference Server는 대규모 AI 모델 배포를 단순화합니다. Triton Inference Server는 전처리 및 후처리 파이프라인 구축을 간소화하는 편리한 솔루션과 함께 제공됩니다. Triton Inference Server 플랫폼은 효율성을 보장하고 처리량을 최적화하면서 추론 프로세스에 참여하는 파이프라이닝 앙상블 모델을 구축하는 데 사용할 수 있는 앙상블 스케줄러를 제공합니다.

Triton Inference Server는 모델 리포지토리에서 모델을 제공합니다. DALI 전처리 모델, TensorFlow 시작 V3 모델 및 모델 앙상블 구성을 포함하는 앙상블 모델의 모델 저장소 레이아웃을 살펴보겠습니다. 각 하위 디렉토리에는 해당 모델에 대한 리포지토리 정보가 포함되어 있습니다. 그만큼 config.pbtxt 파일은 모델에 대한 모델 구성을 설명합니다. 각 디렉토리에는 모델의 각 버전에 대해 하나의 숫자 하위 폴더가 있어야 하며 Triton이 지원하는 특정 백엔드에서 실행됩니다.

NVIDIA Triton 모델 리포지토리

엔비디아 달리

이 게시물에서는 모델 앙상블에서 전처리 모델로 NVIDIA DALI(데이터 로딩 라이브러리)를 사용합니다. NVIDIA DALI는 딥 러닝 애플리케이션을 가속화하기 위한 데이터 로딩 및 전처리를 위한 라이브러리입니다. 이미지, 비디오 및 오디오 데이터를 로드하고 처리하기 위해 최적화된 빌딩 블록 모음을 제공합니다. 널리 사용되는 딥 러닝 프레임워크에서 내장 데이터 로더 및 데이터 반복기에 대한 이식 가능한 드롭인 대체품으로 사용할 수 있습니다.

엔비디아 달리

다음 코드는 DALI 백엔드에 대한 모델 구성을 보여줍니다.

name: "dali"
backend: "dali"
max_batch_size: 256
input [
  {
    name: "DALI_INPUT_0"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "DALI_OUTPUT_0"
    data_type: TYPE_FP32
    dims: [ 299, 299, 3 ]
  }
]
parameters: [
  {
    key: "num_threads"
    value: { string_value: "12" }
  }
]

인셉션 V3 모델

이 게시물에서는 Inception V3의 모델 앙상블에서 DALI를 사용하는 방법을 보여줍니다. Inception V3 TensorFlow 사전 훈련된 모델은 GraphDef 형식으로 이름이 지정된 단일 파일로 저장됩니다. model.graphdef. 그만큼 config.pbtxt 파일에는 모델 이름, 플랫폼, max_batch_size, 입력 및 출력 계약. 설정하는 것이 좋습니다. max_batch_size 초기 V3 모델 배치 크기보다 작게 구성합니다. 레이블 파일에는 1,000개의 다른 클래스에 대한 클래스 레이블이 있습니다. 시작 분류 모델 레이블을 복사합니다. inception_graphdef 모델 리포지토리의 디렉터리입니다. 레이블 파일에는 1,000개의 클래스 레이블이 포함되어 있습니다. IMAGEnet 분류 데이터 세트.

name: "inception_graphdef"
platform: "tensorflow_graphdef"
max_batch_size: 256
input [
  {
    name: "input"
    data_type: TYPE_FP32
    format: FORMAT_NHWC
    dims: [ 299, 299, 3 ]
  }
]
output [
  {
    name: "InceptionV3/Predictions/Softmax"
    data_type: TYPE_FP32
    dims: [ 1001 ]
    label_filename: "inception_labels.txt"
  }
]

트리톤 앙상블

다음 코드는 DALI 전처리 및 이미지 분류를 위한 앙상블 모델의 모델 구성을 보여줍니다.

name: "ensemble_dali_inception"
platform: "ensemble"
max_batch_size: 256
input [
  {
    name: "INPUT"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "OUTPUT"
    data_type: TYPE_FP32
    dims: [ 1001 ]
  }
]
ensemble_scheduling {
  step [
    {
      model_name: "dali"
      model_version: -1
      input_map {
        key: "DALI_INPUT_0"
        value: "INPUT"
      }
      output_map {
        key: "DALI_OUTPUT_0"
        value: "preprocessed_image"
      }
    },
    {
      model_name: "inception_graphdef"
      model_version: -1
      input_map {
        key: "input"
        value: "preprocessed_image"
      }
      output_map {
        key: "InceptionV3/Predictions/Softmax"
        value: "OUTPUT"
      }
    }
  ]
}

SageMaker 엔드포인트 생성

SageMaker 끝점 밀리초 응답 시간이 필요한 실시간 호스팅을 허용합니다. SageMaker는 모델 호스팅 관리의 차별화되지 않은 무거운 작업을 수행하고 자동 확장 기능이 있습니다. 또한 모델의 여러 변형 호스팅, 모델의 A/B 테스트, 아마존 클라우드 워치 모델 성능의 관찰 가능성을 확보하고 모델 드리프트를 모니터링합니다.

업로드한 모델 아티팩트에서 SageMaker 모델을 생성해 보겠습니다. 아마존 단순 스토리지 서비스 (아마존 S3).

다음으로 추가 환경 변수도 제공합니다. SAGEMAKER_TRITON_DEFAULT_MODEL_NAME, Triton이 로드할 모델의 이름을 지정합니다. 이 키의 값은 Amazon S3에 업로드된 모델 패키지의 폴더 이름과 일치해야 합니다. 이 변수는 단일 모델을 사용하는 경우 선택 사항입니다. 앙상블 모델의 경우 SageMaker에서 Triton을 시작하려면 이 키를 지정해야 합니다.

또한 다음을 설정할 수 있습니다. SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNTSAGEMAKER_TRITON_THREAD_COUNT 스레드 수를 최적화하기 위해.

container = {
    "Image": triton_image_uri,
    "ModelDataUrl": model_uri,
    "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "ensemble_dali_inception"},
}
create_model_response = sm_client.create_model(
    ModelName=sm_model_name, ExecutionRoleArn=role, PrimaryContainer=container
)

이전 모델을 사용하여 엔드포인트에서 원하는 인스턴스의 유형과 수를 지정할 수 있는 엔드포인트 구성을 생성합니다.

create_endpoint_config_response = sm_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "InstanceType": instance_type,
            "InitialVariantWeight": 1,
            "InitialInstanceCount": 1,
            "ModelName": sm_model_name,
            "VariantName": "AllTraffic",
        }
    ],
)
endpoint_config_arn = create_endpoint_config_response["EndpointConfigArn"]

이 끝점 구성을 사용하여 새 SageMaker 끝점을 만들고 배포가 완료될 때까지 기다립니다. 배포가 성공하면 상태가 InService로 변경됩니다.

create_endpoint_response = sm_client.create_endpoint(
    EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name
)
endpoint_arn = create_endpoint_response["EndpointArn"]

추론 페이로드

입력 페이로드 이미지는 전처리 DALI 파이프라인을 거치며 Triton Inference Server에서 제공하는 앙상블 스케줄러에서 사용됩니다. 추론 끝점에 전달할 페이로드를 구성합니다.

payload = {
    "inputs": [
        {
            "name": "INPUT",
            "shape": rv2.shape,
            "datatype": "UINT8",
            "data": rv2.tolist(),
        }
    ]
}

앙상블 추론

엔드포인트가 실행 중이면 샘플 이미지를 사용하여 JSON을 페이로드 형식으로 사용하여 추론 요청을 수행할 수 있습니다. 추론 요청 형식의 경우 Triton은 KFServing 커뮤니티 표준 추론 프로토콜을 사용합니다.

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name, ContentType="application/octet-stream", Body=json.dumps(payload)
)
print(json.loads(response["Body"].read().decode("utf8")))

와 더불어 binary+json 형식에서 Triton이 바이너리 페이로드를 올바르게 구문 분석할 수 있도록 헤더에 요청 메타데이터의 길이를 지정해야 합니다. 이것은 사용자 정의 Content-Type 헤더를 사용하여 수행됩니다. application/vnd.sagemaker-triton.binary+json;json-header-size={}.

이것은 사용하는 것과 다릅니다. Inference-Header-Content-Length 사용자 정의 헤더는 SageMaker에서 허용되지 않기 때문에 독립형 Triton 서버에서 헤더.

tritonclient 패키지는 사양의 세부 사항을 알 필요 없이 페이로드를 생성하는 유틸리티 메서드를 제공합니다. 다음 방법을 사용하여 추론 요청을 이진 형식으로 변환하여 추론을 위한 더 짧은 대기 시간을 제공합니다. GitHub 참조 수첩 구현 세부 사항을 위해.

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType="application/vnd.sagemaker-triton.binary+json;json-header-size={}".format(
        header_length
    ),
    Body=request_body,
)

결론

이 게시물에서는 SageMaker의 단일 인스턴스에서 실행되는 모델 앙상블을 생산하는 방법을 보여주었습니다. 이 디자인 패턴은 추론 예측과 함께 전처리 및 후처리 논리를 결합하는 데 유용할 수 있습니다. SageMaker는 Triton을 사용하여 모든 주요 프레임워크를 지원하는 인스턴스의 단일 컨테이너에서 앙상블 추론을 실행합니다.

SageMaker의 Triton 앙상블에 대한 더 많은 샘플은 다음을 참조하십시오. GitHub 레포. 사용해보십시오!


저자에 관하여

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 앙상블 ML 모델을 실행하세요. 수직 검색. 일체 포함.제임스 파크 Amazon Web Services의 솔루션 아키텍트입니다. 그는 Amazon.com과 협력하여 AWS에서 기술 솔루션을 설계, 구축 및 배포하며 특히 AI 및 기계 학습에 관심이 있습니다. 여가 시간에는 새로운 문화, 새로운 경험을 찾고 최신 기술 동향을 파악하는 것을 즐깁니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 앙상블 ML 모델을 실행하세요. 수직 검색. 일체 포함.비크람 엘랑고 미국 버지니아에 위치한 Amazon Web Services의 수석 AI/ML 전문가 솔루션 아키텍트입니다. Vikram은 설계 및 사고 리더십을 갖춘 금융 및 보험 업계 고객이 기계 학습 애플리케이션을 대규모로 구축 및 배포할 수 있도록 지원합니다. 그는 현재 자연어 처리, 책임 있는 AI, 추론 최적화 및 기업 전반에 걸친 ML 확장에 중점을 두고 있습니다. 여가 시간에는 가족과 함께 여행, 하이킹, 요리, 캠핑을 즐깁니다.

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

타임 스탬프 :

더보기 AWS 기계 학습