Amazon SageMaker의 TensorFlow 이미지 분류 모델에 대한 전이 학습

아마존 세이지 메이커 의 제품군을 제공합니다 내장 알고리즘, 사전 훈련 된 모델사전 구축된 솔루션 템플릿 데이터 과학자와 머신 러닝(ML) 실무자가 ML 모델 교육 및 배포를 빠르게 시작할 수 있도록 지원합니다. 지도 및 비지도 학습 모두에 이러한 알고리즘과 모델을 사용할 수 있습니다. 표, 이미지, 텍스트 등 다양한 유형의 입력 데이터를 처리할 수 있습니다.

오늘부터 SageMaker는 이미지 분류를 위한 새로운 내장 알고리즘을 제공합니다. 이미지 분류 – TensorFlow. 에서 사용 가능한 많은 사전 훈련된 모델에 대한 전이 학습을 지원하는 지도 학습 알고리즘입니다. 텐서플로우 허브. 이미지를 입력으로 사용하고 각 클래스 레이블에 대한 확률을 출력합니다. 많은 수의 훈련 이미지를 사용할 수 없는 경우에도 전이 학습을 사용하여 이러한 사전 훈련된 모델을 미세 조정할 수 있습니다. SageMaker를 통해 사용할 수 있습니다. 내장 알고리즘 뿐만 아니라 SageMaker 점프스타트 UI 내부 아마존 세이지 메이커 스튜디오. 자세한 내용은 해당 설명서를 참조하십시오. 이미지 분류 – TensorFlow 그리고 예시 노트북 SageMaker TensorFlow 소개 – 이미지 분류.

SageMaker에서 TensorFlow를 사용한 이미지 분류는 TensorFlow Hub에서 사용할 수 있는 많은 사전 훈련된 모델에 대한 전이 학습을 제공합니다. 학습 데이터의 클래스 레이블 수에 따라 사전 학습된 TensorFlow Hub 모델에 분류 계층이 첨부됩니다. 분류 계층은 무작위 가중치로 초기화되는 2-노름 정규화가 있는 완전 연결 계층인 드롭아웃 계층과 밀집 계층으로 구성됩니다. 모델 훈련에는 dropout layer의 dropout rate에 대한 hyperparameter와 Dense layer에 대한 L2 regularization factor가 있습니다. 그런 다음 사전 훈련된 모델을 포함한 전체 네트워크 또는 최상위 분류 계층만 새 훈련 데이터에서 미세 조정할 수 있습니다. 이 전이 학습 모드에서는 더 작은 데이터 세트로도 훈련을 달성할 수 있습니다.

새로운 TensorFlow 이미지 분류 알고리즘을 사용하는 방법

이 섹션에서는 TensorFlow 이미지 분류 알고리즘을 SageMaker Python SDK. Studio UI에서 사용하는 방법에 대한 자세한 내용은 세이지메이커 점프스타트.

알고리즘은 다음에 나열된 사전 훈련된 모델에 대한 전이 학습을 지원합니다. TensorFlow 허브 모델. 각 모델은 고유한 model_id. 다음 코드는 다음으로 식별되는 MobileNet V2 1.00 224를 미세 조정하는 방법을 보여줍니다. model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 커스텀 트레이닝 데이터셋에서 각각 model_id, 다음을 통해 SageMaker 교육 작업을 시작하려면 견적 SageMaker Python SDK의 클래스를 사용하려면 SageMaker에서 제공하는 유틸리티 함수를 통해 Docker 이미지 URI, 학습 스크립트 URI 및 사전 학습된 모델 URI를 가져와야 합니다. 훈련 스크립트 URI에는 데이터 처리, 사전 훈련된 모델 로드, 모델 훈련 및 추론을 위해 훈련된 모델 저장에 필요한 모든 코드가 포함되어 있습니다. 사전 학습된 모델 URI에는 사전 학습된 모델 아키텍처 정의 및 모델 매개변수가 포함됩니다. Docker 이미지 URI와 학습 스크립트 URI는 모든 TensorFlow 이미지 분류 모델에서 동일합니다. 사전 훈련된 모델 URI는 특정 모델에 따라 다릅니다. 사전 훈련된 모델 tarball은 TensorFlow Hub에서 사전 다운로드되어 적절한 모델 서명으로 저장되었습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷(예: 교육 작업이 네트워크 격리에서 실행됨). 다음 코드를 참조하십시오.

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# 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 for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

이러한 모델별 교육 아티팩트를 사용하여 개체를 구성할 수 있습니다. 견적 수업:

# Create SageMaker Estimator instance
tf_ic_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,
)

다음으로 사용자 지정 데이터 세트에 대한 전이 학습을 위해 다음 목록에 있는 훈련 하이퍼파라미터의 기본값을 변경해야 할 수 있습니다. 하이퍼 파라미터. 다음을 호출하여 기본값과 함께 이러한 하이퍼파라미터의 Python 사전을 가져올 수 있습니다. hyperparameters.retrieve_default, 필요에 따라 업데이트한 다음 Estimator 클래스에 전달합니다. 일부 하이퍼파라미터의 기본값은 모델마다 다릅니다. 대형 모델의 경우 기본 배치 크기가 더 작고 train_only_top_layer 하이퍼파라미터는 다음으로 설정됩니다. True. 초매개변수 Train_only_top_layer 미세 조정 프로세스 중에 변경되는 모델 매개변수를 정의합니다. 만약에 train_only_top_layer is True, 분류 계층의 매개변수가 변경되고 나머지 매개변수는 미세 조정 프로세스 동안 일정하게 유지됩니다. 한편, 만약 train_only_top_layer is False, 모델의 모든 매개변수가 미세 조정됩니다. 다음 코드를 참조하십시오.

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

다음 코드는 S3 버킷에서 호스팅되는 기본 교육 데이터 세트를 제공합니다. 우리는 제공 tf_flowers 데이터세트를 모델 미세 조정을 위한 기본 데이터세트로 사용합니다. 데이터 세트는 XNUMX가지 유형의 꽃 이미지로 구성됩니다. 데이터 세트는 다음에서 다운로드되었습니다. TensorFlow 아래 아파치 2.0 라이선스.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

마지막으로 모델 미세 조정을 위한 SageMaker 교육 작업을 시작하려면 다음을 호출합니다. .fit Estimator 클래스의 객체에서 훈련 데이터 세트의 S3 위치를 전달하는 동안:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

새로운 SageMaker TensorFlow 이미지 분류 알고리즘을 사용자 지정 데이터 세트에 대한 전이 학습에 사용하는 방법에 대한 자세한 내용은 미세 조정된 모델을 배포하고 배포된 모델에서 추론을 실행하고 먼저 미세 조정하지 않고 사전 훈련된 모델을 있는 그대로 배포합니다. 사용자 지정 데이터 세트에서 다음 예제 노트북을 참조하세요. SageMaker TensorFlow 소개 – 이미지 분류.

TensorFlow 이미지 분류 알고리즘을 위한 입력/출력 인터페이스

에 나열된 사전 훈련된 각 모델을 미세 조정할 수 있습니다. TensorFlow 허브 모델 임의의 수의 클래스에 속하는 이미지를 포함하는 임의의 주어진 데이터세트에. 목표는 입력 데이터의 예측 오류를 최소화하는 것입니다. 미세 조정으로 반환된 모델은 추론을 위해 추가로 배포할 수 있습니다. 다음은 모델에 입력하기 위해 훈련 데이터의 형식을 지정하는 방법에 대한 지침입니다.

  • 입력 – 클래스 수만큼 하위 디렉토리가 있는 디렉토리. 각 하위 디렉토리에는 .jpg, .jpeg 또는 .png 형식의 해당 클래스에 속하는 이미지가 있어야 합니다.
  • 산출 – 추론을 위해 배포하거나 증분 교육을 사용하여 추가로 교육할 수 있는 미세 조정된 모델입니다. 원시 .jpg 이미지를 입력으로 사용하고 클래스 확률을 반환하도록 사전 처리 및 사후 처리 서명이 미세 조정된 모델에 추가됩니다. 클래스 레이블에 대한 클래스 색인을 매핑하는 파일은 모델과 함께 저장됩니다.

훈련 데이터에 두 클래스의 이미지가 포함된 경우 입력 디렉토리는 다음 예와 같아야 합니다. rosesdandelion. S3 경로는 다음과 같아야 합니다. s3://bucket_name/input_directory/. 후행 참고 / 필요합니다. 폴더의 이름과 roses, dandelion, .jpg 파일 이름은 무엇이든 될 수 있습니다. S3 버킷에 훈련된 모델과 함께 저장된 레이블 매핑 파일은 roses 및 dandelion 폴더 이름을 모델이 출력하는 클래스 확률 목록의 인덱스에 매핑합니다. 매핑은 폴더 이름의 알파벳 순서를 따릅니다. 다음 예에서 모델 출력 목록의 인덱스 0은 다음과 같습니다. dandelion, 인덱스 1은 다음과 같습니다. roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

TensorFlow 이미지 분류 알고리즘을 사용한 추론

생성된 모델은 추론을 위해 호스팅될 수 있으며 인코딩된 .jpg, .jpeg 및 .png 이미지 형식을 application/x-image 컨텐츠 타입. 입력 이미지의 크기가 자동으로 조정됩니다. 출력에는 확률 값, 모든 클래스에 대한 클래스 레이블 및 JSON 형식으로 인코딩된 가장 높은 확률을 가진 클래스 인덱스에 해당하는 예측 레이블이 포함됩니다. TensorFlow 이미지 분류 모델은 요청당 단일 이미지를 처리하고 JSON에서 한 줄만 출력합니다. 다음은 JSON 응답의 예입니다.

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If acceptapplication/json, 그러면 모델은 확률만 출력합니다. 학습 및 추론에 대한 자세한 내용은 샘플 노트북을 참조하세요. SageMaker TensorFlow 소개 – 이미지 분류.

JumpStart UI를 통해 SageMaker 내장 알고리즘 사용

또한 JumpStart UI를 통해 몇 번의 클릭으로 SageMaker TensorFlow 이미지 분류 및 기타 내장 알고리즘을 사용할 수 있습니다. JumpStart는 그래픽 인터페이스를 통해 다양한 ML 프레임워크 및 모델 허브에서 기본 제공 알고리즘과 사전 훈련된 모델을 훈련 및 배포할 수 있는 SageMaker 기능입니다. 또한 ML 모델과 다양한 기타 AWS 서비스를 함께 연결하여 대상 사용 사례를 해결하는 완전한 ML 솔루션을 배포할 수 있습니다. 체크 아웃 TensorFlow Hub 및 Hugging Face 모델을 사용하여 Amazon SageMaker JumpStart로 텍스트 분류 실행 몇 번의 클릭으로 JumpStart를 사용하여 알고리즘 또는 사전 훈련된 모델을 훈련하는 방법을 알아보세요.

결론

이 게시물에서 우리는 SageMaker TensorFlow 이미지 분류 내장 알고리즘의 출시를 발표했습니다. 이 알고리즘을 사용하여 TensorFlow Hub에서 사전 훈련된 모델을 사용하여 사용자 지정 데이터 세트에서 전이 학습을 수행하는 방법에 대한 예제 코드를 제공했습니다. 자세한 내용은 다음을 확인하세요. 선적 서류 비치 그리고 노트북 예.


저자 소개

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 이미지 분류 모델에 대한 전이 학습. 수직 검색. 일체 포함.Ashish Khetan 박사 는 수석 응용 과학자입니다. Amazon SageMaker 내장 알고리즘 기계 학습 알고리즘을 개발하는 데 도움이 됩니다. 그는 University of Illinois Urbana-Champaign에서 박사 학위를 받았습니다. 그는 기계 학습 및 통계적 추론 분야에서 활발한 연구원이며 NeurIPS, ICML, ICLR, JMLR, ACL 및 EMNLP 컨퍼런스에서 많은 논문을 발표했습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 이미지 분류 모델에 대한 전이 학습. 수직 검색. 일체 포함.비벡 마단 박사 는 응용 과학자입니다. Amazon SageMaker JumpStart 팀. 그는 University of Illinois Urbana-Champaign에서 박사 학위를 받았고 Georgia Tech에서 박사후 연구원이었습니다. 그는 기계 학습 및 알고리즘 설계 분야에서 활발한 연구원이며 EMNLP, ICLR, COLT, FOCS 및 SODA 컨퍼런스에 논문을 발표했습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 이미지 분류 모델에 대한 전이 학습. 수직 검색. 일체 포함.주앙 모 우라 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. 그는 주로 NLP 사용 사례에 초점을 맞추고 고객이 딥 러닝 모델 교육 및 배포를 최적화하도록 지원합니다. 그는 또한 로우 코드 ML 솔루션과 ML 전문 하드웨어의 적극적인 지지자입니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 이미지 분류 모델에 대한 전이 학습. 수직 검색. 일체 포함.라주 펜 말차 AWS의 수석 AI / ML 전문가 솔루션 설계자입니다. 그는 기계 학습 및 인공 지능 관련 프로젝트에서 교육, 정부 및 비영리 고객과 협력하여 AWS를 사용하여 솔루션을 구축하도록 돕습니다. 고객을 돕지 않을 때는 새로운 곳으로 여행하는 것을 좋아합니다.

타임 스탬프 :

더보기 AWS 기계 학습