Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence로 이미지 분할을 실행하십시오. 수직 검색. 일체 포함.

Amazon SageMaker JumpStart로 이미지 분할 실행

12 월 2020에서, AWS 발표 일반적인 가용성 Amazon SageMaker 점프스타트, 능력 아마존 세이지 메이커 머신 러닝(ML)을 빠르고 쉽게 시작할 수 있도록 도와줍니다. JumpStart는 일반적인 비즈니스 문제를 해결하는 다양한 종단 간 솔루션은 물론 인기 있는 ML 작업 전반에 걸쳐 사전 훈련된 다양한 모델의 클릭 한 번으로 미세 조정 및 배포를 제공합니다. 이러한 기능은 ML 프로세스의 각 단계에서 무거운 작업을 제거하여 고품질 모델을 더 쉽게 개발하고 배포 시간을 단축합니다.

이 게시물은 특정 ML 작업에 JumpStart를 사용하는 방법에 대한 시리즈의 세 번째 게시물입니다. 에서 첫 번째 게시물, 우리는 JumpStart에서 이미지 분류 사용 사례를 실행하는 방법을 보여주었습니다. 에서 두 번째 게시물, JumpStart에서 텍스트 분류 사용 사례를 실행하는 방법을 보여주었습니다. 이 게시물에서는 MXNet에서 훈련된 모델을 사용하여 이미지 분할 모델을 미세 조정하고 배포하는 방법에 대한 단계별 연습을 제공합니다. 동일한 결과를 얻는 두 가지 방법을 살펴봅니다. JumpStart의 그래픽 인터페이스를 통해 아마존 세이지 메이커 스튜디오, 그리고 프로그래밍 방식으로 점프스타트 API.

이 게시물에서 설명하는 JumpStart API 코드로 바로 이동하려면 다음 샘플 Jupyter 노트북을 참조하세요.

JumpStart 개요

JumpStart를 사용하면 한 줄의 코드를 작성하지 않고도 다양한 작업을 위한 ML 모델을 시작할 수 있습니다. 작성 당시 JumpStart를 사용하여 다음을 수행할 수 있습니다.

  • 일반적인 ML 작업을 위해 사전 학습된 모델 배포 – JumpStart를 사용하면 공개적으로 사용 가능한 대규모 데이터 세트에 대해 사전 훈련된 모델을 쉽게 배포하여 개발 노력 없이 일반적인 ML 작업을 해결할 수 있습니다. ML 연구 커뮤니티는 최근에 개발된 대부분의 모델을 공개적으로 사용할 수 있도록 많은 노력을 기울였습니다. JumpStart는 객체 감지, 텍스트 분류 및 텍스트 생성과 같은 가장 인기 있는 300가지 ML 작업에 걸쳐 15개 이상의 모델 컬렉션을 호스팅하므로 초보자도 쉽게 사용할 수 있습니다. 이러한 모델은 TensorFlow, PyTorch, Hugging Face 및 MXNet과 같은 인기 있는 모델 허브에서 가져왔습니다.
  • 사전 훈련된 모델 미세 조정 – JumpStart를 사용하면 자체 훈련 알고리즘을 작성할 필요 없이 사전 훈련된 모델을 미세 조정할 수 있습니다. ML에서는 한 영역에서 학습한 지식을 다른 영역으로 옮기는 능력을 전학 학습. 전이 학습을 사용하여 원본 모델 교육에 관련된 비용보다 훨씬 저렴한 교육 비용으로 더 작은 데이터 세트에서 정확한 모델을 생성할 수 있습니다. 또한 JumpStart에는 LightGBM, CatBoost, XGBoost 및 Scikit-learn을 기반으로 하는 인기 있는 교육 알고리즘이 포함되어 있어 테이블 형식 회귀 및 분류를 위해 처음부터 교육할 수 있습니다.
  • 사전 구축된 솔루션 사용 – JumpStart는 클릭 몇 번으로 배포할 수 있는 수요 예측, 산업 및 금융 애플리케이션과 같은 일반적인 ML 사용 사례를 위한 17가지 솔루션 세트를 제공합니다. 솔루션은 다양한 AWS 서비스를 결합하여 특정 비즈니스 사용 사례를 해결하는 종단 간 ML 애플리케이션입니다. 그들은 사용 AWS 클라우드 포메이션 빠른 배포를 위한 템플릿 및 참조 아키텍처, 즉 완전히 사용자 지정할 수 있습니다.
  • SageMaker 알고리즘에 대한 노트북 예제 참조 – SageMaker는 데이터 과학자와 ML 실무자가 ML 모델 교육 및 배포를 빠르게 시작하는 데 도움이 되는 일련의 내장 알고리즘을 제공합니다. JumpStart는 이러한 알고리즘을 빠르게 사용하는 데 사용할 수 있는 샘플 노트북을 제공합니다.
  • 교육 비디오 및 블로그 검토 – JumpStart는 SageMaker 내에서 다양한 기능을 사용하는 방법을 가르치는 수많은 블로그 게시물과 비디오도 제공합니다.

JumpStart는 사용자 정의 VPC 설정을 수락하고 AWS 키 관리 서비스 (AWS KMS) 암호화 키를 사용하여 엔터프라이즈 환경 내에서 사용 가능한 모델과 솔루션을 안전하게 사용할 수 있습니다. 보안 설정을 Studio 내에서 또는 SageMaker Python SDK를 통해 JumpStart에 전달할 수 있습니다.

시맨틱 분할

의미론적 분할은 입력 이미지에 나타나는 각 개체 클래스를 나타냅니다. 미리 정의된 클래스 집합의 클래스 레이블로 입력 이미지의 각 픽셀에 태그를 지정(분류)합니다. 동일한 클래스의 여러 개체가 동일한 마스크에 매핑됩니다.

미세 조정에 사용할 수 있는 모델은 기본 네트워크 위에 완전 컨볼루션 네트워크(FCN) "헤드"를 구축합니다. 미세 조정 단계는 나머지 모델의 매개변수를 고정한 상태에서 FCNHead를 미세 조정하고 미세 조정된 모델을 반환합니다. 목표는 FCN을 훈련하기 위해 픽셀당 softmax 교차 엔트로피 손실을 최소화하는 것입니다. 미세 조정으로 반환된 모델은 추론을 위해 추가로 배포할 수 있습니다.

훈련 데이터에 두 개의 이미지가 포함된 경우 입력 디렉토리는 다음 코드와 같아야 합니다. .png 파일의 이름은 무엇이든 될 수 있습니다.

input_directory
    |--images
        |--abc.png
        |--def.png
    |--masks
        |--abc.png
        |--def.png
    class_label_to_prediction_index.json

마스크 파일에는 각 픽셀에 대한 클래스 레이블 정보가 있어야 합니다.

인스턴스 분할

인스턴스 분할은 이미지에 나타나는 각각의 고유한 관심 대상을 감지하고 묘사합니다. 인스턴스 레이블로 모든 픽셀에 태그를 지정합니다. 시맨틱 분할은 동일한 클래스의 여러 객체의 픽셀에 동일한 태그를 할당하는 반면, 인스턴스 분할은 개별 태그를 사용하여 이미지의 각 객체 발생에 해당하는 픽셀에 레이블을 추가로 지정합니다.

현재 JumpStart는 인스턴스 분할을 위한 추론 전용 모델을 제공하며 미세 조정을 지원하지 않습니다.

다음 이미지는 의미론적 분할의 추론과 인스턴스 분할의 차이점을 보여줍니다. 원본 이미지에는 이미지에 두 사람이 있습니다. 의미론적 세분화는 이미지의 여러 사람을 하나의 엔티티로 취급합니다. Person. 그러나 인스턴스 세분화는 내에서 개별 사람을 식별합니다. Person 카테고리.

솔루션 개요

다음 섹션에서는 Studio UI 및 JumpStart API를 통해 JumpStart로 의미론적 분할을 수행하는 단계별 데모를 제공합니다.

다음 단계를 거칩니다.

  1. Studio UI를 통해 JumpStart에 액세스:
    1. 사전 훈련된 모델에서 추론을 실행합니다.
    2. 사전 훈련된 모델을 미세 조정합니다.
  2. SageMaker Python SDK와 함께 프로그래밍 방식으로 JumpStart 사용:
    1. 사전 훈련된 모델에서 추론을 실행합니다.
    2. 사전 훈련된 모델을 미세 조정합니다.

또한 JumpStart의 추가 고급 기능에 대해서도 설명합니다.

Studio UI를 통해 JumpStart에 액세스

이 섹션에서는 Studio UI를 통해 JumpStart 모델을 교육하고 배포하는 방법을 보여줍니다.

사전 훈련된 모델에서 추론 실행

다음 비디오는 JumpStart에서 사전 훈련된 의미론적 세분화 모델을 찾고 배포하는 방법을 보여줍니다. 모델 페이지에는 모델, 사용 방법, 예상 데이터 형식 및 일부 미세 조정 세부 정보에 대한 중요한 정보가 포함되어 있습니다. JumpStart에서 사용할 수 있는 사전 훈련된 모델을 배포할 수 있습니다. 추론을 위해 ml.g4dn.xlarge 인스턴스 유형을 선택합니다. 낮은 추론 지연 시간에 필요한 GPU 가속을 제공하지만 가격은 더 저렴합니다. SageMaker 호스팅 인스턴스를 구성한 후 다음을 선택합니다. 배포. 영구 엔드포인트가 시작되어 실행될 때까지 5~10분이 소요될 수 있습니다.

몇 분 후 엔드포인트가 작동하고 추론 요청에 응답할 준비가 됩니다.

마찬가지로 JumpStart 검색 창에서 의미론적 세분화 대신 인스턴스 세분화를 검색하는 동안 이전 비디오의 동일한 단계에 따라 사전 훈련된 인스턴스 세분화 모델을 배포할 수 있습니다.

사전 훈련된 모델 미세 조정

다음 비디오는 JumpStart에서 의미론적 분할 모델을 찾고 미세 조정하는 방법을 보여줍니다. 비디오에서 우리는 다음을 사용하여 모델을 미세 조정합니다. PennFudanPed 데이터 세트, JumpStart에서 기본적으로 제공되며 다음 아래에서 다운로드할 수 있습니다. 아파치 2.0 라이선스.

자신의 데이터 세트에 대한 미세 조정에는 데이터의 올바른 형식(모델 페이지에 설명된 대로)을 가져와서 업로드하는 작업이 포함됩니다. 아마존 단순 스토리지 서비스 (Amazon S3) 및 데이터 소스 구성에서 해당 위치를 지정합니다. 기본적으로 설정된 동일한 하이퍼파라미터 값(epoch 수, 학습률 및 배치 크기)을 사용합니다. 또한 GPU 지원 ml.p3.2xlarge를 SageMaker 교육 인스턴스로 사용합니다.

Studio 콘솔에서 직접 실행 중인 교육 작업을 모니터링할 수 있으며 완료 시 알림을 받습니다. 훈련이 완료되면 훈련 작업 세부 정보가 있는 동일한 페이지에서 미세 조정된 모델을 배포할 수 있습니다. 배포 워크플로는 사전 학습된 모델 배포와 동일합니다.

SageMaker SDK와 함께 프로그래밍 방식으로 JumpStart 사용

이전 섹션에서는 JumpStart UI를 사용하여 몇 번의 클릭만으로 사전 훈련된 모델을 배포하고 대화식으로 미세 조정하는 방법을 보여주었습니다. 그러나 SageMaker SDK에 통합된 API를 사용하여 프로그래밍 방식으로 JumpStart의 모델과 손쉬운 미세 조정을 사용할 수도 있습니다. 이제 이전 프로세스를 복제하는 방법에 대한 간단한 예를 살펴보겠습니다. 이 데모의 모든 단계는 함께 제공되는 노트북에서 사용할 수 있습니다. JumpStart 소개 – 인스턴스 분할JumpStart 소개 – 시맨틱 분할.

사전 훈련된 모델에서 추론 실행

이 섹션에서는 JumpStart에서 적절한 사전 훈련된 모델을 선택하고 이 모델을 SageMaker 끝점에 배포하고 배포된 끝점에서 추론을 실행합니다.

SageMaker는 Docker 컨테이너 기반 플랫폼입니다. JumpStart는 사용 가능한 프레임워크별 SageMaker 딥 러닝 컨테이너 (DLC). 추가 패키지와 선택한 작업에 대한 학습 및 추론을 처리하는 스크립트를 가져옵니다. 마지막으로 사전 훈련된 모델 아티팩트를 별도로 가져옵니다. model_uris, 플랫폼에 유연성을 제공합니다. 단일 훈련 또는 추론 스크립트로 동일한 작업에 대해 사전 훈련된 모델을 원하는 수만큼 사용할 수 있습니다. 다음 코드를 참조하십시오.

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

예를 들어 세분화를 설정할 수 있습니다. model_idmxnet-semseg-fcn-resnet50-ade. 식별자의 is는 인스턴스 분할에 해당합니다.

다음으로 리소스를 세이지메이커 모델 인스턴스를 만들고 엔드포인트를 배포합니다.

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

몇 분 후에 모델이 배포되고 실시간으로 예측을 얻을 수 있습니다!

다음 코드 스니펫은 의미론적 세분화가 어떻게 생겼는지 보여줍니다. 각 픽셀에 대한 예측 마스크가 시각화됩니다. 배포된 모델에서 추론을 얻으려면 입력 이미지를 바이너리 형식으로 제공해야 합니다. 끝점의 응답은 이미지의 각 픽셀에 대한 예측된 레이블입니다. 우리는 사용 query_endpointparse_response 에 정의된 도우미 함수 수첩:

query_response = query(base_model_predictor, pedestrian_img)
predictions, labels, image_labels = parse_response(query_response)
print("Objects present in the picture:", image_labels)

사전 훈련된 모델 미세 조정

선택한 모델을 미세 조정하려면 해당 모델의 URI와 교육 스크립트의 URI 및 교육에 사용되는 컨테이너 이미지를 가져와야 합니다. 고맙게도 이 세 가지 입력은 모델 이름, 버전에만 의존합니다(사용 가능한 모델 목록은 JumpStart 사용 가능한 모델 테이블)및 학습할 인스턴스 유형입니다. 이는 다음 코드 스니펫에 나와 있습니다.

from sagemaker import image_uris, model_uris, script_uris

model_id, model_version = "mxnet-semseg-fcn-resnet50-ade", "*"
training_instance_type = "ml.p3.2xlarge"
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=model_id,
    model_version=model_version,
    image_scope="training",
    instance_type=training_instance_type,)# Retrieve the training script

train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball to further fine-tune

train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

우리는 검색 model_id 이전에 사용한 동일한 모델에 해당합니다. 이제 SageMaker SDK를 사용하여 사용자 정의 데이터 세트에서 이 JumpStart 모델을 미세 조정할 수 있습니다. 우리는 Amazon S3에서 공개적으로 호스팅되는 데이터 세트를 사용하며, 의미론적 세분화에 편리하게 초점을 맞춥니다. 데이터 세트는 이전 섹션에서 설명한 대로 미세 조정을 위해 구조화되어야 합니다. 다음 예제 코드를 참조하십시오.

# URI of your training dataset
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_SemSeg/"
training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning")# Create SageMaker Estimator instance
semseg_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)# Launch a SageMaker Training job by passing s3 path of the training data
semseg_estimator.fit({"training": training_dataset_s3_path}, logs=True)

다음을 사용하여 이전 섹션에서 본 것과 동일한 기본 하이퍼파라미터를 선택한 모델에 대해 얻습니다. sagemaker.hyperparameters.retrieve_default(). 그런 다음 SageMaker 추정기를 인스턴스화하고 .fit 메서드를 사용하여 모델 미세 조정을 시작하고 교육 데이터에 대한 Amazon S3 URI를 전달합니다. 그만큼 entry_point 제공된 스크립트의 이름은 transfer_learning.py(다른 작업 및 모델에서도 동일)이며 입력 데이터 채널은 다음으로 전달됩니다. .fit 이름이 있어야합니다 training.

알고리즘이 훈련되는 동안 코드 자체를 실행 중인 SageMaker 노트북이나 다음 중 하나에서 진행 상황을 모니터링할 수 있습니다. 아마존 클라우드 워치. 교육이 완료되면 미세 조정된 모델 아티팩트가 교육 구성에 지정된 Amazon S3 출력 위치에 업로드됩니다. 이제 사전 학습된 모델과 동일한 방식으로 모델을 배포할 수 있습니다.

고급 기능

사전 훈련된 모델을 미세 조정하고 배포하는 것 외에도 JumpStart는 많은 고급 기능을 제공합니다.

첫 번째는 자동 모델 튜닝. 이를 통해 ML 모델을 자동으로 조정하여 SageMaker API를 통해 제공되는 범위 내에서 가장 높은 정확도로 하이퍼파라미터 값을 찾을 수 있습니다.

두 번째는 증분 훈련. 이를 통해 이전 미세 조정 실행에서 설명되지 않은 기본 패턴이 포함된 확장된 데이터 세트를 사용하여 이미 미세 조정한 모델을 훈련할 수 있어 모델 성능이 저하됩니다. 증분 교육은 모델을 처음부터 다시 교육할 필요가 없기 때문에 시간과 리소스를 모두 절약합니다.

결론

이 게시물에서는 사전 훈련된 의미론적 세분화 모델을 미세 조정하고 배포하는 방법과 JumpStart를 사용하여 인스턴스 세분화에 맞게 조정하는 방법을 보여주었습니다. 코드를 작성할 필요 없이 이 작업을 수행할 수 있습니다. 솔루션을 직접 사용해 보고 의견을 보내주십시오.

JumpStart에 대해 자세히 알아보고 다양한 기타 ML 작업을 위해 사전 훈련된 오픈 소스 모델을 사용하는 방법을 알아보려면 다음을 확인하세요. AWS re:Invent 2020 비디오.


저자에 관하여

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence로 이미지 분할을 실행하십시오. 수직 검색. 일체 포함.비벡 마단 박사 Amazon SageMaker JumpStart 팀의 응용 과학자입니다. 그는 일리노이 대학교 어바나 샴페인에서 박사 학위를 받았고 조지아 공대에서 박사후 연구원이었습니다. 그는 기계 학습 및 알고리즘 설계 분야에서 활발한 연구원이며 EMNLP, ICLR, COLT, FOCS 및 SODA 컨퍼런스에 논문을 발표했습니다.

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence로 이미지 분할을 실행하십시오. 수직 검색. 일체 포함.산토시 쿨카르니 오스트레일리아의 스포츠 고객과 협력하는 Amazon Web Services의 엔터프라이즈 솔루션 아키텍트입니다. 그는 AI/ML, 빅 데이터 및 소프트웨어 개발에 대한 지식을 사용하여 비즈니스 문제를 해결하기 위해 대규모 분산 애플리케이션을 구축하는 데 열정을 가지고 있습니다.

Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence로 이미지 분할을 실행하십시오. 수직 검색. 일체 포함.레오나르도 바체가 Amazon SageMaker JumpStart 팀의 선임 과학자이자 관리자입니다. 그는 컴퓨터 비전을 위한 AI 서비스 구축에 열정적입니다.

타임 스탬프 :

더보기 AWS 기계 학습