Amazon SageMaker 작업 사용 - Amazon SageMaker

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

Amazon SageMaker 작업 사용

이 섹션은 SageMaker Kubernetes용 연산자 의 원래 버전을 기반으로 합니다.

중요

Kubernetes용 SageMaker Operators 의 원래 버전에 대한 개발 및 기술 지원을 중단합니다.

현재 Kubernetes용 SageMaker 연산자 버전 v1.2.2 이하를 사용하는 경우 리소스를 ACK Amazon용 서비스 컨트롤러 SageMaker로 마이그레이션하는 것이 좋습니다. ACK 서비스 컨트롤러는 Kubernetes용 AWS 컨트롤러(ACK)를 기반으로 하는 Kubernetes용 차세대 SageMaker 연산자입니다.

마이그레이션 단계에 대한 자세한 내용은 리소스를 최신 연산자로 마이그레이션섹션을 참조하세요.

Kubernetes용 SageMaker Operators 원본 버전 지원 종료 시 자주 묻는 질문에 대한 답변은 섹션을 참조하세요. Kubernetes용 연산자 원본 버전의 SageMaker 지원 종료 발표

Kubernetes용 연산자를 사용하여 Amazon SageMaker 작업을 실행하려면 YAML 파일을 적용하거나 제공된 Helm 차트를 사용할 수 있습니다.

다음 자습서의 모든 샘플 연산자 작업은 퍼블릭 MNIST 데이터 세트에서 가져온 샘플 데이터를 사용합니다. 이 샘플을 실행하려면 Amazon S3 버킷으로 데이터 세트를 다운로드합니다. 데이터 세트 다운로드에서 MNIST 데이터 세트를 찾을 수 있습니다.

TrainingJob 연산자

훈련 작업 운영자는 에서 지정된 훈련 작업 사양을 SageMaker 시작하여 로 조정합니다 SageMaker. SageMaker CreateTrainingJob API 설명서 에서 SageMaker 훈련 작업에 대해 자세히 알아볼 수 있습니다.

YAML 파일을 TrainingJob 사용하여 생성

  1. 다음 명령을 사용하여 훈련을 위한 샘플 YAML 파일을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. xgboost-mnist-trainingjob.yaml 파일을 편집하여 roleArn 파라미터를 <sagemaker-execution-role>, 실행 SageMaker 역할에 쓰기 액세스 권한이 있는 Amazon S3 버킷outputPath으로 바꿉니다. 가 사용자를 대신하여 Amazon S3, Amazon CloudWatch및 기타 서비스에 액세스할 SageMaker 수 있는 권한이 roleArn 있어야 합니다. 생성에 대한 자세한 내용은 역할 섹션을 SageMaker ExecutionRole참조하세요. SageMaker 다음 명령을 사용하여 YAML 파일을 적용합니다.

    kubectl apply -f xgboost-mnist-trainingjob.yaml

Helm 차트를 TrainingJob 사용하여 생성

Helm 차트를 사용하여 를 실행할 수 있습니다 TrainingJobs.

  1. 다음 명령을 사용하여 GitHub 리포지토리를 복제하여 소스를 가져옵니다.

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ 폴더로 이동한 다음 values.yaml파일을 편집하여 rolearnoutputpath등의 값을 계정에 해당하는 값으로 대체합니다. 가 사용자를 대신하여 Amazon S3, Amazon CloudWatch및 기타 서비스에 액세스할 SageMaker 수 있도록 역할에ARN 권한이 있어야 합니다. 생성에 대한 자세한 내용은 역할 섹션을 SageMaker ExecutionRole참조하세요. SageMaker

생성 TrainingJob

values.yaml에서 역할 및 Amazon S3 버킷이 적절한 값으로 대체되었으면 다음 명령을 사용하여 훈련 작업을 생성할 수 있습니다.

helm install . --generate-name

출력은 다음과 같아야 합니다.

NAME: chart-12345678 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-trainingjob.

훈련 Helm 차트 확인

Helm 차트가 성공적으로 생성되었는지 확인하려면 다음을 실행합니다.

helm ls

출력은 다음과 같아야 합니다.

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-12345678 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-12345678 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

helm installTrainingJobKubernetes 리소스를 생성합니다. 운영자는 에서 실제 훈련 작업을 시작하고 TrainingJob Kubernetes 리소스를 SageMaker 업데이트하여 의 작업 상태를 반영합니다 SageMaker. 작업 기간 동안 사용된 리소스에 대한 SageMaker 요금이 발생합니다. 작업이 완료되거나 중지된 후에는 요금이 발생하지 않습니다.

참고: 실행 중인 훈련 작업을 업데이트할 수 SageMaker 없습니다. 파라미터를 편집하고 구성 파일을 다시 적용할 수는 없습니다. 메타데이터 이름을 변경하거나 기존 작업을 삭제하고 새 작업을 생성하세요. KubeflowTFJob와 같은 기존 훈련 작업 연산자와 마찬가지로 update는 지원되지 않습니다.

목록 TrainingJobs

다음 명령을 사용하여 Kubernetes 연산자를 사용하여 생성된 모든 작업을 나열합니다.

kubectl get TrainingJob

모든 작업을 나열하는 출력은 다음과 같아야 합니다.

kubectl get trainingjobs NAME STATUS SECONDARY-STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-from-for-s3 InProgress Starting 2019-11-20T23:42:35Z xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f

훈련 작업은 작업이 완료되거나 실패한 후에도 계속 나열됩니다. 다음 삭제 TrainingJobs단계에 따라 목록에서 TrainingJob작업을 제거할 수 있습니다. 완료 또는 중지된 작업에는 SageMaker 리소스 요금이 부과되지 않습니다.

TrainingJob 상태 값

STATUS 필드는 다음 값 중 하나일 수 있습니다.

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

이러한 상태는 SageMaker 공식 API 설명서 에서 직접 가져옵니다.

공식 SageMaker 상태 외에도 가 STATUS가 될 수 있습니다SynchronizingK8sJobWithSageMaker. 이는 연산자가 아직 작업을 처리하지 않았음을 의미합니다.

보조 상태 값

보조 상태는 SageMaker 공식 API 설명서 에서 직접 가져옵니다. 여기에는 작업 상태에 대한 보다 세부적인 정보가 포함되어 있습니다.

설명 TrainingJob

describe kubectl명령을 사용하여 훈련 작업에 대한 자세한 내용을 확인할 수 있습니다. 이는 일반적으로 문제를 디버깅하거나 훈련 작업의 파라미터를 확인하는 데 사용됩니다. 훈련 작업에 대한 정보를 얻으려면 다음 명령을 사용합니다.

kubectl describe trainingjob xgboost-mnist-from-for-s3

훈련 작업에 대한 출력은 다음과 같아야 합니다.

Name: xgboost-mnist-from-for-s3 Namespace: default Labels: <none> Annotations: <none> API Version: sagemaker.aws.amazon.com/v1 Kind: TrainingJob Metadata: Creation Timestamp: 2019-11-20T23:42:35Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 23119 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3 UID: 6d7uiui-0bef-11ea-b94e-0ed467example Spec: Algorithm Specification: Training Image: 8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Hyper Parameters: Name: eta Value: 0.2 Name: gamma Value: 4 Name: max_depth Value: 5 Name: min_child_weight Value: 6 Name: num_class Value: 10 Name: num_round Value: 10 Name: objective Value: multi:softmax Name: silent Value: 0 Input Data Config: Channel Name: train Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: S 3 Output Path: s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/ Region: us-east-2 Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole Stopping Condition: Max Runtime In Seconds: 86400 Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example Status: Cloud Watch Log URL: https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix Last Check Time: 2019-11-20T23:44:29Z Sage Maker Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample Secondary Status: Downloading Training Job Status: InProgress Events: <none>

에서 로그 보기 TrainingJobs

다음 명령을 사용하여 kmeans-mnist훈련 작업의 로그를 확인합니다.

kubectl smlogs trainingjob xgboost-mnist-from-for-s3

출력은 다음과 비슷한 형태가 됩니다. 인스턴스의 로그는 시간순으로 정렬됩니다.

"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting" xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training. xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ',' xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated

삭제 TrainingJobs

다음 명령을 사용하여 Amazon 에서 훈련 작업을 중지합니다 SageMaker.

kubectl delete trainingjob xgboost-mnist-from-for-s3

이 명령은 Kubernetes에서 SageMaker 훈련 작업을 제거합니다. 이 명령은 다음 출력을 반환합니다.

trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted

에서 작업이 계속 진행 중이면 작업이 중지 SageMaker됩니다. 작업이 중지되거나 완료된 후에는 SageMaker 리소스에 대한 요금이 부과되지 않습니다.

참고: 훈련 작업은 삭제하지 SageMaker 않습니다. 중지된 작업은 SageMaker 콘솔에 계속 표시됩니다. delete 명령은 에서 리소스를 정리하는 데 약 2분이 걸립니다 SageMaker.

연산자 HyperParameterTuningJob

하이퍼파라미터 튜닝 작업 연산자는 지정된 하이퍼파라미터 튜닝 작업 사양을 에서 시작하여 SageMaker 로 조정합니다 SageMaker. SageMaker CreateHyperParameterTuningJob API 설명서 에서 SageMaker 하이퍼파라미터 튜닝 작업에 대해 자세히 알아볼 수 있습니다.

YAML 파일을 HyperparameterTuningJob 사용하여 생성

  1. 다음 명령을 사용하여 하이퍼파라미터 튜닝 작업에 대한 샘플 YAML 파일을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. xgboost-mnist-hpo.yaml 파일을 편집하여 roleArn파라미터를 sagemaker-execution-role으로 대체합니다. 하이퍼파라미터 조정 작업이 성공하려면 s3InputPaths3OutputPath를 계정에 해당하는 값으로 변경해야 합니다. 다음 명령을 사용하여 업데이트 YAML 파일을 적용합니다.

    kubectl apply -f xgboost-mnist-hpo.yaml

Helm 차트를 HyperparameterTuningJob 사용하여 생성

Helm 차트를 사용하여 하이퍼파라미터 조정 작업을 실행할 수 있습니다.

  1. 다음 명령을 사용하여 GitHub 리포지토리를 복제하여 소스를 가져옵니다.

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/ 폴더로 이동합니다.

  3. values.yaml 파일을 편집하여 roleArn파라미터를 sagemaker-execution-role으로 대체합니다. 하이퍼파라미터 조정 작업이 성공하려면 s3InputPaths3OutputPath를 계정에 해당하는 값으로 변경해야 합니다.

생성 HyperparameterTuningJob

values.yaml에서 역할 및 Amazon S3 경로가 적절한 값으로 대체되었으면 다음 명령을 사용하여 하이퍼파라미터 조정 작업을 생성할 수 있습니다.

helm install . --generate-name

출력은 다음과 비슷한 형태가 됩니다.

NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-hyperparametertuningjob.

차트 설치 확인

Helm 차트가 성공적으로 생성되었는지 확인하려면 다음 명령을 실행합니다.

helm ls

출력은 다음과 같아야 합니다.

NAME NAMESPACE REVISION UPDATED chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 STATUS CHART APP VERSION chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

helm installHyperParameterTuningJobKubernetes 리소스를 생성합니다. 운영자는 에서 실제 하이퍼파라미터 최적화 작업을 시작하고 에서 작업의 상태를 반영하도록 HyperParameterTuningJob Kubernetes 리소스를 SageMaker 업데이트합니다 SageMaker. 작업 기간 동안 사용된 SageMaker 리소스에 대한 요금이 발생합니다. 작업이 완료되거나 중지된 후에는 요금이 발생하지 않습니다.

참고: 실행 중인 하이퍼파라미터 튜닝 작업을 업데이트할 수 SageMaker 없습니다. 파라미터를 편집하고 구성 파일을 다시 적용할 수는 없습니다. 메타데이터 이름을 변경하거나 기존 작업을 삭제하고 새 작업을 생성해야 합니다. Kubeflow의 TFJob과 같은 기존 훈련 작업자와 마찬가지로 update는 지원되지 않습니다.

목록 HyperparameterTuningJobs

다음 명령을 사용하여 Kubernetes 연산자를 사용하여 생성된 모든 작업을 나열합니다.

kubectl get hyperparametertuningjob

출력은 다음과 같아야 합니다.

NAME STATUS CREATION-TIME COMPLETED INPROGRESS ERRORS STOPPED BEST-TRAINING-JOB SAGEMAKER-JOB-NAME xgboost-mnist-hpo Completed 2019-10-17T01:15:52Z 10 0 0 0 xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123 xgboostha92f5e3cf07b11e9bf6c123

하이퍼파라미터 조정 작업은 작업이 완료되거나 실패한 후에도 계속 나열됩니다. 다음 삭제 HyperparameterTuningJob단계에 따라 목록에서 hyperparametertuningjob을 제거할 수 있습니다. 완료 또는 중지된 작업에는 SageMaker 리소스 요금이 부과되지 않습니다.

하이퍼파라미터 조정 작업 상태 값

STATUS 필드는 다음 값 중 하나일 수 있습니다.

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

이러한 상태는 SageMaker 공식 API 설명서 에서 직접 가져옵니다.

공식 SageMaker 상태 외에도 가 STATUS가 될 수 있습니다SynchronizingK8sJobWithSageMaker. 이는 연산자가 아직 작업을 처리하지 않았음을 의미합니다.

상태 카운터

출력에는 COMPLETED, INPROGRESS등의 여러 카운터가 있습니다. 이는 각각 완료한 훈련 작업과 진행 중인 훈련 작업 수를 나타냅니다. 이러한 결정 방법에 대한 자세한 내용은 설명서TrainingJobStatusCounters의 섹션을 SageMaker API 참조하세요.

최고 TrainingJob

이 열에는 선택한 지표를 가장 잘 최적화한 TrainingJob의 이름이 포함됩니다.

조정된 하이퍼파라미터의 요약을 보려면 다음을 실행합니다.

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

TrainingJob에 대한 자세한 정보를 보려면 다음을 실행합니다.

kubectl describe trainingjobs <job name>

스패닝됨 TrainingJobs

다음 명령을 실행하여 HyperparameterTuningJob에서 시작된 Kubernetes의 훈련 작업 10개를 모두 추적할 수도 있습니다.

kubectl get trainingjobs

설명 HyperparameterTuningJob

describe kubectl명령을 사용하여 디버깅 세부 정보를 얻을 수 있습니다.

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

튜닝 작업에 대한 정보 외에도 Kubernetes용 SageMaker Operator는 다음과 같이 describe 출력의 하이퍼파라미터 튜닝 작업에서 찾을 수 있는 최상의 훈련 작업을 노출합니다.

Name: xgboost-mnist-hpo Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":... API Version: sagemaker.aws.amazon.com/v1 Kind: HyperparameterTuningJob Metadata: Creation Timestamp: 2019-10-17T01:15:52Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 8167 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo UID: a92f5e3c-f07b-11e9-bf6c-06d6f303uidu Spec: Hyper Parameter Tuning Job Config: Hyper Parameter Tuning Job Objective: Metric Name: validation:error Type: Minimize Parameter Ranges: Integer Parameter Ranges: Max Value: 20 Min Value: 10 Name: num_round Scaling Type: Linear Resource Limits: Max Number Of Training Jobs: 10 Max Parallel Training Jobs: 10 Strategy: Bayesian Training Job Early Stopping Type: Off Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Region: us-east-2 Training Job Definition: Algorithm Specification: Training Image: 12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Input Data Config: Channel Name: train Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: s3OutputPath: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Static Hyper Parameters: Name: base_score Value: 0.5 Name: booster Value: gbtree Name: csv_weights Value: 0 Name: dsplit Value: row Name: grow_policy Value: depthwise Name: lambda_bias Value: 0.0 Name: max_bin Value: 256 Name: max_leaves Value: 0 Name: normalize_type Value: tree Name: objective Value: reg:linear Name: one_drop Value: 0 Name: prob_buffer_row Value: 1.0 Name: process_type Value: default Name: rate_drop Value: 0.0 Name: refresh_leaf Value: 1 Name: sample_type Value: uniform Name: scale_pos_weight Value: 1.0 Name: silent Value: 0 Name: sketch_eps Value: 0.03 Name: skip_drop Value: 0.0 Name: tree_method Value: auto Name: tweedie_variance_power Value: 1.5 Stopping Condition: Max Runtime In Seconds: 86400 Status: Best Training Job: Creation Time: 2019-10-17T01:16:14Z Final Hyper Parameter Tuning Job Objective Metric: Metric Name: validation:error Value: Objective Status: Succeeded Training End Time: 2019-10-17T01:20:24Z Training Job Arn: arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample Training Job Name: xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059 Training Job Status: Completed Training Start Time: 2019-10-17T01:18:35Z Tuned Hyper Parameters: Name: num_round Value: 18 Hyper Parameter Tuning Job Status: Completed Last Check Time: 2019-10-17T01:21:01Z Sage Maker Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Training Job Status Counters: Completed: 10 In Progress: 0 Non Retryable Error: 0 Retryable Error: 0 Stopped: 0 Total Error: 0 Events: <none>

에서 로그 보기 HyperparameterTuningJobs

하이퍼파라미터 조정 작업에는 로그가 없지만 해당 작업에서 시작한 모든 훈련 작업에는 로그가 있습니다. 이러한 로그는 마치 일반 훈련 작업과 마찬가지로 액세스할 수 있습니다. 자세한 내용은 에서 로그 보기 TrainingJobs 단원을 참조하십시오.

삭제 HyperparameterTuningJob

다음 명령을 사용하여 에서 하이퍼파라미터 작업을 중지합니다 SageMaker.

kubectl delete hyperparametertuningjob xgboost-mnist-hpo

이 명령은 Kubernetes 클러스터에서 하이퍼파라미터 튜닝 작업 및 관련 훈련 작업을 제거하고 에서 중지합니다 SageMaker. 중지하거나 완료한 작업에는 SageMaker 리소스 요금이 부과되지 않습니다. 는 하이퍼파라미터 튜닝 작업을 삭제하지 SageMaker 않습니다. 중지된 작업은 SageMaker 콘솔에 계속 표시됩니다.

출력은 다음과 같아야 합니다.

hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted

참고 : 삭제 명령은 에서 리소스를 정리하는 데 약 2분이 걸립니다 SageMaker.

BatchTransformJob 연산자

배치 변환 작업 연산자는 에서 시작하여 지정된 배치 변환 작업 사양을 SageMaker 로 조정합니다 SageMaker. SageMaker CreateTransformJob API 설명서 에서 SageMaker 배치 변환 작업에 대해 자세히 알아볼 수 있습니다.

YAML 파일을 BatchTransformJob 사용하여 생성

  1. 다음 명령을 사용하여 배치 변환 작업의 샘플 YAML 파일을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. 파일을 편집xgboost-mnist-batchtransform.yaml하여 필요한 파라미터를 변경하여 inputdataconfig를 입력 데이터 및 SageMaker 실행 역할이 쓰기 액세스 권한을 가진 Amazon S3 버킷s3OutputPath으로 바꿉니다.

  3. 다음 명령을 사용하여 YAML 파일을 적용합니다.

    kubectl apply -f xgboost-mnist-batchtransform.yaml

Helm 차트를 사용하여 생성 BatchTransformJob

Helm 차트를 사용하여 배치 변환 작업을 실행할 수 있습니다.

Helm 설치 관리자 디렉터리 가져오기

다음 명령을 사용하여 GitHub 리포지토리를 복제하여 소스를 가져옵니다.

git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git

Helm 차트 구성

amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/ 폴더로 이동합니다.

values.yaml 파일을 편집하여 를 inputdataconfig 입력 데이터 및 SageMaker 실행 역할에 쓰기 액세스 권한이 있는 S3 버킷 outputPath 으로 바꿉니다.

생성 BatchTransformJob

  1. 다음 명령을 사용하여 배치 변환 작업을 생성합니다.

    helm install . --generate-name

    출력은 다음과 같아야 합니다.

    NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-batch-transform-job.
  2. Helm 차트가 성공적으로 생성되었는지 확인하려면 다음 명령을 실행합니다.

    helm ls NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-batchtransformjob-0.1.0 chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

    이 명령은 BatchTransformJobKubernetes 리소스를 생성합니다. 연산자는 에서 실제 변환 작업을 시작하고 BatchTransformJob Kubernetes 리소스를 SageMaker 업데이트하여 의 작업 상태를 반영합니다 SageMaker. 작업 기간 동안 사용된 SageMaker 리소스에 대한 요금이 발생합니다. 작업이 완료되거나 중지된 후에는 요금이 발생하지 않습니다.

참고: 실행 중인 배치 변환 작업을 업데이트할 수 SageMaker 없습니다. 파라미터를 편집하고 구성 파일을 다시 적용할 수는 없습니다. 메타데이터 이름을 변경하거나 기존 작업을 삭제하고 새 작업을 생성해야 합니다. Kubeflow의 TFJob과 같은 기존 훈련 작업자와 마찬가지로 update는 지원되지 않습니다.

목록 BatchTransformJobs

다음 명령을 사용하여 Kubernetes 연산자를 사용하여 생성된 모든 작업을 나열합니다.

kubectl get batchtransformjob

출력은 다음과 같아야 합니다.

NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-batch-transform Completed 2019-11-18T03:44:00Z xgboost-mnist-a88fb19809b511eaac440aa8axgboost

배치 변환 작업은 작업이 완료되거나 실패한 후에도 계속 나열됩니다. 다음 삭제 BatchTransformJob단계에 따라 목록에서 hyperparametertuningjob을 제거할 수 있습니다. 완료 또는 중지된 작업에는 SageMaker 리소스 요금이 부과되지 않습니다.

배치 변환 상태 값

STATUS 필드는 다음 값 중 하나일 수 있습니다.

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

이러한 상태는 SageMaker 공식 API 설명서 에서 직접 가져옵니다.

공식 SageMaker 상태 외에도 이 STATUS가 될 수 있습니다SynchronizingK8sJobWithSageMaker. 이는 연산자가 아직 작업을 처리하지 않았음을 의미합니다.

설명 BatchTransformJob

describe kubectl명령을 사용하여 디버깅 세부 정보를 얻을 수 있습니다.

kubectl describe batchtransformjob xgboost-mnist-batch-transform

출력은 다음과 같아야 합니다.

Name: xgboost-mnist-batch-transform Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"... API Version: sagemaker.aws.amazon.com/v1 Kind: BatchTransformJob Metadata: Creation Timestamp: 2019-11-18T03:44:00Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21990924 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist UID: a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM Spec: Model Name: TrainingJob-20190814SMJOb-IKEB Region: us-east-1 Transform Input: Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Type: S3Prefix S 3 Uri: s3://amzn-s3-demo-bucket/mnist_kmeans_example/input Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB Transform Output: S 3 Output Path: s3://amzn-s3-demo-bucket/mnist_kmeans_example/output Transform Resources: Instance Count: 1 Instance Type: ml.m4.xlarge Status: Last Check Time: 2019-11-19T22:50:40Z Sage Maker Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aaSMJOB Transform Job Status: Completed Events: <none>

의 로그 보기 BatchTransformJobs

다음 명령을 사용하여 xgboost-mnist배치 변환 작업의 로그를 확인합니다.

kubectl smlogs batchtransformjob xgboost-mnist-batch-transform

삭제 BatchTransformJob

다음 명령을 사용하여 에서 배치 변환 작업을 중지합니다 SageMaker.

kubectl delete batchTransformJob xgboost-mnist-batch-transform

출력은 다음과 같아야 합니다.

batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted

이 명령은 Kubernetes 클러스터에서 배치 변환 작업을 제거하고 에서 중지합니다 SageMaker. 중지하거나 완료한 작업에는 리소스 요금이 SageMaker 부과되지 않습니다. 삭제는 에서 리소스를 정리하는 데 약 2분이 걸립니다 SageMaker.

참고: 배치 변환 작업은 삭제하지 SageMaker 않습니다. 중지된 작업은 SageMaker 콘솔에 계속 표시됩니다.

HostingDeployment 연산자

HostingDeployment 운영자는 실시간 추론을 위해 엔드포인트 생성 및 삭제와 기존 엔드포인트 업데이트를 지원합니다. 호스팅 배포 운영자는 에서 모델, 엔드포인트 구성 및 엔드포인트를 생성 SageMaker 하여 지정된 호스팅 배포 작업 사양을 로 조정합니다 SageMaker. SageMaker 추론에 대한 자세한 내용은 SageMaker CreateEndpoint API 설명서 에서 확인할 수 있습니다.

리소스 구성 HostingDeployment

다음 명령을 사용하여 호스팅 배포 작업의 샘플 YAML 파일을 다운로드합니다.

wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml

xgboost-mnist-hostingdeployment.yaml 파일에는 필요에 따라 편집할 수 있는 다음과 같은 구성 요소가 있습니다.

  • ProductionVariants. 프로덕션 변형은 설정된 가중치에 따라 모든 프로덕션 변형 간에 단일 model. SageMaker load-balances를 제공하는 인스턴스 세트입니다.

  • 모델. 모델은 모델을 제공하는 데 ARN 필요한 컨테이너 및 실행 역할입니다. 컨테이너가 하나 이상 필요합니다.

  • 컨테이너. 컨테이너는 데이터 세트와 제공 이미지를 지정합니다. 에서 제공하는 알고리즘 대신 사용자 지정 알고리즘을 사용하는 경우 SageMaker추론 코드는 SageMaker 요구 사항을 충족해야 합니다. 자세한 내용은 에서 자체 알고리즘 사용을 참조하세요 SageMaker.

생성 HostingDeployment

를 생성하려면 kubectl를 HostingDeployment사용하여 다음 명령hosting.yaml으로 파일을 적용합니다.

kubectl apply -f hosting.yaml

SageMaker 는 지정된 구성으로 엔드포인트를 생성합니다. 엔드포인트 수명 기간 동안 사용되는 리소스에 대한 SageMaker 요금이 발생합니다. 엔드포인트가 삭제되면 요금이 발생하지 않습니다.

생성 프로세스에는 10분 정도 걸립니다.

목록 HostingDeployments

이 생성 HostingDeployment 되었는지 확인하려면 다음 명령을 사용합니다.

kubectl get hostingdeployments

출력은 다음과 같아야 합니다.

NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Creating host-xgboost-def0e83e0d5f11eaaa450aSMLOGS

HostingDeployment 상태 값

상태 필드는 여러 값 중 하나일 수 있습니다.

  • SynchronizingK8sJobWithSageMaker: 연산자가 엔드포인트 생성을 준비 중입니다.

  • ReconcilingEndpoint: 연산자가 엔드포인트 리소스를 생성, 업데이트 또는 삭제하고 있습니다. 가 이 상태로 HostingDeployment 남아 있는 경우 kubectl describe를 사용하여 Additional 필드에서 이유를 확인합니다.

  • OutOfService: 엔드포인트는 수신 요청을 받아들이는 데 사용할 수 없습니다.

  • Creating: CreateEndpoint가 실행 중입니다.

  • Updating: UpdateEndpoint 또는 UpdateEndpointWeightsAndCapacities가 실행 중입니다.

  • SystemUpdating: 엔드포인트는 유지 관리 중이며 완료될 때까지 업데이트, 삭제 또는 조정할 수 없습니다. 이 유지 관리 작업은 VPC config, AWS KMS encryption, model, 인스턴스 유형 또는 인스턴스 수와 같은 고객 지정 값을 변경하지 않습니다.

  • RollingBack: 엔드포인트가 변형 가중치를 확대 또는 축소하거나 변경하지 못하고 이전 구성으로 롤백하는 중입니다. 롤백이 완료되면 엔드포인트는 InService상태로 돌아갑니다. 이 전환 상태는 오토스케일링이 켜져 있고 UpdateEndpointWeightsAndCapacities 통화의 일부로 또는 UpdateEndpointWeightsAndCapacities 작업이 명시적으로 호출될 때 변형 가중치 또는 용량 변경이 발생하는 엔드포인트에만 적용됩니다.

  • InService: 엔드포인트는 수신 요청을 처리하는 데 사용할 수 있습니다.

  • Deleting: DeleteEndpoint가 실행 중입니다.

  • Failed: 엔드포인트를 생성, 업데이트 또는 재조정할 수 없습니다. 실패에 대한 자세한 내용은 DescribeEndpoint:FailureReason를 사용합니다. DeleteEndpoint 는 실패한 엔드포인트에서 수행할 수 있는 유일한 작업입니다.

설명 HostingDeployment

describe kubectl명령을 사용하여 디버깅 세부 정보를 얻을 수 있습니다.

kubectl describe hostingdeployment

출력은 다음과 같아야 합니다.

Name: host-xgboost Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..." API Version: sagemaker.aws.amazon.com/v1 Kind: HostingDeployment Metadata: Creation Timestamp: 2019-11-22T19:40:00Z Finalizers: sagemaker-operator-finalizer Generation: 1 Resource Version: 4258134 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost UID: def0e83e-0d5f-11ea-aa45-0a3507uiduid Spec: Containers: Container Hostname: xgboost Image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest Model Data URL: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz Models: Containers: xgboost Execution Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Name: xgboost-model Primary Container: xgboost Production Variants: Initial Instance Count: 1 Instance Type: ml.c5.large Model Name: xgboost-model Variant Name: all-traffic Region: us-east-2 Status: Creation Time: 2019-11-22T19:40:04Z Endpoint Arn: arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample Endpoint Config Name: host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample Endpoint Name: host-xgboost-def0e83e0d5f11eaaa450a350733ba06 Endpoint Status: Creating Endpoint URL: https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations Last Check Time: 2019-11-22T19:43:57Z Last Modified Time: 2019-11-22T19:40:04Z Model Names: Name: xgboost-model Value: xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample Events: <none>

상태 필드는 다음 필드를 사용하여 자세한 정보를 제공합니다.

  • Additional: 호스팅 배포 상태에 대한 추가 정보입니다. 이 필드는 선택 사항이며 오류가 발생한 경우에만 입력됩니다.

  • Creation Time: 엔드포인트가 에서 생성된 시점입니다 SageMaker.

  • Endpoint ARN: SageMaker 엔드포인트 입니다ARN.

  • Endpoint Config Name: 엔드포인트 구성의 SageMaker 이름입니다.

  • Endpoint Name: 엔드포인트의 SageMaker 이름입니다.

  • Endpoint Status: 엔드포인트의 상태입니다.

  • Endpoint URL: 엔드포인트에 액세스하는 데 사용할 수 HTTPS URL 있는 입니다. 자세한 내용은 SageMaker 호스팅 서비스에 모델 배포를 참조하세요.

  • FailureReason: 생성, 업데이트 또는 삭제 명령이 실패할 경우 원인을 표시합니다.

  • Last Check Time: 연산자가 엔드포인트의 상태를 마지막으로 확인한 시간입니다.

  • Last Modified Time: 엔드포인트를 마지막으로 수정한 시간입니다.

  • Model Names: HostingDeployment 모델 이름에 대한 SageMaker 모델 이름의 키-값 쌍입니다.

API 엔드포인트 호출

엔드포인트 상태가 가 되면 인증 및 서명 URL 요청을 AWS CLI수행하는 를 사용하거나 c 와 같은 HTTP 클라이언트를 사용하는 두 가지 방법으로 엔드포인트를 호출InService할 수 있습니다URL. 자체 클라이언트를 사용하는 경우 AWS v4 URL 서명 및 인증을 직접 수행해야 합니다.

를 사용하여 엔드포인트를 호출하려면 다음 명령을 AWS CLI실행합니다. 리전 및 엔드포인트 이름을 엔드포인트의 리전 및 SageMaker 엔드포인트 이름으로 바꿔야 합니다. 이 정보는 kubectl describe의 출력에서 얻을 수 있습니다.

# Invoke the endpoint with mock input data. aws sagemaker-runtime invoke-endpoint \ --region us-east-2 \ --endpoint-name <endpoint name> \ --body $(seq 784 | xargs echo | sed 's/ /,/g') \ >(cat) \ --content-type text/csv > /dev/null

예를 들어 리전이 us-east-2이고 엔드포인트 구성 이름이 host-xgboost-f56b6b280d7511ea824b129926example인 경우 다음 명령으로 엔드포인트를 호출합니다.

aws sagemaker-runtime invoke-endpoint \ --region us-east-2 \ --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \ --body $(seq 784 | xargs echo | sed 's/ /,/g') \ >(cat) \ --content-type text/csv > /dev/null 4.95847082138

여기 4.95847082138은 모의 데이터에 대한 모델의 예측입니다.

업데이트 HostingDeployment

  1. 의 상태가 HostingDeployment 이면 업데이트할 InService수 있습니다. 가 서비스 HostingDeployment 되는 데 약 10분이 걸릴 수 있습니다. 다음 명령을 사용하여 InService상태인지 확인합니다.

    kubectl get hostingdeployments
  2. 상태가 가 되기 전에 를 업데이트할 HostingDeployment 수 있습니다InService. 연산자는 SageMaker 엔드포인트가 가 될 때까지 기다렸다가 업데이트를 InService 적용합니다.

    업데이트를 적용하려면 hosting.yaml파일을 수정합니다. 예를 들어 다음과 같이 initialInstanceCount필드를 1에서 2로 변경합니다.

    apiVersion: sagemaker.aws.amazon.com/v1 kind: HostingDeployment metadata: name: host-xgboost spec: region: us-east-2 productionVariants: - variantName: all-traffic modelName: xgboost-model initialInstanceCount: 2 instanceType: ml.c5.large models: - name: xgboost-model executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole primaryContainer: xgboost containers: - xgboost containers: - containerHostname: xgboost modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
  3. 파일을 저장한 다음 다음과 같이 kubectl을 사용하여 업데이트를 적용합니다. 그러면 InService상태에서 ReconcilingEndpoint상태로 변한 뒤 Updating상태로 변하는 것을 확인할 수 있습니다.

    $ kubectl apply -f hosting.yaml hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost ReconcilingEndpoint host-xgboost-def0e83e0d5f11eaaa450a350abcdef $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Updating host-xgboost-def0e83e0d5f11eaaa450a3507abcdef

SageMaker 는 모델과 함께 새 인스턴스 세트를 배포하고, 새 인스턴스를 사용하도록 트래픽을 전환하고, 이전 인스턴스를 드레이닝합니다. 이 프로세스가 시작되면 바로 Updating상태가 됩니다. 업데이트가 완료되면 엔드포인트는 InService가 됩니다. 이 프로세스에는 10분 정도 걸립니다.

삭제 HostingDeployment

  1. kubectl 를 사용하여 다음 명령을 HostingDeployment 사용하여 를 삭제합니다.

    kubectl delete hostingdeployments host-xgboost

    출력은 다음과 같아야 합니다.

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. 호스팅 배포가 삭제되었는지 확인하려면 다음 명령을 사용합니다.

    kubectl get hostingdeployments No resources found.

삭제된 엔드포인트에는 SageMaker 리소스 요금이 부과되지 않습니다.

ProcessingJob 연산자

ProcessingJob 연산자는 Amazon SageMaker 처리 작업을 시작하는 데 사용됩니다. 작업 SageMaker 처리에 대한 자세한 내용은 섹션을 참조하세요CreateProcessingJob.

YAML 파일을 ProcessingJob 사용하여 생성

YAML 파일을 사용하여 Amazon SageMaker 처리 작업을 생성하려면 다음 단계를 따르세요.

  1. kmeans_preprocessing.py 사전 처리 스크립트를 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. Amazon Simple Storage Service(S3) 버킷 중 하나에서 mnist_kmeans_example/processing_code폴더를 생성하고 스크립트를 폴더에 업로드합니다.

  3. kmeans-mnist-processingjob.yaml 파일을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. YAML 파일을 편집하여 를 지정sagemaker-execution-role하고 의 모든 인스턴스를 S3 버킷amzn-s3-demo-bucket으로 바꿉니다.

    ... metadata: name: kmeans-mnist-processing ... roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role> ... processingOutputConfig: outputs: ... s3Output: s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/ ... processingInputs: ... s3Input: s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py

    가 사용자를 대신하여 S3 버킷, Amazon CloudWatch및 기타 서비스에 액세스할 SageMaker 수 있는 권한이 sagemaker-execution-role 있어야 합니다. 실행 역할 생성에 대한 자세한 내용은 SageMaker 역할 섹션을 참조하세요.

  5. 다음 명령 중 하나를 사용하여 YAML 파일을 적용합니다.

    클러스터 범위 설치의 경우:

    kubectl apply -f kmeans-mnist-processingjob.yaml

    네임스페이스 범위 설치의 경우:

    kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>

목록 ProcessingJobs

다음 명령 중 하나를 사용하여 ProcessingJob 연산자를 사용하여 생성된 모든 작업을 나열합니다. SAGEMAKER-JOB-NAME 는 YAML 파일의 metadata 섹션에서 가져옵니다.

클러스터 범위 설치의 경우:

kubectl get ProcessingJob kmeans-mnist-processing

네임스페이스 범위 설치의 경우:

kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing

출력은 다음과 비슷한 형태가 됩니다.

NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385

출력에는 상태와 상관없이 모든 작업이 나열됩니다. 목록에서 작업을 제거하려면 처리 작업 삭제를 참조하세요.

ProcessingJob 상태
  • SynchronizingK8sJobWithSageMaker – 작업이 먼저 클러스터에 제출됩니다. 연산자가 요청을 받았으며 처리 작업을 생성할 준비를 하고 있습니다.

  • Reconciling – 연산자가 다른 오류와 함께 일시적 오류를 초기화하거나 복구 중입니다. 처리 작업이 이 상태로 유지되는 경우 kubectldescribe명령을 사용하여 Additional필드에서 이유를 확인합니다.

  • InProgress | Completed | Failed | Stopping | Stopped - SageMaker 처리 작업의 상태입니다. 자세한 내용은 DescribeProcessingJob를 참조하세요.

  • Error – 연산자는 조정을 통해 복구할 수 없습니다.

완료, 중지 또는 실패한 작업에는 리소스에 대한 SageMaker 추가 요금이 발생하지 않습니다.

설명 ProcessingJob

다음 명령 중 하나를 사용하여 처리 작업에 대한 자세한 내용을 볼 수 있습니다. 이러한 명령은 일반적으로 문제를 디버깅하거나 처리 작업의 파라미터를 확인하는 데 사용됩니다.

클러스터 범위 설치의 경우:

kubectl describe processingjob kmeans-mnist-processing

네임스페이스 범위 설치의 경우:

kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>

처리 작업의 출력은 다음과 비슷한 형태가 됩니다.

$ kubectl describe ProcessingJob kmeans-mnist-processing Name: kmeans-mnist-processing Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",... API Version: sagemaker.aws.amazon.com/v1 Kind: ProcessingJob Metadata: Creation Timestamp: 2020-09-22T21:13:25Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21746658 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing UID: 7410ed52-fd18-11ea-b19a-165ae9f9e385 Spec: App Specification: Container Entrypoint: python /opt/ml/processing/code/kmeans_preprocessing.py Image Uri: 763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04 Environment: Name: MYVAR Value: my_value Name: MYVAR2 Value: my_value2 Network Config: Processing Inputs: Input Name: mnist_tar s3Input: Local Path: /opt/ml/processing/input s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz Input Name: source_code s3Input: Local Path: /opt/ml/processing/code s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py Processing Output Config: Outputs: Output Name: train_data s3Output: Local Path: /opt/ml/processing/output_train/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: test_data s3Output: Local Path: /opt/ml/processing/output_test/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: valid_data s3Output: Local Path: /opt/ml/processing/output_valid/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Processing Resources: Cluster Config: Instance Count: 1 Instance Type: ml.m5.xlarge Volume Size In GB: 20 Region: us-west-2 Role Arn: arn:aws:iam::<acct-id>:role/m-sagemaker-role Stopping Condition: Max Runtime In Seconds: 1800 Tags: Key: tagKey Value: tagValue Status: Cloud Watch Log URL: https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix Last Check Time: 2020-09-22T21:14:29Z Processing Job Status: InProgress Sage Maker Processing Job Name: kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385 Events: <none>

삭제 ProcessingJob

처리 작업을 삭제하면 SageMaker 처리 작업은 Kubernetes에서 제거되지만 에서는 삭제되지 않습니다 SageMaker. 의 작업 상태가 InProgress SageMaker 인 경우 작업이 중지됩니다. 중지된 작업 처리에는 리소스 요금이 SageMaker 부과되지 않습니다. 다음 명령 중 하나를 사용하여 처리 작업을 삭제합니다.

클러스터 범위 설치의 경우:

kubectl delete processingjob kmeans-mnist-processing

네임스페이스 범위 설치의 경우:

kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>

처리 작업의 출력은 다음과 비슷한 형태가 됩니다.

processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted

참고

SageMaker 는 처리 작업을 삭제하지 않습니다. 중지된 작업은 SageMaker 콘솔에 계속 표시됩니다. delete 명령은 에서 리소스를 정리하는 데 몇 분 정도 걸립니다 SageMaker.

HostingAutoscalingPolicy (HAP) 연산자

HostingAutoscalingPolicy (HAP) 연산자는 리소스 목록을 입력IDs으로 가져와서 각 리소스에 동일한 정책을 적용합니다. 각 리소스 ID는 엔드포인트 이름과 변형 이름의 조합입니다. HAP 연산자는 두 단계를 수행합니다. 즉, 리소스를 등록한 IDs 다음 각 리소스 ID에 조정 정책을 적용합니다. 는 두 작업을 모두 Delete 취소합니다. 를 기존 SageMaker 엔드포인트HAP에 적용하거나 HostingDeployment 연산자 를 사용하여 새 SageMaker 엔드포인트를 생성할 수 있습니다. SageMaker Autoscaling에 대한 자세한 내용은 Application Autoscaling Policy 설명서 에서 확인할 수 있습니다.

참고

kubectl 명령에서 hostingautoscalingpolicy대신 짧은 형식인 hap을 사용할 수 있습니다.

YAML 파일을 HostingAutoscalingPolicy 사용하여 생성

YAML 파일을 사용하여 하나 이상의 SageMaker 엔드포인트에 사전 정의된 지표 또는 사용자 지정 지표를 적용하는 HostingAutoscalingPolicy (HAP)를 생성합니다.

Amazon은 변형에 Autoscaling을 적용하기 위해 특정 값이 SageMaker 필요합니다. 이러한 값이 YAML 사양에 지정되지 않은 경우 HAP 연산자는 다음 기본값을 적용합니다.

# Do not change Namespace = "sagemaker" # Do not change ScalableDimension = "sagemaker:variant:DesiredInstanceCount" # Only one supported PolicyType = "TargetTrackingScaling" # This is the default policy name but can be changed to apply a custom policy DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"

다음 샘플을 사용하여 하나 이상의 엔드포인트에 사전 정의된 지표 또는 사용자 지정 지표를 HAP 적용하는 를 생성합니다.

샘플 1: 사전 정의된 지표를 단일 엔드포인트 변형에 적용

  1. 다음 명령을 사용하여 사전 정의된 지표의 샘플 YAML 파일을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. YAML 파일을 편집하여 endpointName, variantName및 를 지정합니다Region.

  3. 다음 명령 중 하나를 사용하여 사전 정의된 지표를 단일 리소스 ID(엔드포인트 이름 및 변형 이름 조합)에 적용합니다.

    클러스터 범위 설치의 경우:

    kubectl apply -f hap-predefined-metric.yaml

    네임스페이스 범위 설치의 경우:

    kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>

샘플 2: 사용자 지정 지표를 단일 엔드포인트 변형에 적용

  1. 다음 명령을 사용하여 사용자 지정 지표의 샘플 YAML 파일을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
  2. YAML 파일을 편집하여 endpointName, variantName및 를 지정합니다Region.

  3. 다음 명령 중 하나를 사용하여 사용자 지정 지표를 권장되는 SageMakerVariantInvocationsPerInstance대신 단일 리소스 ID(엔드포인트 이름 및 변형 이름 조합)에 적용합니다.

    참고

    Amazon SageMaker 은 YAML 사양의 유효성을 확인하지 않습니다.

    클러스터 범위 설치의 경우:

    kubectl apply -f hap-custom-metric.yaml

    네임스페이스 범위 설치의 경우:

    kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>

샘플 3: 스케일링 정책을 여러 엔드포인트 및 변형에 적용

HAP 연산자를 사용하여 동일한 조정 정책을 여러 리소스 에 적용할 수 있습니다IDs. 각 리소스 ID(엔드포인트 이름 및 변형 이름 조합)에 대해 별도의 scaling_policy요청이 생성됩니다.

  1. 다음 명령을 사용하여 사전 정의된 지표의 샘플 YAML 파일을 다운로드합니다.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. YAML 파일을 편집하여 Region 및 여러 endpointNamevariantName 값을 지정합니다.

  3. 다음 명령 중 하나를 사용하여 사전 정의된 지표를 여러 리소스IDs(엔드포인트 이름 및 변형 이름 조합)에 적용합니다.

    클러스터 범위 설치의 경우:

    kubectl apply -f hap-predefined-metric.yaml

    네임스페이스 범위 설치의 경우:

    kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>

여러 엔드포인트 및 변형에 HostingAutoscalingPolicies 대한 고려 사항

여러 리소스를 사용하는 경우 다음 고려 사항이 적용됩니다IDs.

  • 여러 리소스에 단일 정책을 적용하는 경우 리소스 ID당 IDs하나의 정책ARN이 생성됩니다. 5개의 엔드포인트에는 5개의 P 가 있습니다olicyARNs. 정책에서 describe명령을 실행하면 응답이 하나의 작업으로 표시되며 단일 작업 상태만 포함됩니다.

  • 사용자 지정 지표를 여러 리소스 에 적용하는 경우 모든 리소스 ID(변이) 값에 IDs동일한 차원 또는 값이 사용됩니다. 예를 들어 인스턴스 1-5에 고객 지표를 적용하고 엔드포인트 변형 차원이 변형 1에 매핑된 경우, 변형 1이 지표를 초과하면 모 든 엔드포인트가 확대 또는 축소됩니다.

  • 연HAP산자는 리소스 목록 업데이트를 지원합니다IDs. 사양IDs에 리소스를 수정, 추가 또는 삭제하면 오토스케일링 정책이 이전 변형 목록에서 제거되고 새로 지정된 리소스 ID 조합에 적용됩니다. describe 명령을 사용하여 정책이 현재 적용되는 리소스를 나열IDs합니다.

목록 HostingAutoscalingPolicies

다음 명령 중 하나를 사용하여 HAP 연산자를 사용하여 생성된 모든 HostingAutoscalingPolicies (HAPs)를 나열합니다.

클러스터 범위 설치의 경우:

kubectl get hap

네임스페이스 범위 설치의 경우:

kubectl get hap -n <NAMESPACE>

출력은 다음과 비슷한 형태가 됩니다.

NAME STATUS CREATION-TIME hap-predefined Created 2021-07-13T21:32:21Z

다음 명령을 사용하여 HostingAutoscalingPolicy ()의 상태를 확인합니다HAP.

kubectl get hap <job-name>

다음 값 중 하나가 반환됩니다.

  • Reconciling – 특정 유형의 오류에는 상태가 Error대신 Reconciling상태로 표시됩니다. 서버 측 오류와 Creating또는 Updating상태의 엔드포인트를 예로 들 수 있습니다. 세부 정보는 상태 또는 연산자 로그의 Additional필드를 확인하세요.

  • Created

  • Error

정책을 적용한 오토 스케일링 엔드포인트를 보려면
  1. 에서 Amazon SageMaker 콘솔을 엽니다https://console.aws.amazon.com/sagemaker/.

  2. 왼쪽 패널에서 추론을 확장합니다.

  3. 엔드포인트를 선택합니다.

  4. 관심 엔드포인트의 이름을 선택합니다.

  5. 엔드포인트 구성 설정 섹션으로 스크롤합니다.

설명 HostingAutoscalingPolicy

()에 대한 자세한 내용을 보려면 다음 명령을 사용합니다 HostingAutoscalingPolicy HAP. 이러한 명령은 일반적으로 문제를 디버깅하거나 의 리소스IDs(엔드포인트 이름 및 변형 이름 조합)를 확인하는 데 사용됩니다HAP.

kubectl describe hap <job-name>

업데이트 HostingAutoscalingPolicy

HostingAutoscalingPolicy (HAP) 연산자는 업데이트를 지원합니다. YAML 사양을 편집하여 값을 변경한 다음 정책을 다시 적용할 수 있습니다. HAP 연산자는 기존 정책을 삭제하고 새 정책을 적용합니다.

삭제 HostingAutoscalingPolicy

다음 명령 중 하나를 사용하여 HostingAutoscalingPolicy (HAP) 정책을 삭제합니다.

클러스터 범위 설치의 경우:

kubectl delete hap hap-predefined

네임스페이스 범위 설치의 경우:

kubectl delete hap hap-predefined -n <NAMESPACE>

이 명령은 스케일링 정책을 삭제하고 Kubernetes에서 스케일링 대상을 등록 취소합니다. 이 명령은 다음 출력을 반환합니다.

hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted

를 사용하여 엔드포인트 업데이트 또는 삭제 HostingAutoscalingPolicy

HostingAutoscalingPolicy (HAP)가 있는 엔드포인트를 업데이트하려면 kubectl delete 명령을 사용하여 를 제거하고 엔드포인트를 HAP업데이트한 다음 를 다시 적용합니다HAP.

가 있는 엔드포인트를 삭제하려면 엔드포인트를 삭제하기 HAP 전에 kubectl delete 명령을 HAP사용하여 를 제거합니다.