Amazon SageMaker SageMaker에서의 점진적 훈련 - 아마존 SageMaker

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

Amazon SageMaker SageMaker에서의 점진적 훈련

시간이 흐름에 따라 모델이 이전만큼 좋은 추론을 생성하지 않는다는 사실을 알 수 있습니다. 점진적 훈련을 적용하면 기존 모델의 결과물 및 확장된 데이터 세트를 사용하여 새로운 모델을 훈련할 수 있습니다. 점진적 훈련은 시간 및 리소스를 둘 다 절약할 수 있습니다.

점진적 훈련 사용:

  • 모델 성능이 좋지 않았던 이전 훈련에서 고려하지 않은 기본 패턴이 포함되어 있는 확장된 데이터 세트를 사용하여 새로운 모델을 훈련합니다.

  • 훈련 작업에서 모델 결과물 또는 공개적으로 사용 가능한 모델의 결과물 중 일부를 사용합니다. 새 모델을 처음부터 훈련할 필요는 없습니다.

  • 중지된 훈련 작업을 다시 시작합니다.

  • 다른 하이퍼파라미터 설정을 사용하거나 다른 데이터 세트를 사용하여 모델의 여러 변형을 훈련합니다.

훈련 작업에 대한 자세한 정보는 Amazon SageMaker SageMaker를 사용하여 모델 훈련 단원을 참조하십시오.

SageMaker 콘솔 또는 를 사용하여 점진적으로 훈련할 수 있습니다.Amazon SageMaker Python SDK.

중요

현재 Object Detection 알고리즘, Image Classification 알고리즘, 의미 체계 분할 알고리즘의 세 가지 기본 제공 알고리즘에서만 점진적 훈련을 지원합니다.

점진적 훈련 수행(콘솔)

이 절차를 완료하려면 다음이 필요합니다.

  • 교육을 저장한 Amazon Simple Storage Service (Amazon S3) 버킷 URI데이터.

  • 작업의 출력을 저장하고자 하는 S3 버킷 URI입니다.

  • 훈련 코드가 저장되는 Amazon Elastic Container 레지스트리 경로입니다. 자세한 정보는 Docker 레지스트리 경로 및 예제 코드을 참조하십시오.

  • 점진적 훈련에 사용하려는 모델 결과물을 저장한 S3 버킷의 URL. 모델 결과물의 URL을 찾으려면 모델을 생성하는 데 사용한 훈련 작업의 세부 정보 페이지를 참조하십시오. 세부 정보 페이지를 찾으려면 SageMaker 콘솔에서추론, 선택모델그런 다음 모델을 선택합니다.

중지된 훈련 작업을 다시 시작하려면 모델 또는 완료된 훈련 작업에서 하는 것처럼 세부 정보 페이지에 저장된 모델 결과물에 대한 이 URL을 사용합니다.

점진적 훈련을 수행하려면(콘솔)

  1. https://console.aws.amazon.com/sagemaker/에서 Amazon SageMaker 콘솔을 엽니다.

  2. 탐색 창에서 훈련을 선택한 후 훈련 작업을 선택합니다.

  3. 훈련 작업 생성을 선택합니다.

  4. 훈련 작업의 이름을 입력합니다. 이름은 에서 고유해야 합니다.AWS지역 내AWS계정. 훈련 작업 이름은 1~63자여야 합니다. 유효한 문자: a-z, A-Z, 0-9 및 . : + = @ _ % -(하이픈)

  5. 사용하려는 알고리즘을 선택합니다. 알고리즘에 대한 자세한 정보는 Amazon 사용 SageMaker 내장 알고리즘 또는 사전 훈련된 모델 단원을 참조하십시오.

  6. (선택 사항) 리소스 구성에서 기본값을 그대로 두거나 리소스 사용량을 늘려 계산 시간을 줄일 수 있습니다.

    1. (선택 사항) 인스턴스 유형에서, 사용하려는 ML 컴퓨팅 인스턴스 유형을 선택합니다. 대다수의 경우에 ml.m4.xlarge이면 충분합니다.

    2. 인스턴스 수에, 기본값인 1을 사용합니다.

    3. (선택 사항) 인스턴스당 추가 볼륨 크기(GB)에서 프로비저닝하려는 ML 스토리지 볼륨의 크기를 선택합니다. 대부분의 경우 기본값인 1을 사용할 수 있습니다. 큰 데이터 세트를 사용하는 경우에는 더 큰 크기를 사용합니다.

  7. 훈련 데이터 세트에 필요한 입력 데이터에 대한 정보를 제공합니다.

    1. 채널 이름은 기본값(train)을 그대로 두거나 훈련 데이터 세트에 대해 유의미한 이름을 입력합니다(예: expanded-training-dataset).

    2. F또는InputMode, 선택File. 점진적 훈련을 위해 파일 입력 모드를 사용해야 합니다.

    3. S3 데이터 배포 유형에서 FullyReplicated를 선택합니다. 이렇게 하면 각 ML 컴퓨팅 인스턴스가확장 데이터 세트점진적으로 훈련할 때.

    4. 확장된 데이터 세트가 압축되어 있지 않을 때는 압축 유형없음으로 설정합니다. 확장된 데이터 세트가 Gzip을 사용하여 압축된 경우에는 압축 유형을 Gzip으로 설정합니다.

    5. (선택 사항) 파일 입력 모드를 사용하는 경우에는 콘텐츠 유형은 비워둡니다. 파이프 입력 모드의 경우 적절한 MIME 유형을 지정합니다. 콘텐츠 유형은 데이터의 Multipurpose Internet Mail Extensions(MIME) 유형입니다.

    6. 데이터 세트가 RecordIO 형식으로 저장된 경우에는 레코드 래퍼RecordIO를 선택합니다. 데이터 세트가 RecordIO 형식 파일로 저장되지 않은 경우없음.

    7. S3 데이터 유형를 선택합니다. 데이터 세트가 단일 파일로 저장되면S3Prefix. 데이터 세트가 하나의 폴더 내에 여러 파일로 저장된 경우에는 매니페스트를 선택합니다.

    8. S3 위치에, 확장된 데이터 세트를 저장한 경로에 대한 URL을 입력합니다.

    9. 완료를 선택합니다.

  8. 훈련 작업의 모델 결과물을 사용하려면 새 채널을 추가하고 해당 모델 결과물에 대해 필요한 정보를 제공해야 합니다.

    1. 입력 데이터 구성에서 채널 추가를 선택합니다.

    2. 채널 이름에, 채널을 모델 결과물의 소스로 식별할 수 있는 model을 입력합니다.

    3. InputMode에서 파일을 선택합니다. 모델 결과물은 파일로 저장됩니다.

    4. S3 데이터 배포 유형에서 FullyReplicated를 선택합니다. 이는 각 ML 컴퓨팅 인스턴스가 훈련에 모든 모델 결과물을 사용해야 함을 나타냅니다.

    5. 압축 유형, 선택없음채널에 모델을 사용하고 있기 때문입니다..

    6. 콘텐츠 유형은 비워 둡니다. 콘텐츠 유형은 데이터의 Multipurpose Internet Mail Extensions(MIME) 유형입니다. 모델 결과물은 비워 둡니다.

    7. 모델 결과물이 RecordIO 형식으로 저장되지 않았기 때문에 레코드 래퍼없음으로 설정합니다.

    8. 기본 제공 알고리즘을 사용하거나 모델을 단일 파일로 저장하는 알고리즘을 사용 중인 경우 S3 데이터 유형에서 S3Prefix를 선택합니다. 모델을 여러 파일로 저장하는 알고리즘을 사용 중인 경우에는 매니페스트를 선택합니다.

    9. S3 위치에, 모델 결과물을 저장한 경로에 대한 URL을 입력합니다. 일반적으로 모델은 model.tar.gz라는 이름으로 저장됩니다. 모델 결과물에 대한 URL을 찾으려면 탐색 창에서 추론을 선택한 후 모델을 선택합니다. 모델 목록에서 모델을 선택하면 세부 정보 페이지가 표시됩니다. 모델 결과물의 URL이 기본 컨테이너 아래에 나열됩니다.

    10. 완료를 선택합니다.

  9. 출력 데이터 구성에 다음 정보를 입력합니다.

    1. S3 위치에 출력 데이터를 저장하려는 S3 버킷의 경로를 입력합니다.

    2. (선택 사항) Encryption key(암호화 키)에서 AWS Key Management Service(AWS KMS) 암호화 키를 추가하여 유휴 상태의 출력 데이터를 암호화할 수 있습니다. 키 ID 또는 Amazon 리소스 번호(ARN)를 입력합니다. 자세한 정보는 KMS 관리형 암호화 키를 참조하십시오.

  10. (선택 사항) 태그에, 훈련 작업에 하나 이상의 태그를 추가합니다. A태그를 정의하고 할당할 수 있는 메타데이터입니다.AWS있습니다. 이 경우, 태그를 사용하여 훈련 작업을 관리할 수 있습니다. 태그는 사용자가 정의하는 키와 값으로 구성됩니다. 예를 들어, Project를 키로 사용하고, 훈련 작업과 관련된 프로젝트를 지칭하는 값(예: Home value forecasts)을 사용하여 태그를 생성하려고 합니다.

  11. 훈련 작업 생성을 선택합니다. 훈련 SageMaker 생성하고 실행합니다..

훈련 작업이 완료되면 새로 훈련된 모델 결과물이Output 경로에서 제공한출력 데이터 구성필드. 예측을 얻기 위해 모델을 배포하려면 5단계: Amazon EC2 EC2에 모델 배포 단원을 참조하십시오.

점진적 훈련 수행(API)

이 예에서는 SageMaker API를 사용하여 SageMaker 이미지 분류 알고리즘을 사용하여 모델을 훈련하는 방법을 보여줍니다.칼텍 256 이미지 데이터세트그런 다음 첫 번째 모델을 사용하여 새 모델을 훈련시킵니다. Amazon S3 입력 및 출력 소스에 사용합니다. 점진적 훈련 사용에 대한 자세한 정보는 점진적 훈련 샘플 노트북을 참조하십시오.

참고

이 예에서는 점진적 훈련에 원래 데이터 세트를 사용했는데 새로 추가한 샘플이 포함된 데이터 세트처럼 다른 데이터 세트를 사용할 수도 있습니다. 새 모델을 훈련하려면 S3에 새 데이터 세트를 업로드하고 사용된 data_channels 변수를 조정합니다.

GetAWS Identity and Access Management필요한 권한을 부여하는 (IAM) 역할 및 환경 변수를 초기화합니다.

import sagemaker from sagemaker import get_execution_role role = get_execution_role() print(role) sess = sagemaker.Session() bucket=sess.default_bucket() print(bucket) prefix = 'ic-incr-training'

Image Classification 알고리즘에 대한 훈련 이미지를 가져옵니다.

from sagemaker.amazon.amazon_estimator import get_image_uri training_image = get_image_uri(sess.boto_region_name, 'image-classification', repo_version="latest") #Display the training image print (training_image)

훈련 및 검증 데이터 세트를 다운로드한 후 Amazon Simple Storage Service (Amazon S3) 에 업로드합니다.

import os import urllib.request import boto3 # Define a download function def download(url): filename = url.split("/")[-1] if not os.path.exists(filename): urllib.request.urlretrieve(url, filename) # Download the caltech-256 training and validation datasets download('http://data.mxnet.io/data/caltech-256/caltech-256-60-train.rec') download('http://data.mxnet.io/data/caltech-256/caltech-256-60-val.rec') # Create four channels: train, validation, train_lst, and validation_lst s3train = 's3://{}/{}/train/'.format(bucket, prefix) s3validation = 's3://{}/{}/validation/'.format(bucket, prefix) # Upload the first files to the train and validation channels !aws s3 cp caltech-256-60-train.rec $s3train --quiet !aws s3 cp caltech-256-60-val.rec $s3validation --quiet

훈련 하이퍼파라미터를 정의합니다.

# Define hyperparameters for the estimator hyperparams = { "num_layers": "18", "resize": "32", "num_training_samples": "50000", "num_classes": "10", "image_shape": "3,28,28", "mini_batch_size": "128", "epochs": "3", "learning_rate": "0.1", "lr_scheduler_step": "2,3", "lr_scheduler_factor": "0.1", "augmentation_type": "crop_color", "optimizer": "sgd", "momentum": "0.9", "weight_decay": "0.0001", "beta_1": "0.9", "beta_2": "0.999", "gamma": "0.9", "eps": "1e-8", "top_k": "5", "checkpoint_frequency": "1", "use_pretrained_model": "0", "model_prefix": "" }

예측기 객체를 생성하고 훈련 및 검증 데이터 세트를 사용하여 첫 번째 모델을 훈련합니다.

# Fit the base estimator s3_output_location = 's3://{}/{}/output'.format(bucket, prefix) ic = sagemaker.estimator.Estimator(training_image, role, instance_count=1, instance_type='ml.p2.xlarge', volume_size=50, max_run=360000, input_mode='File', output_path=s3_output_location, sagemaker_session=sess, hyperparameters=hyperparams) train_data = sagemaker.inputs.TrainingInput(s3train, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='S3Prefix') validation_data = sagemaker.inputs.TrainingInput(s3validation, distribution='FullyReplicated', content_type='application/x-recordio', s3_data_type='S3Prefix') data_channels = {'train': train_data, 'validation': validation_data} ic.fit(inputs=data_channels, logs=True)

모델을 사용하여 다른 모델을 점진적으로 훈련하려면 새 예측기 객체를 생성하고 모델 결과물 (ic.model_data, 이 예에서는) f또는model_uri입력 인수:

# Given the base estimator, create a new one for incremental training incr_ic = sagemaker.estimator.Estimator(training_image, role, instance_count=1, instance_type='ml.p2.xlarge', volume_size=50, max_run=360000, input_mode='File', output_path=s3_output_location, sagemaker_session=sess, hyperparameters=hyperparams, model_uri=ic.model_data) # This parameter will ingest the previous job's model as a new channel incr_ic.fit(inputs=data_channels, logs=True)

훈련 작업이 완료되면 새로 훈련된 모델 결과물이 Output_path에 입력한 S3 output path 아래에 저장됩니다. 예측을 얻기 위해 모델을 배포하려면 5단계: Amazon EC2 EC2에 모델 배포 단원을 참조하십시오.