Amazon SageMaker JumpStart PlatoBlockchain 데이터 인텔리전스를 사용한 증분 교육. 수직 검색. 일체 포함.

Amazon SageMaker JumpStart를 사용한 증분 교육

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

모든 JumpStart 콘텐츠는 이전에 다음을 통해서만 사용할 수 있었습니다. 아마존 세이지 메이커 스튜디오, 이것은 사용자 친화적인 그래픽 인터페이스 기능과 상호 작용합니다. 최근에는 우리도 런칭을 발표했다. 사용하기 쉬운 점프스타트 API SageMaker Python SDK의 확장으로, 자신의 데이터세트에서 다양한 JumpStart 지원 사전 훈련된 모델을 프로그래밍 방식으로 배포하고 미세 조정할 수 있습니다. 이번 출시로 코드 워크플로, MLOps 파이프라인 및 SDK를 통해 SageMaker와 상호 작용하는 모든 곳에서 JumpStart 기능을 사용할 수 있습니다.

이 게시물에서는 훈련 가능한 모든 JumpStart 모델이 이제 증분 훈련을 지원한다는 사실을 발표하게 되어 기쁩니다. 증분 교육을 사용하면 이전 미세 조정 실행에서 설명되지 않은 기본 패턴이 포함된 확장된 데이터 세트를 사용하여 이미 미세 조정한 모델을 교육할 수 있으므로 모델 성능이 저하됩니다. 증분 교육은 모델을 처음부터 다시 교육할 필요가 없기 때문에 시간과 리소스를 모두 절약합니다. 이 게시물에서 설명하는 JumpStart API 코드로 바로 이동하려면 다음을 참조하십시오. 샘플 노트.

JumpStart 개요

JumpStart는 SageMaker에서 ML을 빠르게 시작하는 데 도움이 되는 다양한 기능이 포함된 다면적 제품입니다. 작성 당시 JumpStart를 사용하여 다음을 수행할 수 있습니다.

  • 일반적인 ML 작업을 위해 사전 학습된 모델 배포 – JumpStart를 사용하면 공개적으로 사용 가능한 대규모 데이터 세트에서 사전 훈련된 모델을 쉽게 배포하여 개발 노력 없이 일반적인 ML 작업을 해결할 수 있습니다. ML 연구 커뮤니티는 최근에 개발된 대부분의 모델을 공개적으로 사용할 수 있도록 하기 위해 많은 노력을 기울였습니다. JumpStart는 객체 감지, 텍스트 분류 및 텍스트 생성과 같은 가장 인기 있는 300가지 ML 작업에 걸쳐 15개 이상의 모델 컬렉션을 호스팅하므로 초보자도 쉽게 사용할 수 있습니다. 이러한 모델은 TensorFlow, PyTorch, Hugging Face 및 MXNet Hub와 같은 인기 있는 모델 허브에서 가져왔습니다.
  • 사전 훈련된 모델 미세 조정 – 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에 전달할 수 있습니다.

이미지 분류

이미지 분류는 이미지를 훈련 데이터 세트의 클래스 레이블 중 하나로 분류하는 것을 말합니다. 여러 클래스에 속하는 이미지로 구성된 주어진 데이터 세트에 모델을 미세 조정할 수 있습니다. JumpStart에서 미세 조정이 가능한 모델은 분류 계층을 해당 기능 추출기 모델에 연결하고 계층 매개변수를 임의의 값으로 초기화합니다. 분류 계층의 출력 차원은 입력 데이터의 클래스 수에 따라 결정됩니다. 미세 조정 단계는 특징 추출기 모델의 매개변수를 고정된 상태로 분류 계층 매개변수를 조정하고 미세 조정된 모델을 반환합니다. 목표는 입력 데이터의 예측 오류를 최소화하는 것입니다.

데이터 세트의 경우 입력은 클래스 수만큼 많은 하위 디렉터리가 있는 디렉터리입니다. 각 하위 디렉토리에는 .jpg 형식의 해당 클래스에 속하는 이미지가 있어야 합니다. 훈련 데이터에 두 클래스의 이미지가 포함된 경우 입력 디렉토리는 다음 계층 구조와 같아야 합니다. rosesdandelion:

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

폴더, 클래스 및 .jpg 파일 이름은 무엇이든 될 수 있습니다.

우리는 tf_flowers1 데이터세트를 모델 미세 조정을 위한 기본 데이터세트로 사용합니다. 이 데이터 세트는 XNUMX가지 유형의 꽃 이미지로 구성됩니다. 데이터 세트는 다음에서 다운로드되었습니다. TensorFlow.

연습 개요

다음 섹션에서는 Studio UI 및 JumpStart API를 통해 JumpStart로 이미지 분류를 수행하는 단계별 데모를 제공합니다.

다음 단계를 거칩니다.

  1. Studio UI를 통해 JumpStart에 액세스:
    1. 사전 훈련된 모델을 미세 조정합니다.
    2. 미세 조정된 모델을 배포합니다.
    3. 미세 조정된 모델을 점진적으로 학습하고 다시 배포합니다.
  2. SageMaker Python SDK와 함께 프로그래밍 방식으로 JumpStart 사용:
    1. 사전 훈련된 모델을 미세 조정합니다.
    2. 미세 조정된 모델을 배포합니다.
    3. 미세 조정된 모델을 점진적으로 학습하고 다시 배포합니다.

Studio UI를 통해 JumpStart에 액세스

이 섹션에서는 Studio UI를 통해 JumpStart 모델을 미세 조정하고 배포하는 방법을 보여줍니다. 또한 이전에 미세 조정한 모델을 점진적으로 훈련하는 방법을 보여줍니다.

사전 훈련된 모델 미세 조정

다음 비디오는 JumpStart에서 사전 훈련된 이미지 분류 모델을 찾고 미세 조정하는 방법을 보여줍니다. 모델 페이지에는 모델, 사용 방법, 예상 데이터 형식 및 일부 미세 조정 세부 정보에 대한 중요한 정보가 포함되어 있습니다.

데모 목적으로 기본적으로 제공되는 데이터 세트를 사용하여 모델을 미세 조정합니다. tf_flowers 다양한 종류의 꽃으로 구성된 데이터 세트. 자신의 데이터세트에 대한 미세 조정에는 데이터의 올바른 형식(모델 페이지에 설명된 대로)을 가져와서 다음으로 업로드하는 작업이 포함됩니다. 아마존 단순 스토리지 서비스 (Amazon S3) 및 데이터 원본 구성에서 해당 위치를 지정합니다.

기본적으로 설정된 동일한 하이퍼파라미터 값(epoch 수, 학습률 및 배치 크기)을 사용합니다. 또한 GPU 지원 ml.p3.2xlarge 인스턴스를 SageMaker 교육 인스턴스로 사용합니다.

Studio 콘솔에서 직접 교육 작업을 모니터링할 수 있으며 완료 시 알림을 받습니다.

미세 조정된 모델 배포

훈련이 완료되면 훈련 작업 세부 정보가 있는 동일한 페이지에서 미세 조정된 모델을 배포할 수 있습니다. 모델을 배포하기 위해 다른 인스턴스 유형 ml.p2.xlarge를 선택합니다. 낮은 추론 지연 시간에 필요한 GPU 가속을 여전히 제공하지만 가격은 더 저렴합니다. SageMaker 호스팅 인스턴스를 구성한 후 다음을 선택합니다. 배포. 영구 엔드포인트가 시작되어 실행될 때까지 5~10분이 소요될 수 있습니다.

그러면 엔드포인트가 작동하고 추론 요청에 응답할 준비가 된 것입니다!

추론 시간을 단축하기 위해 JumpStart는 새로 배포된 엔드포인트에서 추론을 실행하는 방법을 보여주는 샘플 노트북을 제공합니다. 선택하다 노트북 열기 아래에 엔드포인트 사용 스튜디오에서.

미세 조정된 모델을 점진적으로 학습하고 배포

미세 조정이 완료되면 모델을 추가 학습하여 성능을 높일 수 있습니다. 이 단계는 이미 미세 조정된 모델을 시작점으로 사용한다는 점을 제외하고 초기 미세 조정 프로세스와 매우 유사합니다. 새 데이터를 사용할 수 있지만 데이터세트 형식은 동일해야 합니다(동일한 클래스 집합).

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

이전 섹션에서는 JumpStart UI를 사용하여 몇 번의 클릭만으로 모델을 대화식으로 미세 조정, 배포 및 점진적으로 훈련하는 방법을 보여주었습니다. 또한 JumpStart의 모델을 사용하고 SageMaker SDK에 통합된 API를 사용하여 프로그래밍 방식으로 쉽게 미세 조정할 수 있습니다. 이제 이전 프로세스를 복제하는 방법에 대한 간단한 예를 살펴보겠습니다. 이 데모의 모든 단계는 함께 제공되는 노트북에서 사용할 수 있습니다. JumpStart 소개 – 이미지 분류.

사전 훈련된 모델 미세 조정

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

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
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 이전에 사용한 동일한 모델에 해당합니다. 식별자의 ic은 이미지 분류에 해당합니다.

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

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
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,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_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.

미세 조정된 모델 배포

훈련이 완료되면 미세 조정된 모델을 배포할 수 있습니다. 그렇게 하려면 우리가 얻어야 할 것은 추론 스크립트 URI(모델이 배포된 후 추론에 사용되는 방식을 결정하는 코드)와 우리가 선택한 모델을 호스팅할 적절한 모델 서버를 포함하는 추론 컨테이너 이미지 URI뿐입니다. 다음 코드를 참조하십시오.

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, 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"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

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

다음으로 엔드포인트를 호출하여 예시 이미지에 어떤 종류의 꽃이 있는지 예측합니다. 우리는 사용 query_endpointparse_response 함께 제공되는 도움말에 정의된 도우미 기능 수첩.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

미세 조정된 모델을 점진적으로 학습하고 재배포

새로운 이미지에 대해 추가 훈련을 통해 미세 조정된 모델의 성능을 높일 수 있습니다. 이를 위해 새로운 이미지나 기존 이미지를 얼마든지 사용할 수 있지만 데이터세트 형식은 동일하게 유지되어야 합니다(동일한 클래스 세트). 증분 학습 단계는 미세 조정 프로세스와 유사하지만 중요한 차이점이 있습니다. 초기 미세 조정에서는 사전 학습된 모델로 시작하는 반면 증분 학습에서는 기존 미세 조정된 모델로 시작합니다. 다음 코드를 참조하십시오.

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

훈련이 완료되면 이전 섹션에서 설명한 것과 동일한 단계를 사용하여 모델을 배포할 수 있습니다.

결론

JumpStart는 ML을 빠르게 시작할 수 있게 해주는 SageMaker의 기능입니다. JumpStart는 사전 훈련된 오픈 소스 모델을 사용하여 이미지 분류, 객체 감지, 텍스트 분류, 문장 쌍 분류 및 질문 답변과 같은 일반적인 ML 문제를 해결합니다.

이 게시물에서는 사전 훈련된 이미지 분류 모델을 미세 조정하고 배포하는 방법을 보여주었습니다. 또한 이미지 분류를 위해 미세 조정된 모델을 점진적으로 훈련하는 방법을 보여주었습니다. JumpStart를 사용하면 코딩할 필요 없이 이 프로세스를 쉽게 수행할 수 있습니다. 솔루션을 직접 사용해 보고 어떻게 진행되는지 댓글로 알려주세요. JumpStart에 대해 자세히 알아보려면 AWS re:Invent 2020 비디오를 확인하십시오. Amazon SageMaker JumpStart로 몇 분 만에 ML 시작하기.

참고자료

  1. TensorFlow 팀, 2019

저자에 관하여

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

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

Amazon SageMaker JumpStart PlatoBlockchain 데이터 인텔리전스를 사용한 증분 교육. 수직 검색. 일체 포함.Ashish Khetan 박사 는 수석 응용 과학자입니다. Amazon SageMaker 점프스타트Amazon SageMaker 내장 알고리즘 기계 학습 알고리즘을 개발하는 데 도움이 됩니다. 그는 기계 학습 및 통계적 추론 분야에서 활발한 연구원이며 NeurIPS, ICML, ICLR, JMLR, ACL 및 EMNLP 컨퍼런스에서 많은 논문을 발표했습니다.

타임 스탬프 :

더보기 AWS 기계 학습