아마존 SageMaker 엘라스틱 인퍼런스 (EI) 사용 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존 SageMaker 엘라스틱 인퍼런스 (EI) 사용

2023년 4월 15일부터는 AWS에서 신규 고객을 Amazon Elastic Inference(EI)에 온보딩하지 않으며 기존 고객이 더 나은 가격 및 성능을 제공하는 옵션으로 워크로드를 마이그레이션하도록 지원할 예정입니다. 2023년 4월 15일 이후, 신규 고객은 아마존 SageMaker, 아마존 ECS 또는 아마존 EC2에서 Amazon EI 액셀러레이터를 사용하는 인스턴스를 시작할 수 없게 됩니다.

기계 학습 (ML) AWS on은 저렴한 유료 사용 모델에서 제공되는 가장 포괄적인 ML 서비스 및 인프라 세트를 통해 혁신을 가속화하는 데 도움이 됩니다. as-you-go AWSML 추론 워크로드를 위한 더 나은 성능과 더 저렴한 인프라를 지속적으로 제공합니다. AWS2018년에 Amazon Elastic Inference (EI) 를 출시하여 고객이 Amazon EC2, Amazon SageMaker 인스턴스 또는 Amazon Elastic Container Service (ECS) 작업에 저비용 GPU 기반 가속을 추가하여 Amazon EC2 P4d 및 Amazon EC2 G5와 같은 독립형 GPU 기반 인스턴스에 비해 딥 러닝 추론 실행 비용을 최대 75% 절감할 수 있도록 했습니다. 2019년에는 AWS은 클라우드에서 고성능 추론을 제공하여 딥 러닝 워크로드를 가속화하도록 설계된 Amazon 최초의 맞춤형 실리콘인 AWS Inferentia를 출시했습니다. AWS Inferentia 칩을 기반으로 하는 Amazon EC2 Inf1 인스턴스는 동급의 현재 세대 GPU 기반 Amazon EC2 인스턴스보다 최대 2.3배 높은 처리량과 최대 70% 낮은 추론당 비용을 제공합니다. AWS Inferentia 및 Amazon EC2 G5 인스턴스와 같은 새로운 가속화된 컴퓨팅 옵션을 이용할 수 있으므로 Amazon EI를 사용하여 CPU 호스트 인스턴스에 단편적인 GPU를 연결할 때의 이점이 줄어들었습니다. 예를 들어 Amazon EI에서 모델을 호스팅하는 고객이 ml.inf1.xlarge 인스턴스로 전환하면 최대 56% 의 비용 절감과 2배의 성능 향상을 얻을 수 있습니다.

고객은 Amazon SageMaker 추론 추천기를 사용하여 ML 모델 배포를 위한 Amazon EI의 가장 좋은 대체 인스턴스를 선택하는 데 도움을 받을 수 있습니다.

자주 묻는 질문

  1. 아마존이 고객에게 Amazon Elastic Inference(EI)에서 AWS Inferentia와 같은 최신 하드웨어 가속화 옵션으로 워크로드를 이전하도록 권장하는 이유는 무엇입니까?

    고객은 추론 워크로드를 위한 AWS Inferentia와 같은 새로운 하드웨어 액셀러레이터 옵션을 통해 Amazon EI보다 훨씬 저렴한 가격으로 더 나은 성능을 얻을 수 있습니다. AWS Inferentia는 클라우드에서 고성능 추론을 제공하고, 총 추론 비용을 절감하고, 개발자가 기계 학습을 비즈니스 애플리케이션에 쉽게 통합할 수 있도록 설계되었습니다. 고객이 이러한 차세대 하드웨어 액셀러레이터의 혜택을 누릴 수 있도록 2023년 4월 15일 이후에는 Amazon EI에 신규 고객을 초대하지 않을 예정입니다.

  2. Amazon Elastic Inference(EI)에 신규 고객을 온보딩하는 것을 중단하기로 한 조치로 인해 영향을 받는 AWS 서비스는 무엇입니까?

    이번 발표는 모든 Amazon EC2, Amazon 인스턴스 또는 아마존 엘라스틱 컨테이너 서비스 (ECS) 작업에 연결된 Amazon EI 액셀러레이터에 영향을 미칩니다. SageMaker SageMakerAmazon에서는 Amazon EI 가속기를 사용하는 엔드포인트와 노트북 커널 모두에 적용됩니다.

  3. 2023년 4월 15일 이후에 새로운 Amazon Elastic Inference(EI) 액셀러레이터를 생성할 수 있습니까?

    아니요. 신규 고객이고 지난 30일간 Amazon EI를 사용하지 않았다면 2023년 4월 15일 이후에는 AWS 계정에서 새 Amazon EI 인스턴스를 생성할 수 없습니다. 하지만 지난 30일 동안 Amazon EI 액셀러레이터를 한 번 이상 사용한 적이 있다면 새 Amazon EI 액셀러레이터를 인스턴스에 연결할 수 있습니다.

  4. 현재 Amazon SageMaker 추론 엔드포인트의 대체 인스턴스 옵션을 평가하려면 어떻게 해야 합니까?

    Amazon SageMaker Inference Recommender는 Amazon Elastic Inference (EI) 에서 지원하는 적절한 ML 인스턴스로 기존 워크로드를 마이그레이션하기 위한 비용 효율적인 배포를 식별하는 데 도움이 될 수 있습니다. SageMaker

  5. Amazon에 있는 기존 엔드포인트의 인스턴스 유형을 변경하려면 어떻게 해야 합니까 SageMaker?

    다음을 수행하여 기존 엔드포인트의 인스턴스 유형을 변경할 수 있습니다.

    1. 먼저 새 인스턴스 유형을 EndpointConfig 사용하는 새 인스턴스를 생성합니다. 자동 크기 조정(autoscaling) 정책이 있는 경우 기존 자동 크기 조정 정책을 삭제하십시오.

    2. 새로 만든 항목을 UpdateEndpoint지정하면서 호출하세요 EndpointConfig.

    3. 엔드포인트의 상태가 InService로 변경될 때까지 기다립니다. 약 10~15분 정도 소요됩니다.

    4. 마지막으로, 새 엔드포인트에 대한 자동 크기 조정이 필요한 경우 이 새 엔드포인트에 대한 새 자동 크기 조정 정책을 생성하고. ProductionVariant

  6. Amazon Elastic Inference (EI) 를 사용하여 기존 아마존 SageMaker 노트북 인스턴스의 인스턴스 유형을 변경하려면 어떻게 해야 합니까?

    SageMaker 콘솔에서 Notebook 인스턴스를 선택한 다음 업데이트하려는 노트북 인스턴스를 선택합니다. 노트북 인스턴스에 Stopped 상태에 있는지 확인하십시오. 마지막으로 Edit(편집)을 선택하고 인스턴스 유형을 변경할 수 있습니다. 노트북 인스턴스를 시작할 때 새 인스턴스에 적합한 커널을 선택했는지 확인하십시오.

  7. Amazon Elastic Inference(EI)의 좋은 대안으로 사용할 수 있는 특정 인스턴스 유형이 있습니까?

    모든 기계 학습 워크로드는 고유합니다. ML 워크로드, 성능 요구 사항 및 예산에 적합한 인스턴스 유형을 식별하는 데 도움이 되도록 Amazon SageMaker Inference Recommender를 사용하는 것이 좋습니다. AWS Inferentia, 특히 inf1.xlarge는 Amazon EI 고객을 위한 최고의 고성능 및 저비용 대안입니다.

Amazon Elastic Inference에서 다른 인스턴스로 마이그레이션하기

다음 정보는 Amazon Elastic Inference 가속기를 사용하는 인스턴스에서 다른 인스턴스로 SageMaker 호스팅된 엔드포인트를 마이그레이션하는 데 도움이 될 수 있습니다. 권장 사항은 프레임워크에 따라 다릅니다.

PyTorch

에서 PyTorch 마이그레이션하는 경우 다음 지침을 사용하십시오.

1: 적절한 인스턴스 유형 선택

모든 기계 학습 워크로드는 고유합니다. ML 워크로드, 성능 요구 사항 및 예산에 적합한 인스턴스 유형을 식별하는 데 도움이 되도록 Amazon SageMaker Inference Recommender를 사용하는 것이 좋습니다. AWS Inferentia, 특히 inf1.xlarge는 Amazon Elastic Inference 고객을 위한 최고의 고성능 및 저비용 대안입니다.

Inference Recommender를 사용한 부하 테스트에서 g4dn.xlarge 인스턴스는 eia.2large가 연결된 m5.large 인스턴스보다 성능이 더 좋았습니다. Amazon Elastic Inference를 사용하면 액셀러레이터가 연결된 ML 인스턴스에 대한 추가 비용을 지불해야 합니다. 또한 아마존 엘라스틱 인퍼런스는 PyTorch 1.5와 TensorFlow 2.3만 지원합니다. ml.g4dn인스턴스로 마이그레이션하는 경우 최신 버전의 PyTorch 1.11 및 TensorFlow 2.9를 사용할 수 있습니다. 또한 ml.g4dn 및 AWS Inferencia는 모든 AWS 지역에서 사용할 수 있는 반면, Amazon Elastic Inference는 6개 지역에서만 사용할 수 있습니다. AWS Inferentia와 ml.g4dn 둘 다 대부분의 ML 추론 워크로드에 대해 더 저렴한 가격으로 더 나은 성능을 제공합니다.

2. inference.py 수정

Elastic Inference와 관련된 특정 변경 사항을 모두 제거하고 기본 핸들러를 사용하도록 inference.py 파일을 수정합니다. 사용자 사례에 따라 입력 및 출력 핸들러가 다를 수 있지만, 주요 변경 사항은 모델 로드 핸들러 함수 model_fnpredict_fn입니다. Elastic Inference 특정의 예측 핸들러 predict_fn을 제거하고 모델 로드 핸들러 model_fn을 기본 형식으로 복원합니다. 다음 예에서는 이 작업을 수행하는 방법을 보여줍니다. inference.py에서 제거해야 하는 부분을 실행 제외 처리하였습니다.

from __future__ import print_function import os import torch import torch.nn as nn import torch.nn.functional as F import numpy as np def model_fn(model_dir, context): model = {customer_model} # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # loaded_model = loaded_model.eval() # loaded_model = torcheia.jit.attach_eia(loaded_model, 0) with open(os.path.join(model_dir, 'model.pth'), 'rb') as f: model.load_state_dict(torch.load(f)) return model # def predict_fn(input_data, model): # logger.info( # "Performing EIA inference with Torch JIT context with input of size {}".format( # input_data.shape # ) # ) # device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # input_data = input_data.to(device) # with torch.no_grad(): # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # # torch._C._jit_set_profiling_executor(False) # with torch.jit.optimized_execution(True): # return model.forward(input_data) # else: # with torch.jit.optimized_execution(True, {"target_device": "eia:0"}): # return model(input_data) def predict_fn(input_data, model): return model(input_data)

3. 모델 생성

수정된 inference.py 파일을 가리키는 새 모델을 생성합니다. inference.py 파일을 로컬에 보관하고 source_direntry_point을 지정하여 이를 가리키거나 inference.py 파일을 모델 tarball에 tar 합니다. 다음 예제는 전자의 사례를 보여줍니다.

from sagemaker.pytorch import PyTorchModel pytorch = PyTorchModel( model_data={model_data_url}, role=role, entry_point="inference.py", source_dir="code", framework_version="1.5.1", py_version="py3", sagemaker_session=sagemaker_session, )

4. 모델을 엔드포인트에 배포하고 호출

위의 변경을 수행한 후 다음 옵션 중 하나를 사용하여 모델을 배포할 수 있습니다.

옵션 1: 처음부터 배포

G4와 같은 액셀러레이티드 컴퓨팅 범주의 권장 인스턴스를 사용하여 새 엔드포인트에 모델을 배포할 수 있습니다.

predictor = pytorch.deploy( ... # instance_type = "ml.c5.xlarge", instance_type="ml.g4dn.2xlarge", ... response = predictor.predict(payload)

옵션 2: 기존 엔드포인트 업데이트

기존 엔드포인트를 업데이트하려면 다음 단계를 수행합니다.

  1. CreateEndpointConfig을 호출하여 새 인스턴스 유형을 사용하는 새 EndpointConfig을 생성합니다. 자동 크기 조정(autoscaling) 정책이 있는 경우 기존 자동 크기 조정 정책을 삭제하십시오.

    endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", # The name of the production variant. "ModelName": model_name, # The name of new created model "InstanceType": instance_type, # Specify the right-sized instance type. "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )
  2. UpdateEndpoint를 호출하고 새로 만든 EndpointConfig를 지정합니다.

    endpoint_config_response = sagemaker_client.update_endpoint( EndpointConfigName=endpoint_config_name, # The name of the new endpoint config just created EndpointName=endpoint_name # The name of the existing endpoint you want to update )
  3. 엔드포인트의 상태가 InService로 변경될 때까지 기다립니다. 약 10~15분 정도 소요됩니다.

  4. 마지막으로, 새 엔드포인트에 대한 자동 크기 조정이 필요한 경우 이 새 엔드포인트와 ProductionVariant에 대한 새 자동 크기 조정 정책을 생성하십시오.

TensorFlow

에서 TensorFlow 마이그레이션하는 경우 다음 지침을 사용하십시오.

1: 적절한 인스턴스 유형 선택

1.을 참조하십시오. PyTorch 섹션에서 적절한 인스턴스 유형 지침을 선택하십시오.

2. 모델을 엔드포인트에 배포하고 호출

다음 옵션 중 하나를 사용하여 모델을 배포할 수 있습니다.

옵션 1: 처음부터 배포

accelerator_type 필드를 제거하고 액셀러레이티드 컴퓨팅 범주(예: G4)에서 적절한 크기의 인스턴스 유형을 지정하여 모델을 새 엔드포인트로 재배포함으로써 Elastic Inference에서 마이그레이션할 수 있습니다. 다음 예제에서 실행 제외 처리된 줄이 Elastic Inference 액셀러레이터를 사용하지 않고 배포할 수 있게 합니다.

predictor = tensorflow_model.deploy( ... instance_type="ml.g4dn.2xlarge" # instance_type="ml.c5.xlarge", # accelerator_type="ml.eia1.medium" ... )

옵션 2: 기존 엔드포인트 업데이트

옵션 2를 참조하십시오. PyTorch 섹션의 4단계에서 기존 엔드포인트 지침을 업데이트하십시오.

MXNet

MXNet에서 마이그레이션하는 경우 다음 지침을 사용하십시오.

1: 적절한 인스턴스 유형 선택

1.을 참조하십시오. PyTorch 섹션에서 적절한 인스턴스 유형 지침을 선택하십시오.

2. 모델을 엔드포인트에 배포하고 호출

다음 옵션 중 하나를 사용하여 모델을 배포할 수 있습니다.

옵션 1: 처음부터 배포

accelerator_type 필드를 제거하고 액셀러레이티드 컴퓨팅 범주(예: G4)에서 적절한 크기의 인스턴스 유형을 지정하여 모델을 새 엔드포인트로 재배포함으로써 Elastic Inference에서 마이그레이션할 수 있습니다. 다음 예제에서 실행 제외 처리된 줄이 Elastic Inference 액셀러레이터를 사용하지 않고 배포할 수 있게 합니다.

predictor = mxnet_model.deploy( ... # instance_type="ml.c5.xlarge", instance_type="ml.g4dn.2xlarge" ... )

옵션 2: 기존 엔드포인트 업데이트

PyTorch 섹션의 4단계에 있는 옵션 2: 기존 엔드포인트 업데이트 지침을 참조하십시오.

EI 액셀러레이터 유형 선택

호스팅된 모델에 대한 액셀러레이터 유형을 선택할 때는 다음 요인을 고려하십시오.

  • 모델, 입력 텐서 및 배치 크기는 필요한 액셀러레이터 메모리 양에 영향을 미칩니다. 최소한 훈련된 모델의 파일 크기와 같은 양의 메모리를 제공하는 액셀러레이터 유형으로 시작합니다. 모델이 실행 시간에 파일 크기보다 훨씬 많은 메모리를 사용할 수 있다는 점을 고려합니다.

  • CPU 컴퓨팅 리소스, 기본 시스템 메모리, GPU 기반 가속 및 액셀러레이터 메모리에 대한 요구는 딥 러닝 모델의 종류에 따라 크게 다릅니다. 또한 애플리케이션의 지연 시간 및 처리량 요구 사항에 따라 필요한 컴퓨팅 및 가속의 양이 결정됩니다. 인스턴스 유형과 EI 액셀러레이터의 다양한 구성을 철저하게 테스트하여 애플리케이션의 성능 필요에 가장 적합한 구성을 선택해야 합니다.

EI 액셀러레이터 선택에 대한 자세한 내용은 다음을 참조하십시오.

노트북 인스턴스에서 EI 사용 SageMaker

일반적으로 프로덕션에 배포하기 전에 SageMaker 노트북에서 기계 학습 모델을 빌드하고 테스트합니다. 노트북 인스턴스를 생성할 때 EI를 노트북 인스턴스에 연결할 수 있습니다. MXNet에서 지원하는 로컬 모드와 Amazon SageMaker Python SDK의 추정기 PyTorch 및 모델을 사용하여 추론 성능을 테스트함으로써 TensorFlow 노트북 인스턴스에 로컬로 호스팅되는 엔드포인트를 설정할 수 있습니다. Elastic Inference PyTorch 활성화는 현재 노트북 인스턴스에서 지원되지 않습니다. EI를 노트북 인스턴스에 연결하고 추론을 위해 로컬 엔드포인트를 설정하는 방법에 대한 지침은 노트북 인스턴스에 EI 연결 단원을 참조하십시오. 엘라스틱 추론 지원 버전용 엘라스틱 추론 지원 SageMaker 노트북 Jupyter 커널과 Apache MXnet도 있습니다. TensorFlow SageMaker 노트북 인스턴스 사용에 대한 자세한 내용은 Amazon SageMaker Notebook 인스턴스 사용을 참조하십시오.

호스팅된 엔드포인트에서 EI 사용

추론을 제공하기 위해 프로덕션용으로 모델을 배포할 준비가 되면 SageMaker 호스팅된 엔드포인트를 생성합니다. 엔드포인트가 호스팅된 인스턴스에 EI를 연결하여 추론 제공 시 성능을 향상할 수 있습니다. 호스팅된 엔드포인트 인스턴스에 EI를 연결하는 방법에 대한 지침은 Amazon SageMaker 호스팅 엔드포인트에서 EI 사용 단원을 참조하십시오.

EI를 지원하는 프레임워크

Amazon Elastic Inference는 Apache MXnet 또는 AWS 기계 학습 TensorFlow 프레임워크의 향상된 버전과 함께 사용하도록 설계되었습니다. PyTorch 이러한 향상된 버전의 프레임워크는 Amazon SageMaker Python SDK를 사용할 때 컨테이너에 자동으로 구축되거나, 바이너리 파일로 다운로드하여 자체 Docker 컨테이너로 가져올 수 있습니다.

공개 amazonei-tensorflow Amazon S3 버킷에서 제공 컨테이너로 EI 지원 TensorFlow 바이너리 파일을 다운로드할 수 있습니다. TensorFlow EI 지원 버전을 사용하는 컨테이너를 구축하는 방법에 대한 자세한 내용은 in을 사용한 Amazon Elastic TensorFlow Inference를 참조하십시오. TensorFlow SageMaker

EI 지원 MXNet 바이너리 파일을 퍼블릭 amazonei-apachemxnet Amazon S3 버킷에서 MXNet Serving 컨테이너로 다운로드할 수 있습니다. EI 지원 버전의 MXNet을 사용하는 컨테이너를 구축하는 방법에 대한 자세한 내용은 MXNet을 사용한 Amazon Elastic Inference를 참조하십시오. SageMaker

에 대한 Elastic Inference가 활성화된 바이너리를 다운로드할 수 있습니다. PyTorch EI 지원 버전을 사용하는 컨테이너를 구축하는 방법에 대한 자세한 내용은 in을 사용한 Amazon Elastic PyTorch Inference를 참조하십시오. PyTorch SageMaker

호스팅된 엔드포인트에서 Elastic Inference를 사용하려면 필요에 따라 다음 프레임워크 중 하나를 선택할 수 있습니다.

복잡하고 SageMaker 사전 빌드된 컨테이너가 지원하지 않는 프레임워크에 대한 확장이 필요한 모델을 배포하기 위해 사용자 지정 컨테이너를 만들어야 하는 경우 Python용 저수준 AWS SDK (Boto 3) 를 사용하세요.

내장 알고리즘과 함께 EI를 사용하세요. SageMaker

현재 이미지 분류 - MXNet객체 감지 - MXNet 내장 알고리즘은 EI를 지원합니다. EI와 함께 이미지 분류 알고리즘을 사용하는 예제는 종단 간 멀티클래스 이미지 분류 예제를 참조하십시오.

EI 샘플 노트북

다음 샘플 노트북은 EI를 사용하는 예를 제공합니다. SageMaker