SageMaker HyperPod 클러스터 스케일 다운
Amazon SageMaker HyperPod 클러스터에서 실행 중인 인스턴스 수를 스케일 다운할 수 있습니다. 리소스 사용률 감소 또는 비용 최적화와 같은 다양한 이유로 클러스터를 스케일 다운할 수 있습니다.
다음 페이지에서는 스케일 다운에 대한 두 가지 주요 접근 방식을 간략하게 설명합니다.
-
인스턴스 그룹 수준에서 스케일 다운: 이 접근 방식은
UpdateClusterAPI를 사용하며, 이를 통해 다음을 수행할 수 있습니다.-
특정 인스턴스 그룹의 인스턴스 수를 독립적으로 스케일 다운합니다. SageMaker AI는 각 그룹에 대해 설정한 새 대상 인스턴스 수에 도달하도록 노드 종료를 처리합니다. 인스턴스 그룹 스케일 다운을(를) 참조하세요.
-
클러스터에서 인스턴스 그룹을 완전히 삭제합니다. 인스턴스 그룹 삭제을(를) 참조하세요.
-
-
인스턴스 수준에서 스케일 다운: 이 접근 방식은
BatchDeleteClusterNodesAPI를 사용하며, 이를 통해 종료하려는 개별 노드를 지정할 수 있습니다. 인스턴스 수준에서 스케일 다운을(를) 참조하세요.
참고
BatchDeleteCusterNodes를 사용하여 인스턴스 수준에서 스케일 다운하는 경우 한 번에 최대 99개의 인스턴스만 종료할 수 있습니다. UpdateCluster는 인스턴스 수의 제한 없이 종료를 지원합니다.
중요 고려 사항
-
클러스터를 스케일 다운할 때 나머지 리소스가 워크로드를 처리하기에 충분한지, 중단을 방지하기 위해 필요한 데이터 마이그레이션 또는 리밸런싱이 제대로 처리되었는지 확인해야 합니다.
-
워커 노드 그룹에서 API를 간접적으로 호출하기 전에 Amazon S3 또는 FSx for Lustre 파일 시스템에 데이터를 백업해야 합니다. 그러면 인스턴스 루트 볼륨으로 인한 잠재적 데이터 손실을 방지하는 데 도움이 될 수 있습니다. 백업에 대한 자세한 내용은 SageMaker HyperPod에서 제공하는 백업 스크립트 사용 섹션을 참조하세요.
-
기존 클러스터에서 이 API를 간접적으로 호출하려면 먼저 UpdateClusterSoftware API를 실행하여 클러스터를 패치해야 합니다. 클러스터 패치 적용에 대한 자세한 내용은 클러스터의 SageMaker HyperPod 플랫폼 소프트웨어 업데이트 섹션을 참조하세요.
-
온디맨드 인스턴스에 대한 측정/청구는 스케일 다운 후 자동으로 중지됩니다. 스케일 다운된 예약 인스턴스에 대한 측정을 중지하려면 AWS 계정 팀에 문의하여 지원을 받아야 합니다.
-
스케일 다운된 예약 인스턴스에서 해제된 용량을 사용하여 다른 SageMaker HyperPod 클러스터를 스케일 업할 수 있습니다.
인스턴스 그룹 수준에서 스케일 다운
UpdateCluster 작업을 통해 인스턴스 그룹의 인스턴스 수를 스케일 다운하거나 전체 인스턴스 그룹을 제거하는 등 SageMaker HyperPod 클러스터의 구성을 변경할 수 있습니다. 이는 워크로드의 변경 사항에 따라 클러스터에 할당된 리소스를 조정하거나, 비용을 최적화하거나, 인스턴스 그룹의 인스턴스 유형을 변경하려는 경우에 유용할 수 있습니다.
인스턴스 그룹 스케일 다운
인스턴스 그룹 중에 유휴 상태이고 스케일 다운을 위해 인스턴스를 종료해도 안전한 것이 있는 경우 이 접근 방식을 사용합니다. 스케일 다운을 위한 UpdateCluster 요청을 제출하면 HyperPod는 종료할 인스턴스를 무작위로 선택하고 해당 인스턴스 그룹에 지정된 노드 수로 스케일 다운합니다.
참고
인스턴스 그룹의 인스턴스 수를 0으로 스케일 다운하면 해당 그룹 내의 모든 인스턴스가 종료됩니다. 그러나 인스턴스 그룹 자체는 여전히 SageMaker HyperPod 클러스터의 일부로 여전히 존재합니다. 나중에 동일한 인스턴스 그룹 구성을 사용하여 해당 인스턴스 그룹을 다시 스케일 업할 수 있습니다.
또는 인스턴스 그룹을 영구적으로 제거할 수도 있습니다. 자세한 내용은 인스턴스 그룹 삭제 섹션을 참조하세요.
UpdateCluster를 사용하여 스케일 다운하는 방법
-
SageMaker HyperPod 클러스터 구성 업데이트에 설명된 단계를 따르세요. InstanceCount 필드를 지정하는 1.d 단계에 도달하면 클러스터를 스케일 다운하기 위해 현재 인스턴스 수보다 작은 숫자로 입력합니다.
-
update-cluster AWS CLI 명령을 실행하여 요청을 제출합니다.
다음은 UpdateCluster JSON 객체의 예입니다. 인스턴스 그룹에 현재 실행 중인 인스턴스가 두 개 있는 경우를 생각해 보세요. 예시와 같이 InstanceCount 필드를 1로 설정하면 HyperPod는 인스턴스 중 하나를 임의로 선택하고 종료합니다.
{ "ClusterName":"name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName":"training-instances", "InstanceType":"instance-type", "InstanceCount":1, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket/training-script.py", "OnCreate":"s3://amzn-s3-demo-bucket/setup-script.sh"}, "ExecutionRole":"arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore":number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] } ], "NodeRecovery":"Automatic"}
인스턴스 그룹 삭제
더 이상 필요하지 않은 경우 UpdateCluster 작업을 사용하여 SageMaker HyperPod 클러스터에서 전체 인스턴스 그룹을 제거할 수 있습니다. 이는 단순한 스케일 다운을 넘어 클러스터 구성에서 특정 인스턴스 그룹을 완전히 제거하는 작업입니다.
참고
인스턴스 그룹을 제거할 때:
-
대상 그룹 내의 모든 인스턴스가 종료됩니다.
-
클러스터에서 전체 그룹 구성이 삭제됩니다.
-
해당 인스턴스 그룹에서 실행되는 모든 워크로드는 중지됩니다.
UpdateCluster를 사용하여 인스턴스 그룹을 삭제하는 방법
-
SageMaker HyperPod 클러스터 구성 업데이트에 설명된 단계를 따르는 경우:
-
UpdateClusterJSON에서 선택 사항인InstanceGroupsToDelete파라미터를 설정하고 삭제하려는 인스턴스 그룹 이름을 쉼표로 구분한 목록을 전달합니다. -
InstanceGroups목록을 지정할 때 제거하려는 인스턴스 그룹의 사양이InstanceGroups목록에 더 이상 나열되지 않아야 합니다.
-
-
update-cluster AWS CLI 명령을 실행하여 요청을 제출합니다.
중요
-
SageMaker HyperPod 클러스터는 항상 하나 이상의 인스턴스 그룹을 유지해야 합니다.
-
제거 전에 모든 중요 데이터가 백업되었는지 확인합니다.
-
제거 프로세스는 실행 취소할 수 없습니다.
다음은 UpdateCluster JSON 객체의 예입니다. 클러스터에 현재 세 개의 인스턴스 그룹, 즉 training, prototype-training 및 inference-serving 그룹이 있는 경우를 생각해 보세요. prototype-training 그룹을 삭제하려고 합니다.
{ "ClusterName":"name-of-cluster-to-update", "InstanceGroups": [ { "InstanceGroupName":"training", "InstanceType":"instance-type", "InstanceCount":, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket/training-script.py", "OnCreate":"s3://amzn-s3-demo-bucket/setup-script.sh"}, "ExecutionRole":"arn:aws:iam::123456789012:role/SageMakerRole", "ThreadsPerCore":number-of-threads, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] }, { "InstanceGroupName":"inference-serving", "InstanceType":"instance-type", "InstanceCount":2, [...] }, ], "InstanceGroupsToDelete": ["prototype-training"], "NodeRecovery":"Automatic"}
인스턴스 수준에서 스케일 다운
BatchDeleteClusterNodes 작업을 사용하면 종료하려는 개별 노드를 지정하여 SageMaker HyperPod 클러스터를 스케일 다운할 수 있습니다. BatchDeleteClusterNodes는 대상 노드 제거 및 클러스터 최적화를 위한 보다 세분화된 제어를 제공합니다. 예를 들어 BatchDeleteClusterNodes를 사용하여 유지 관리, 롤링 업그레이드 또는 리소스의 지리적 재분배를 위해 대상 노드를 삭제할 수 있습니다.
API 요청 및 응답
BatchDeleteClusterNodes 요청을 제출하면 SageMaker HyperPod는 인스턴스 ID를 기준으로 노드를 삭제합니다. API는 클러스터 이름과 삭제할 노드 ID 목록이 포함된 요청을 수락합니다.
응답에는 다음 두 섹션이 포함됩니다.
-
Failed:BatchDeleteClusterNodesError유형의 오류 목록 - 인스턴스 ID당 하나 -
Successful: 성공적으로 종료된 인스턴스 ID
검증 및 오류 처리
API는 다음과 같은 다양한 검증을 수행합니다.
-
노드 ID 형식 확인(
i-접두사 및 Amazon EC2 인스턴스 ID 구조) -
단일
BatchDeleteClusterNodes요청에서 99개 이하의 노드 ID로 노드 목록 길이 확인 -
입력 클러스터 이름이 있는 유효한 SageMaker HyperPod 클러스터가 존재하고 진행 중인 클러스터 수준 작업(업데이트, 시스템 업데이트, 패치 적용 또는 삭제)이 없는지 확인
-
인스턴스를 찾을 수 없거나, 유효하지 않은 상태이거나, 사용 중인 경우 처리
API 응답 코드
-
API는 성공한 요청(예: 모든 입력 노드 검증 성공) 또는 부분적으로 성공한 요청(예: 일부 입력 노드 검증 실패)에 대해
200상태 코드를 반환합니다. -
이러한 모든 검증이 실패하면(예: 모든 입력 노드 검증 실패) API는 적절한 오류 메시지 및 오류 코드와 함께
400잘못된 요청 응답을 반환합니다.
예제
다음은 AWS CLI를 사용하여 인스턴스 수준에서 클러스터를 스케일 다운하는 예시입니다.
aws sagemaker batch-delete-cluster-nodes --cluster-name"cluster-name"--node-ids'["i-111112222233333", "i-111112222233333"]'