리소스를 최신 연산자로 마이그레이션 - Amazon SageMaker

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

리소스를 최신 연산자로 마이그레이션

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

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

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

다음 단계에 따라 리소스를 마이그레이션하고 ACK를 사용하여 Amazon 를 사용하여 기계 학습 모델을 훈련, 조정 및 배포합니다 SageMaker.

참고

Kubernetes의 최신 SageMaker 연산자는 이전 버전과 호환되지 않습니다.

사전 조건

리소스를 Kubernetes용 최신 SageMaker 연산자로 성공적으로 마이그레이션하려면 다음을 수행해야 합니다.

  1. Kubernetes용 최신 SageMaker 연산자를 설치합니다. 지침은 ACK SageMaker 컨트롤러를 사용한 Machine Learning설정을 참조하세요 step-by-step.

  2. HostingAutoscalingPolicy 리소스을 사용하는 경우 새 애플리케이션 오토 스케일링 연산자를 설치하세요. 지침은 Application Auto Scaling을 사용한 SageMaker 워크로드 크기 조정설정을 참조하세요 step-by-step. HostingAutoScalingPolicy 리소스를 사용하지 않는 경우 이 단계는 선택 사항입니다.

권한이 올바르게 구성된 경우 ACK SageMaker 서비스 컨트롤러는 AWS 리소스의 사양과 상태를 확인하고 ACK 컨트롤러가 원래 생성한 것처럼 리소스를 조정할 수 있습니다.

리소스 채택

Kubernetes의 새 SageMaker 연산자는 ACK 서비스 컨트롤러에서 원래 생성하지 않은 리소스를 채택할 수 있는 기능을 제공합니다. 자세한 내용은 ACK 설명서의 기존 AWS 리소스 채택을 참조하세요.

다음 단계에서는 Kubernetes의 새 SageMaker 연산자가 기존 SageMaker 엔드포인트를 채택하는 방법을 보여줍니다. 다음 샘플을 adopt-endpoint-sample.yaml이라는 파일에 저장합니다.

apiVersion: services.k8s.aws/v1alpha1 kind: AdoptedResource metadata: name: adopt-endpoint-sample spec: aws: # resource to adopt, not created by ACK nameOrID: xgboost-endpoint kubernetes: group: sagemaker.services.k8s.aws kind: Endpoint metadata: # target K8s CR name name: xgboost-endpoint

kubectl apply를 사용하여 사용자 지정 리소스(CR)를 제출합니다.

kubectl apply -f adopt-endpoint-sample.yaml

kubectl describe를 사용하여 채택한 리소스의 상태를 확인합니다.

kubectl describe adoptedresource adopt-endpoint-sample

ACK.Adopted 조건이 True인지 확인합니다. 출력은 다음 예시와 비슷해야 합니다.

--- kind: AdoptedResource metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}' creationTimestamp: '2021-04-27T02:49:14Z' finalizers: - finalizers.services.k8s.aws/AdoptedResource generation: 1 name: adopt-endpoint-sample namespace: default resourceVersion: '12669876' selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample" uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b spec: aws: nameOrID: xgboost-endpoint kubernetes: group: sagemaker.services.k8s.aws kind: Endpoint metadata: name: xgboost-endpoint status: conditions: - status: 'True' type: ACK.Adopted

클러스터에 리소스가 있는지 확인합니다.

kubectl describe endpoints.sagemaker xgboost-endpoint

HostingAutoscalingPolicy 리소스

HostingAutoscalingPolicy (HAP) 리소스는 여러 Application Auto Scaling 리소스인 ScalableTarget 및 로 구성됩니다ScalingPolicy. 를 사용하여 HAP 리소스를 채택할 때는 ACK먼저 Application Auto Scaling 컨트롤러를 설치합니다. HAP 리소스를 채택하려면 ScalableTargetScalingPolicy 리소스를 모두 채택해야 합니다. HostingAutoscalingPolicy 리소스(status.ResourceIDList)의 상태에서 이러한 리소스의 리소스 식별자를 찾을 수 있습니다.

HostingDeployment 리소스

HostingDeployment 리소스는 Endpoint, EndpointConfig및 각 의 여러 SageMaker 리소스로 구성됩니다Model. 에서 SageMaker 엔드포인트를 채택하는 경우 ACK, Endpoint EndpointConfig및 를 각각 Model 개별적으로 채택해야 합니다. Endpoint, EndpointConfigModel이름은 HostingDeployment리소스의 상태(status.endpointName, status.endpointConfigName, 및status.modelNames)에서 찾을 수 있습니다.

지원되는 모든 SageMaker 리소스 목록은 ACK API 참조 를 참조하세요.

이전 리소스 정리

Kubernetes용 새 SageMaker 연산자가 리소스를 채택한 후 이전 연산자를 제거하고 이전 리소스를 정리할 수 있습니다.

1단계: 기존 연산자 제거

이전 연산자를 제거하려면 연산자 삭제섹션을 참조하세요.

주의

기존 리소스를 삭제하기 전에 이전 연산자를 제거하세요.

2단계: 파이널라이저 제거 및 기존 리소스 삭제

주의

기존 리소스를 삭제하기 전에 이전 연산자를 제거해야 합니다.

이전 연산자를 제거한 후에는 파이널라이저를 명시적으로 제거하여 기존 연산자 리소스를 삭제해야 합니다. 다음 샘플 스크립트는 지정된 네임스페이스에서 이전 연산자가 관리하는 모든 훈련 작업을 삭제하는 방법을 보여줍니다. 새 연산자가 리소스를 채택한 후 유사한 패턴을 사용하여 추가 리소스를 삭제할 수 있습니다.

참고

리소스를 가져오려면 전체 리소스 이름을 사용해야 합니다. 예를 들어 kubectl get trainingjob대신 kubectl get trainingjobs.sagemaker.aws.amazon.com을 사용합니다.

namespace=sagemaker_namespace training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name') for job in $training_jobs do echo "Deleting $job resource in $namespace namespace" kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace done

Kubernetes용 새 SageMaker 연산자 사용

Kubernetes용 새 SageMaker 연산자 사용에 대한 자세한 지침은 섹션을 참조하세요. Kubernetes에 SageMaker 연산자 사용