PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.

PyTorch Model Zoo를 사용하여 Amazon SageMaker 모델 생성

배치 또는 실시간 추론을 수행하기 위해 고품질의 훈련된 기계 학습(ML) 모델을 배포하는 것은 고객에게 가치를 제공하는 데 중요한 부분입니다. 그러나 ML 실험 프로세스는 지루할 수 있습니다. 구현하는 데 상당한 시간이 필요한 접근 방식이 많이 있습니다. 이것이 바로 사전 훈련된 ML 모델이 제공되는 이유입니다. PyTorch 모델 동물원 너무 도움이됩니다. 아마존 세이지 메이커 다양한 ML 모델을 실험할 수 있는 통합 인터페이스를 제공하고 PyTorch Model Zoo를 사용하면 표준화된 방식으로 모델을 쉽게 교체할 수 있습니다.

이 블로그 게시물은 SageMaker 내의 PyTorch Model Zoo에서 객체 감지 모델을 사용하여 ML 추론을 수행하는 방법을 보여줍니다. PyTorch Model Zoo의 사전 학습된 ML 모델은 기성품이며 ML 애플리케이션의 일부로 쉽게 사용할 수 있습니다. 이러한 ML 모델을 SageMaker 엔드포인트로 설정하거나 SageMaker 일괄 변환 이 블로그 게시물에 설명된 단계를 통해 온라인 또는 오프라인 추론 작업을 쉽게 수행할 수 있습니다. 우리는 빠른 R-CNN 미리 정의된 객체 클래스에 대한 경계 상자를 예측하는 객체 감지 모델.

Faster R-CNN 객체 감지 모델 가중치를 로드하는 것부터 가중치를 Amazon Simple Storage Service(Amazon S3) 버킷, 진입점 파일 작성 및 PyTorchModel API의 주요 매개변수 이해. 마지막으로 ML 모델을 배포하고 SageMaker Batch Transform을 사용하여 추론을 수행하고 ML 모델 출력을 검사하고 결과를 해석하는 방법을 알아봅니다. 이 솔루션은 PyTorch Model Zoo에서 사전 훈련된 다른 모델에 적용할 수 있습니다. 사용 가능한 모델 목록은 다음을 참조하십시오. PyTorch 모델 동물원 문서.

솔루션 개요

이 블로그 게시물은 다음 단계를 거칩니다. 모든 단계의 전체 작업 버전은 다음을 참조하세요. create_pytorch_model_sagemaker.ipynb

  • 1단계: 설정
  • 2단계: PyTorch Model Zoo에서 ML 모델 로드
  • 3단계 Amazon S3에 ML 모델 아티팩트 저장 및 업로드
  • 4단계: ML 모델 추론 스크립트 빌드
  • 5단계: SageMaker 일괄 변환 작업 실행
  • 6단계: 결과 시각화

아키텍처 다이어그램

디렉토리 구조

이 블로그의 코드는 다음에서 찾을 수 있습니다. GitHub 저장소. 코드베이스에는 ML 모델 아티팩트를 빌드하고 변환 작업을 시작하고 결과를 시각화하는 데 필요한 모든 것이 포함되어 있습니다.

이것이 우리가 사용하는 작업 흐름입니다. 다음 단계는 모두 이 구조의 모듈을 참조합니다.

sagemaker_pytorch_model_zoo --> root directory
    |- inference.py --> entry point file
    |- create_pytorch_model_sagemaker.ipynb --> walks through all steps in this blog post
    |- cars.jpg --> input image

XNUMXD덴탈의 sagemaker_torch_model_zoo 폴더는 포함해야합니다 inference.py 진입점 파일로 만들고 create_pytorch_model_sagemaker.ipynb를 사용하여 모델 가중치를 로드 및 저장하고, SageMaker 모델 객체를 생성하고, 마지막으로 이를 SageMaker 일괄 변환 작업으로 전달합니다. 자체 ML 모델을 가져오려면 노트북의 1단계: 설정 섹션에서 경로를 변경하고 2단계: PyTorch Model Zoo에서 ML 모델 로드 섹션에서 새 모델을 로드합니다. 아래의 나머지 단계는 동일하게 유지됩니다.

1단계: 설정

IAM 역할

SageMaker는 SageMaker에서 관리하는 인프라에서 작업을 수행합니다. SageMaker는 SageMaker에 대한 노트북의 동반 IAM 실행 역할에 정의된 대로 허용된 작업만 수행할 수 있습니다. IAM 역할 생성 및 IAM 권한 관리에 대한 자세한 설명서는 다음을 참조하십시오. AWS SageMaker 역할 설명서. 새로운 역할을 만들거나 SageMaker(스튜디오) 노트북다음 코드 줄을 실행하여 의 기본 실행 역할:

import sagemaker

session = sagemaker.Session()

# Set a default S3 bucket
default_bucket = session.default_bucket()

# Get the region
region = boto3.Session().region_name

# Get the SageMaker Execution Role
role_arn = sagemaker.get_execution_role()

위의 코드는 노트북 인스턴스에 대한 SageMaker 실행 역할을 가져옵니다. 이것은 SageMaker 또는 SageMaker Studio 노트북 인스턴스에 대해 생성한 IAM 역할입니다.

사용자 구성 가능한 매개변수

다음은 SageMaker 일괄 변환 작업을 구축하고 시작하는 데 필요한 모든 구성 가능한 매개변수입니다.

INSTANCE_TYPE= "ml.m5.xlarge"
INSTANCE_COUNT= 1
BUCKET = os.path.join("s3://", default_bucket)

DATA_PATH= os.path.join(BUCKET, "images")
IMAGE_NAME = "cars.jpg"
RANDOM_STRING_LENGTH= 16
MODEL_NAME= "FasterRCNNResnet50"

# Needs to be set to version 1.2 or higher to enable automatic PyTorch model repackaging
FRAMEWORK_VERSION= "1.2"
ENTRY_POINT_FILE_NAME= "inference.py"

SAGEMAKER_EXECUTION_ROLE_ARN= role_arn
MODEL_ARTIFACTS_FILE_NAME= os.path.join(BUCKET, "modelzoo/fasterrcnn_resnet50_fpn/model.tar.gz")
IMAGE_URI= sagemaker.image_uris.retrieve(framework="pytorch",
region=region,
version="1.9.1",
py_version="py38",
image_scope='inference',
instance_type=INSTANCE_TYPE)

2단계: PyTorch Model Zoo에서 ML 모델 로드

다음으로 PyTorch Model Zoo에서 객체 감지 모델을 지정하고 ML 모델 가중치를 저장합니다. 일반적으로 .pt 또는 .pth 파일 확장자를 사용하여 PyTorch 모델을 저장합니다. 아래 코드 조각은 PyTorch Model Zoo에서 사전 훈련된 Faster R-CNN ResNet50 ML 모델을 다운로드합니다.

모델 = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)

SageMaker 배치 변환에는 일부 모델 가중치가 입력으로 필요하므로 사전 훈련된 ML 모델을 model.pt로 저장합니다. 사용자 지정 모델을 로드하려면 대신 다른 PyTorch 모델의 모델 가중치를 model.pt로 저장할 수 있습니다.

H = 1080
W = 1920
scripted_fn = torch.jit.script(model, torch.randn(1, 3, H, W))
scripted_fn.save("model.pt")

3단계: ML 모델 아티팩트를 Amazon S3에 저장 및 업로드

ML 추론에 SageMaker를 사용할 것이므로 모델 가중치를 S3 버킷에 업로드해야 합니다. 다음 명령을 사용하거나 파일을 다운로드하고 S3로 직접 드래그 앤 드롭하여 이 작업을 수행할 수 있습니다. 다음 명령은 먼저 파일 그룹을 압축합니다. model.pt tarball에 저장하고 로컬 머신에서 S3 버킷으로 모델 가중치를 복사합니다.

주의 사항: 다음 명령을 실행하려면 다음이 필요합니다. AWS 명령 줄 인터페이스 (AWS CLI) 설치.

tar -czvf model.tar.gz model.pt
aws s3 cp model.tar.gz $MODEL_ARTIFACTS_FILE_NAME

다음으로 입력 이미지를 S3에 복사합니다. 아래는 이미지의 전체 S3 경로입니다.

car_image_path = os.path.join(DATA_PATH, IMAGE_NAME)

다른 aws s3 cp 명령을 사용하여 이 이미지를 S3에 복사할 수 있습니다.

aws s3 cp cars.jpg $car_image_path

4단계: ML 모델 추론 스크립트 빌드

이제 진입점 파일을 살펴보겠습니다. inference.py 기준 치수. PyTorchModel 클래스를 사용하여 SageMaker 외부에서 훈련된 PyTorch 모델을 배포할 수 있습니다. 먼저 PyTorchModelZoo 객체를 인스턴스화합니다. 그런 다음 Amazon S3에서 호스팅되는 샘플 데이터에서 SageMaker 배치 변환을 사용하여 ML 추론을 수행하기 위해 inference.py 진입점 파일을 구성합니다.

PyTorchModel 객체 이해

XNUMXD덴탈의 파이토치 모델 SageMaker Python API 내의 클래스를 사용하면 다운로드한 모델 아티팩트를 사용하여 ML 추론을 수행할 수 있습니다.

PyTorchModel 클래스를 시작하려면 다음 입력 매개변수를 이해해야 합니다.

  • name: 모델명; 고유성을 위해 모델 이름 + 날짜 시간 또는 임의의 문자열 + 날짜 시간을 사용하는 것이 좋습니다.
  • model_data: 패키징된 ML 모델 아티팩트의 S3 URI입니다.
  • entry_point: 들어오는 요청에 대한 핸들러를 정의하기 위해 유추 Docker 이미지에서 사용할 사용자 정의 Python 파일입니다. 이 코드는 모델 로딩, 입력 전처리, 예측 논리 및 출력 후처리를 정의합니다.
  • framework_version: 자동 PyTorch 모델 리패키징을 활성화하려면 버전 1.2 이상으로 설정해야 합니다.
  • source_dir: entry_point 파일의 디렉토리입니다.
  • role: AWS 서비스를 요청하는 IAM 역할입니다.
  • image_uri: 이 Amazon ECR Docker 컨테이너 이미지를 ML 모델 컴퓨팅 환경의 기반으로 사용합니다.
  • sagemaker_session: SageMaker 세션입니다.
  • py_version: 사용할 Python 버전

다음 코드 스니펫은 미리 훈련된 PyTorch 모델을 사용하여 추론을 수행하기 위해 PyTorchModel 클래스를 인스턴스화합니다.

model = PyTorchModel(
               name=RANDOM_STRING,
               model_data=MODEL_ARTIFACTS_FILE_NAME,
               entry_point=ENTRY_POINT_FILE_NAME,
               framework_version=FRAMEWORK_VERSION,
               role=SAGEMAKER_EXECUTION_ROLE_ARN,
               sagemaker_session=sagemaker_session,
               image_uri=IMAGE_URI,
        )

진입점 파일 이해(inference.py)

entry_point 매개변수는 이름이 지정된 Python 파일을 가리킵니다. inference.py. 이 진입점은 모델 로딩, 입력 전처리, 예측 논리 및 출력 후처리를 정의합니다. 미리 빌드된 PyTorch에서 ML 모델 제공 코드를 보완합니다. SageMaker 딥 러닝 컨테이너 영상.

Inference.py 다음 기능을 포함합니다. 이 예에서는 다음을 구현합니다. model_fn, input_fn, predict_fnoutput_fn 재정의하는 기능 기본 PyTorch 추론 핸들러.

  1. model_fn: 추론 이미지에서 정적 모델 체크포인트를 포함하는 디렉토리를 가져옵니다. 지정된 경로에서 모델을 열고 로드하고 PyTorch 모델을 반환합니다.
  2. input_fn: 들어오는 요청(request_body)의 페이로드와 들어오는 요청의 콘텐츠 유형(request_content_type)을 입력으로 받습니다. 데이터 디코딩을 처리합니다. 이 함수는 모델이 예상하는 입력에 맞게 조정해야 합니다.
  3. predict_fn: input_fn에서 역직렬화된 데이터에 대한 모델을 호출합니다. 로드된 ML 모델을 사용하여 역직렬화된 개체에 대한 예측을 수행합니다.
  4. output_fn: 예측 결과를 원하는 응답 콘텐츠 유형으로 직렬화합니다. predict_fn 함수에서 얻은 예측을 JSON, CSV 또는 NPY 형식으로 변환합니다.

5단계: SageMaker 일괄 변환 작업 실행

이 예에서는 SageMaker 일괄 변환 작업을 통해 ML 추론 결과를 얻습니다. 배치 변환 작업은 영구 엔드포인트 없이 데이터 세트에서 한 번 추론을 얻고자 할 때 가장 유용합니다. 우리는 sagemaker.변압기.변압기 SageMaker 일괄 변환 작업을 생성하고 상호 작용하기 위한 개체입니다.

transformer = model.transformer(instance_type=INSTANCE_TYPE, 
                                instance_count=INSTANCE_COUNT
                                )
transformer.transform(data=DATA_PATH,
                      data_type="S3Prefix",
                      content_type="application/x-image",
                      wait=True
                      )

배치 변환 작업 생성에 대한 문서는 다음 위치에서 참조하십시오. CreateTransformJob.

6단계: 테설트 시각화

SageMaker 배치 변환 작업이 완료되면 Amazon S3에서 ML 추론 출력을 로드할 수 있습니다. 이를 위해 다음으로 이동합니다. AWS 관리 콘솔 Amazon SageMaker를 검색합니다. 왼쪽 패널에서 추론참조 일괄 변환 작업.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.

선택 후 일괄 변환, 모든 SageMaker 일괄 변환 작업을 나열하는 웹 페이지를 참조하십시오. 가장 최근 작업 실행의 진행 상황을 볼 수 있습니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.

먼저 작업의 상태는 "진행 중"입니다. 완료되면 상태가 완료됨으로 변경됩니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.

상태가 완료된 것으로 표시되면 작업을 클릭하여 결과를 볼 수 있습니다. 이 웹 페이지에는 방금 실행한 작업의 구성을 포함하여 작업 요약이 포함되어 있습니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.

$XNUMX Million 미만 출력 데이터 구성, S3 출력 경로가 표시됩니다. 여기에서 ML 추론 출력을 찾을 수 있습니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.

S3 출력 경로를 선택하고 출력 데이터가 포함된 [image_name].[file_type].out 파일을 확인합니다. 출력 파일에는 매핑 목록이 포함됩니다. 출력 예:

[
  {
    "boxes": [
      [
        214.32322692871094,
        192.18418884277344,
        830.3932495117188,
        521.6996459960938
      ],
      [
        235.6244354248047,
        301.3315734863281,
        253.6448516845703,
        312.3525695800781
      ],
      [
        183.92031860351562,
        291.7759704589844,
        207.28196716308594,
        312.1448669433594
      ],
    ],
    "labels": [
      3,
      3,
      9,
    ],
    "scores": [
      0.8823906183242798,
      0.7710548639297485,
      0.4969744384288788,
    ]
  }
]

이러한 예측을 시각화하기 위해 먼저 변환기 개체에서 출력 경로를 읽습니다.

def get_output_from_s3(s3uri, file_name):
    parsed_url = urlparse(s3uri)
    bucket_name = parsed_url.netloc
    prefix = parsed_url.path[1:]
    s3 = boto3.resource('s3')
    obj = s3.Object(bucket_name, '{}/{}'.format(prefix, file_name))
    return obj.get()["Body"].read().decode('utf-8')
    
# Output path from Batch Transform job
output_path = transformer.output_path

# Get the output file from S3
predictions = get_output_from_s3(output_path, "car.jpg.out")

다음으로 이 출력 파일을 처리하고 예측을 시각화합니다. 아래에서 신뢰 임계값을 지정합니다. 우리는 클래스 목록을 얻습니다. COCO 데이터 세트 개체 매핑. 추론하는 동안 모델은 입력 텐서만 필요하고 후처리된 예측을 각 입력 이미지에 대해 하나씩 List[Dict[Tensor]]로 반환합니다. Dict의 필드는 다음과 같습니다. 여기서 N은 감지 횟수입니다.

  1. boxs (FloatTensor[N, 4]): 예측된 상자 [x1, y1, x2, y2] 형식 0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H어디로 W 이미지의 너비와 H 이미지의 높이입니다
  2. 레이블(Int64Tensor[N]): 각 감지에 대한 예측 레이블
  3. 점수(Tensor[N]): 각 탐지에 대한 예측 점수

출력에 대한 자세한 내용은 다음을 참조하십시오. PyTorch 더 빠른 R-CNN FPN 문서.

모델 출력에는 각각의 신뢰 점수가 있는 경계 상자가 포함됩니다. 모델이 확신하지 못하는 경계 상자를 제거하여 오탐지 표시를 최적화할 수 있습니다. 다음 코드 스니펫은 출력 파일에서 예측을 처리하고 점수가 신뢰 임계값보다 높은 예측에서 경계 상자를 그립니다. 우리는 확률 임계값을 설정합니다. CONF_THRESH, 이 예에서는 .75로.

def procress_batch_transform_output(predictions):
    predictions = eval(predictions)
    for pred in predictions[1:]:
        pred = pred[0]
        boxes = np.array(pred["boxes"])
        labels = np.array(pred["labels"])
        scores = np.array(pred["scores"])

        scores_idx = scores >= CONF_THRESH
        boxes_meet = boxes[scores_idx, :]
        labels_meet = labels[scores_idx]
        scores_meet = scores[scores_idx]

        labels_str = [CLASSES[i] for i in labels_meet]
        
        # Return a tuple containing labels, label index, score, and bounding box
        processed_predictions =  list(zip(labels_str, labels_meet, scores_meet, boxes_meet))
        return processed_predictions
    
    
def visualize_batch_transform_output(input_image, processed_predictions):
    # read input image from computer
    img = read_image(input_image)
    for label, label_index, score, box in processed_predictions:
        label = label + ", score: " + str(round(score, 2))
        # draw bounding box and fill color
        box = torch.tensor(box)
        box = box.unsqueeze(0)
        img = draw_bounding_boxes(img, box, width=5,labels=[label], font_size=16)

    # transform this image to PIL image
    img = torchvision.transforms.ToPILImage()(img)

    # display output
    img.show()

# Process the predictions in the output file
processed_predictions = procress_batch_transform_output(predictions)
visualize_batch_transform_output("car.jpg", processed_predictions)

마지막으로 이러한 매핑을 시각화하여 출력을 이해합니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.

주의 사항: 이미지가 노트북에 표시되지 않으면 JupyterLab 왼쪽의 디렉터리 트리에서 이미지를 찾아 엽니다.

예제 코드 실행

전체 작동 예제를 보려면 다음의 코드를 복제하십시오. amazon-sagemaker-예제 GitHub 에서 셀을 실행합니다. create_pytorch_model_sagemaker.ipynb 공책.

결론

이 블로그 게시물에서는 SageMaker 배치 변환을 사용하여 PyTorch Model Zoo의 객체 감지 모델을 사용하여 ML 추론을 수행하는 종단 간 예를 선보였습니다. Faster R-CNN 객체 감지 모델 가중치 로드, S3 버킷에 저장, 진입점 파일 작성, PyTorchModel API의 주요 매개변수 이해를 다뤘습니다. 마지막으로 모델을 배포하고 ML 모델 추론을 수행하고 모델 출력을 시각화하고 결과를 해석하는 방법을 배웠습니다.


저자에 관하여

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.디피카 쿨라르 의 ML 엔지니어입니다. Amazon ML 솔루션 랩. 그녀는 고객이 ML 솔루션을 통합하여 비즈니스 문제를 해결하도록 돕습니다. 가장 최근에는 미디어 고객을 위한 교육 및 추론 파이프라인과 마케팅을 위한 예측 모델을 구축했습니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.마르셀로 애 버레 AWS AI 조직의 ML 엔지니어입니다. 그는 다음에서 MLOps 노력을 이끌고 있습니다. Amazon ML 솔루션 랩, 고객이 확장 가능한 ML 시스템을 설계하고 구현하도록 돕습니다. 그의 임무는 엔터프라이즈 ML 여정에서 고객을 안내하고 프로덕션으로의 ML 경로를 가속화하는 것입니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.니 나드 쿨 카르 니 의 응용 과학자입니다. Amazon ML 솔루션 랩. 그는 비즈니스 문제를 해결하기 위한 솔루션을 구축하여 고객이 ML 및 AI를 채택하도록 돕습니다. 가장 최근에는 스포츠, 자동차 및 미디어 고객을 위한 예측 모델을 구축했습니다.

PyTorch Model Zoo PlatoBlockchain 데이터 인텔리전스를 사용하여 Amazon SageMaker 모델을 생성합니다. 수직 검색. 일체 포함.야쉬 샤 의 과학 관리자입니다. Amazon ML 솔루션 연구실. 그와 그의 응용 과학자 및 ML 엔지니어 팀은 의료, 스포츠, 자동차 및 제조의 다양한 ML 사용 사례에 대해 작업합니다.

타임 스탬프 :

더보기 AWS 기계 학습