기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
NodeClass 생성
중요
인스턴스 그룹에서 노드 0개로 시작하고 Karpenter가 오토 스케일링을 처리하도록 해야 합니다. 0개보다 많은 노드로 시작하는 경우 Karpenter는 노드를 0개로 스케일 다운합니다.
노드 클래스(NodeClass)는 네트워크 구성, 스토리지 설정, 리소스 태그 지정을 포함하여 Amazon EKS 클러스터의 노드 그룹에 적용되는 인프라 수준 설정을 정의합니다. HyperPodNodeClass는 SageMaker HyperPod에서 미리 생성된 인스턴스 그룹에 매핑되는 사용자 지정 NodeClass로, Karpenter의 오토 스케일링 결정에 지원되는 인스턴스 유형 및 가용 영역에 대한 제약 조건을 정의합니다.
노드 클래스 생성 시 고려 사항
-
NodeClass에서 인스턴스 그룹을 최대 10개까지 지정할 수 있습니다. -
MIG(다중 인스턴스 GPU)와 함께 GPU 파티셔닝을 사용하는 경우 Karpenter는 MIG 지원 인스턴스 그룹으로 노드를 자동으로 프로비저닝할 수 있습니다. 인스턴스 그룹에 MIG 지원 인스턴스 유형(ml.p4d.24xlarge, ml.p5.48xlarge 또는 ml.p5e/p5en.48xlarge)이 포함되어 있는지 확인하고 클러스터 생성 중에 적절한 MIG 레이블을 구성합니다. GPU 파티셔닝 구성에 대한 자세한 내용은 섹션을 참조하세요Amazon SageMaker HyperPod에서 GPU 파티션 사용.
-
사용자 지정 레이블이 인스턴스 그룹에 적용되는 경우
HyperpodNodeClass상태를 쿼리할 때desiredLabels필드에서 해당 레이블을 볼 수 있습니다. 여기에는와 같은 MIG 구성 레이블이 포함됩니다nvidia.com/mig.config. 수신 작업이 MIG 리소스를 요청하면 Karpenter는 적절한 MIG 레이블이 적용된 상태로 인스턴스를 자동으로 조정합니다. -
인스턴스 그룹을 삭제하기로 선택한 경우 HyperPod 클러스터에서 삭제하기 전에
NodeClass에서 인스턴스 그룹을 제거하는 것이 좋습니다.NodeClass에서 인스턴스 그룹을 사용하는 동안 인스턴스 그룹이 삭제되면NodeClass는 프로비저닝에 대해Ready상태가 아닌 것으로 표시되고 인스턴스 그룹이NodeClass에서 제거될 때까지 후속 규모 조정 작업에 사용되지 않습니다. -
NodeClass에서 인스턴스 그룹을 제거하면 Karpenter는 인스턴스 그룹에서 Karpenter가 관리한 노드의 드리프트를 감지하고 중단 예산 제어에 따라 노드를 중단합니다. -
인스턴스 그룹에서 사용하는 서브넷은 동일한 AZ에 속해야 합니다. 서브넷은 인스턴스 그룹 수준 또는 클러스터 수준에서
OverrideVpcConfig를 사용하여 지정됩니다.VpcConfig는 기본적으로 사용됩니다. -
현재, 온디맨드 용량만 지원됩니다. 훈련 계획 또는 예약 용량이 있는 인스턴스 그룹은 지원되지 않습니다.
-
DeepHealthChecks (DHC)가 있는 인스턴스 그룹은 지원되지 않습니다. 이는 DHC를 완료하는 데 약 60~90분이 걸리고 해당 기간 동안 포드가 보류 중 상태로 유지되어 오버프로비저닝이 발생할 수 있기 때문입니다.
다음 단계에서는 NodeClass를 생성하는 방법을 다룹니다.
-
NodeClass구성으로 YAML 파일(예: nodeclass.yaml)을 생성합니다. -
kubectl을 사용하여 클러스터에 구성을 적용합니다.
-
NodePool구성에서NodeClass를 참조합니다. -
다음은 ml.c5.xlarge 및 ml.c5.4xlarge 인스턴스 유형을 사용하는 샘플
NodeClass입니다.apiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: name: sample-nc spec: instanceGroups: # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created # MaxItems: 10 - auto-c5-xaz1 - auto-c5-4xaz2 -
구성을 적용합니다.
kubectl apply -f nodeclass.yaml -
NodeClass 상태를 모니터링하여 상태의 Ready 조건이 True로 설정되어 있는지 확인합니다.
kubectl get hyperpodnodeclass sample-nc -o yamlapiVersion: karpenter.sagemaker.amazonaws.com/v1 kind: HyperpodNodeClass metadata: creationTimestamp: "<timestamp>" name: sample-nc uid: <resource-uid> spec: instanceGroups: - auto-c5-az1 - auto-c5-4xaz2 status: conditions: // true when all IGs in the spec are present in SageMaker cluster, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: InstanceGroupReady status: "True" type: InstanceGroupReady // true if subnets of IGs are discoverable, false otherwise - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: SubnetsReady status: "True" type: SubnetsReady // true when all dependent resources are Ready [InstanceGroup, Subnets] - lastTransitionTime: "<timestamp>" message: "" observedGeneration: 3 reason: Ready status: "True" type: Ready instanceGroups: - desiredLabels: - key: <custom_label_key> value: <custom_label_value> - key: nvidia.com/mig.config value: all-1g.5gb instanceTypes: - ml.c5.xlarge name: auto-c5-az1 subnets: - id: <subnet-id> zone: <availability-zone-a> zoneId: <zone-id-a> - instanceTypes: - ml.c5.4xlarge name: auto-c5-4xaz2 subnets: - id: <subnet-id> zone: <availability-zone-b> zoneId: <zone-id-b>