SageMaker HyperPod 클러스터 생성 - Amazon SageMaker AI

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

SageMaker HyperPod 클러스터 생성

를 사용하여 Amazon EKS에서 오케스트레이션한 SageMaker HyperPod 클러스터를 생성하는 방법을 알아봅니다 AWS CLI.

  1. SageMaker HyperPod 클러스터를 생성하기 전에:

    1. 기존 Amazon EKS 클러스터가 실행 중인지 확인합니다. Amazon EKS 클러스터 설정 방법에 대한 자세한 지침은 Amazon EKS 사용 설명서Amazon EKS 클러스터 생성을 참조하세요.

    2. Helm을 사용하여 Amazon EKS 클러스터에 패키지 설치의 지침에 따라 헬름 차트를 설치합니다. 를 생성하는 경우 별도의 차트 Helm제한된 인스턴스 그룹(RIG)을 사용하여 HyperPod EKS 클러스터 생성이 필요합니다.

  2. 수명 주기 구성 스크립트를 준비하고 s3://amzn-s3-demo-bucket/Lifecycle-scripts/base-config/ 같은 Amazon S3 버킷에 업로드합니다.

    빠르게 시작하려면 AWS ome Distributed Training GitHub 리포지토리on_create.sh에서 샘플 스크립트를 다운로드하여 S3 버킷에 업로드합니다. HyperPod 클러스터 프로비저닝 단계에서 실행할 추가 설정 지침, 일련의 설정 스크립트 또는 명령을 포함할 수도 있습니다.

    중요

    관리형 AmazonSageMakerClusterInstanceRolePolicy만 연결하는 SageMaker HyperPod의 IAM 역할를 생성하는 경우 클러스터는 특정 접두사 sagemaker-가 있는 Amazon S3 버킷에 액세스할 수있습니다.

    제한된 인스턴스 그룹을 생성하는 경우 수명 주기 스크립트를 다운로드하여 실행할 필요가 없습니다. 대신를 실행해야 합니다install_rig_dependencies.sh.

    install_rig_dependencies.sh 스크립트를 실행하기 위한 사전 조건은 다음과 같습니다.

    • AWS 노드(CNI)와 CoreDNS를 모두 활성화해야 합니다. 이는 표준 SageMaker HyperPod Helm에서 관리하지 않지만 추가 기능 아래의 EKS 콘솔에서 쉽게 활성화할 수 있는 표준 EKS 추가 기능입니다.

    • 이 스크립트를 실행하기 전에 표준 SageMaker HyperPod Helm 차트를 설치해야 합니다.

    install_rig_dependencies.sh 스크립트는 다음 작업을 수행합니다.

    • aws-node (CNI): 새 rig-aws-node 데몬 세트가 생성되었습니다. RIG 노드를 방지하기 위해 기존 aws-node 패치가 적용되었습니다.

    • coredns: 다중 RIGs용 Daemonset으로 변환됩니다.

    • training-operators: RIG 작업자 테인트 허용 및 비RIG 인스턴스를 선호하는 nodeAffinity로 업데이트되었습니다.

    • Elastic Fabric Adapter(EFA): RIG 작업자 테인트를 허용하고 각 리전에 올바른 컨테이너 이미지를 사용하도록 업데이트되었습니다.

  3. CreateCluster API 요청 파일을 JSON 형식으로 준비합니다. ExecutionRole의 경우 SageMaker HyperPod의 IAM 역할 섹션에서 관리형 AmazonSageMakerClusterInstanceRolePolicy로 생성한 IAM 역할의 ARN을 제공합니다.

    참고

    SageMaker HyperPod 클러스터가 Amazon EKS 클러스터와 동일한 가상 프라이빗 클라우드(VPC) 내에 배포되었는지 확인합니다. SageMaker HyperPod 클러스터 구성에 지정된 서브넷 및 보안 그룹은 Amazon EKS 클러스터의 API 서버 엔드포인트와의 네트워크 연결 및 통신을 허용해야 합니다.

    // create_cluster.json { "ClusterName": "string", "InstanceGroups": [{ "InstanceGroupName": "string", "InstanceType": "string", "InstanceCount": number, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "string", "ThreadsPerCore": number, "OnStartDeepHealthChecks": [ "InstanceStress", "InstanceConnectivity" ] }], "RestrictedInstanceGroups": [ { "EnvironmentConfig": { "FSxLustreConfig": { "PerUnitStorageThroughput": number, "SizeInGiB": number } }, "ExecutionRole": "string", "InstanceCount": number, "InstanceGroupName": "string", "InstanceStorageConfigs": [ { ... } ], "InstanceType": "string", "OnStartDeepHealthChecks": [ "string" ], "OverrideVpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] }, "ScheduledUpdateConfig": { "DeploymentConfig": { "AutoRollbackConfiguration": [ { "AlarmName": "string" } ], "RollingUpdatePolicy": { "MaximumBatchSize": { "Type": "string", "Value": number }, "RollbackMaximumBatchSize": { "Type": "string", "Value": number } }, "WaitIntervalInSeconds": number }, "ScheduleExpression": "string" }, "ThreadsPerCore": number, "TrainingPlanArn": "string" } ], "VpcConfig": { "SecurityGroupIds": ["string"], "Subnets": ["string"] }, "Tags": [{ "Key": "string", "Value": "string" }], "Orchestrator": { "Eks": { "ClusterArn": "string", } }, "NodeRecovery": "Automatic" }

    EKS 클러스터와 연결하는 새 SageMaker HyperPod 클러스터를 생성하도록 를 구성할 때 다음 사항에 유의하세요.

    • InstanceGroups 파라미터에서 인스턴스 그룹을 최대 20개까지 구성할 수 있습니다.

    • Orchestator.Eks.ClusterArn에서 오케스트레이터로 사용할 EKS 클러스터의 ARN을 지정합니다.

    • OnStartDeepHealthChecks의 경우 InstanceStressInstanceConnectivity를 추가하여 심층 상태 확인를 활성화합니다.

    • NodeRecovery의 경우 Automatic를 지정하여 자동 노드 복구를 활성화합니다. 상태 모니터링 에이전트에서 문제가 발견되면 SageMaker HyperPod가 인스턴스(노드)를 교체하거나 재부팅합니다.

    • Tags 파라미터의 경우 SageMaker HyperPod 클러스터를 AWS 리소스로 관리하기 위한 사용자 지정 태그를 추가할 수 있습니다. 태깅을 지원하는 다른 AWS 서비스에 태그를 추가하는 것과 동일한 방식으로 클러스터에 태그를 추가할 수 있습니다. 일반적으로 AWS 리소스 태그 지정에 대한 자세한 내용은 AWS 리소스 태그 지정 사용 설명서 섹션을 참조하세요.

    • VpcConfig 파라미터에 EKS 클러스터에 사용되는 VPC의 정보를 지정합니다. 서브넷은 프라이빗이어야 합니다.

  4. 다음과 같이 create-cluster 명령을 실행합니다.

    중요

    --cli-input-json 파라미터를 사용하여 create-cluster 명령을 실행할 때는 JSON 파일의 전체 경로 앞에 file:// 접두사를 포함해야 합니다. 이 접두사는가 입력을 파일 경로로 AWS CLI 인식하도록 하는 데 필요합니다. file:// 접두사를 생략하면 구문 분석 파라미터 오류가 발생합니다.

    aws sagemaker create-cluster \ --cli-input-json file://complete/path/to/create_cluster.json

    그러면 새 클러스터의 ARN이 반환됩니다.

    중요

    update-cluster 작업을 사용하여 제한된 인스턴스 그룹(RIG)을 제거할 수 있습니다. RIG를 0으로 축소하면 FSx for Lustre 파일 시스템이 삭제되지 않습니다. FSx for Lustre 파일 시스템을 완전히 제거하려면 RIG를 완전히 제거해야 합니다.

    RIG를 제거해도 서비스 관리형 Amazon S3 버킷에 저장된 아티팩트는 삭제되지 않습니다. 그러나 제거 전에 FSx for Lustre 파일 시스템의 모든 아티팩트가 Amazon S3와 완전히 동기화되었는지 확인해야 합니다. FSx for Lustre 파일 시스템에서 서비스 관리형 Amazon S3 버킷으로 모든 아티팩트를 완전히 동기화하려면 작업 완료 후 최소 30분 동안 기다리는 것이 좋습니다.