기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Karpenter 오토 스케일링을 사용하여 HyperPod 클러스터 생성 및 구성
다음 단계에서는 지속적 프로비저닝이 활성화된 SageMaker HyperPod 클러스터를 생성하고 Karpenter 기반 오토 스케일링을 사용하도록 구성합니다.
HyperPod 클러스터 생성
-
환경 구성을 로드하고 CloudFormation 스택에서 값을 추출합니다.
source .env SUBNET1=$(cfn-output $VPC_STACK_NAME PrivateSubnet1) SUBNET2=$(cfn-output $VPC_STACK_NAME PrivateSubnet2) SUBNET3=$(cfn-output $VPC_STACK_NAME PrivateSubnet3) SECURITY_GROUP=$(cfn-output $VPC_STACK_NAME NoIngressSecurityGroup) EKS_CLUSTER_ARN=$(cfn-output $EKS_STACK_NAME ClusterArn) EXECUTION_ROLE=$(cfn-output $SAGEMAKER_STACK_NAME ExecutionRole) SERVICE_ROLE=$(cfn-output $SAGEMAKER_STACK_NAME ServiceRole) BUCKET_NAME=$(cfn-output $SAGEMAKER_STACK_NAME Bucket) HP_CLUSTER_NAME="hyperpod-eks-test-$(date +%s)" EKS_CLUSTER_NAME=$(cfn-output $EKS_STACK_NAME ClusterName) HP_CLUSTER_ROLE=$(cfn-output $SAGEMAKER_STACK_NAME ClusterRole) -
노드 초기화 스크립트를 Amazon S3 버킷에 업로드합니다.
aws s3 cp lifecyclescripts/on_create_noop.sh s3://$BUCKET_NAME -
환경 변수를 사용하여 클러스터 구성 파일을 생성합니다.
cat > cluster_config.json << EOF { "ClusterName": "$HP_CLUSTER_NAME", "InstanceGroups": [ { "InstanceCount": 1, "InstanceGroupName": "system", "InstanceType": "ml.c5.xlarge", "LifeCycleConfig": { "SourceS3Uri": "s3://$BUCKET_NAME", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "$EXECUTION_ROLE" }, { "InstanceCount": 0, "InstanceGroupName": "auto-c5-az1", "InstanceType": "ml.c5.xlarge", "LifeCycleConfig": { "SourceS3Uri": "s3://$BUCKET_NAME", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "$EXECUTION_ROLE" }, { "InstanceCount": 0, "InstanceGroupName": "auto-c5-4xaz2", "InstanceType": "ml.c5.4xlarge", "LifeCycleConfig": { "SourceS3Uri": "s3://$BUCKET_NAME", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "$EXECUTION_ROLE", "OverrideVpcConfig": { "SecurityGroupIds": [ "$SECURITY_GROUP" ], "Subnets": [ "$SUBNET2" ] } }, { "InstanceCount": 0, "InstanceGroupName": "auto-g5-az3", "InstanceType": "ml.g5.xlarge", "LifeCycleConfig": { "SourceS3Uri": "s3://$BUCKET_NAME", "OnCreate": "on_create_noop.sh" }, "ExecutionRole": "$EXECUTION_ROLE", "OverrideVpcConfig": { "SecurityGroupIds": [ "$SECURITY_GROUP" ], "Subnets": [ "$SUBNET3" ] } } ], "VpcConfig": { "SecurityGroupIds": [ "$SECURITY_GROUP" ], "Subnets": [ "$SUBNET1" ] }, "Orchestrator": { "Eks": { "ClusterArn": "$EKS_CLUSTER_ARN" } }, "ClusterRole": "$HP_CLUSTER_ROLE", "AutoScaling": { "Mode": "Enable", "AutoScalerType": "Karpenter" }, "NodeProvisioningMode": "Continuous" } EOF -
다음 명령을 실행하여 HyperPod 클러스터를 생성합니다.
aws sagemaker create-cluster --cli-input-json file://./cluster_config.json -
클러스터 생성 프로세스에는 20분 정도 걸립니다. ClusterStatus와 AutoScaling.Status 모두에 InService가 표시될 때까지 클러스터 상태를 모니터링합니다.
-
후속 작업을 위해 클러스터 ARN을 저장합니다.
HP_CLUSTER_ARN=$(aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME \ --output text --query ClusterArn)
Karpenter 오토 스케일링 활성화
-
다음 명령을 실행하여 지속적 노드 프로비저닝 모드가 있는 클러스터에서 Karpenter 기반 오토 스케일링을 활성화합니다.
aws sagemaker update-cluster \ --cluster-name $HP_CLUSTER_NAME \ --auto-scaling Mode=Enable,AutoScalerType=Karpenter \ --cluster-role $HP_CLUSTER_ROLE -
Karpenter가 성공적으로 활성화되었는지 확인합니다.
aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --query 'AutoScaling' -
예상 결과:
{ "Mode": "Enable", "AutoScalerType": "Karpenter", "Status": "InService" }
NodeClass 및 NodePool 구성을 진행하기 전에 Status가 InService가 될 때까지 기다립니다.