SageMaker HyperPod 참조 - Amazon SageMaker AI

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

SageMaker HyperPod 참조

다음 주제에서 SageMaker HyperPod 사용에 대한 자세한 정보와 참조를 확인하세요.

SageMaker HyperPod 요금

다음 주제에서는 SageMaker HyperPod 요금에 대한 정보를 제공합니다. SageMaker HyperPod 인스턴스 사용에 대한 시간당 요금에 대한 자세한 내용은 Amazon SageMaker 요금 섹션을 참조하세요.

용량 요청

SageMaker HyperPod에서 사용할 온디맨드 또는 예약 컴퓨팅 용량을 SageMaker AI에 할당할 수 있습니다. 온디맨드 클러스터 생성은 SageMaker AI 온디맨드 용량 풀에서 사용 가능한 용량을 할당합니다. 또는 할당량 증가를 위한 티켓을 제출하여 액세스를 보장하기 위해 예약 용량을 요청할 수 있습니다. 인바운드 용량 요청은 SageMaker AI에서 우선순위를 지정하며 용량 할당에 대한 예상 시간을 수신합니다.

서비스 결제

SageMaker HyperPod에서 컴퓨팅 용량을 프로비저닝하면 용량 할당 기간 동안 요금이 청구됩니다. SageMaker HyperPod 결제는 용량 할당 유형(온디맨드, 예약), 인스턴스 유형 및 인스턴스 사용에 소요된 시간에 대한 라인 항목이 포함된 기념일 청구서에 표시됩니다.

할당량 증가 티켓을 제출하려면 SageMaker HyperPod 할당량 섹션을 참조하세요.

SageMaker HyperPod API

다음 목록은 AWS CLI 또는를 통해 SageMaker AI에 JSON 형식의 작업 요청을 제출하기 위한 전체 SageMaker HyperPod APIs 세트입니다 AWS SDK for Python (Boto3).

SageMaker HyperPod Slurm 구성

HyperPod는 클러스터에서 Slurm을 구성하는 두 가지 접근 방식을 지원합니다. 필요에 가장 적합한 접근 방식을 선택합니다.

접근 방식 설명 권장 대상
API 기반 구성 CreateCluster 및 UpdateCluster API 요청에서 직접 Slurm 구성 정의 새 클러스터, 간소화된 관리
레거시 구성 Amazon S3에 저장된 별도의 provisioning_parameters.json 파일 사용 기존 클러스터, 이전 버전과의 호환성

API 기반 Slurm 구성(권장)

API 기반 구성을 사용하면 CreateCluster 및 UpdateCluster API 요청에서 직접 Slurm 노드 유형, 파티션 할당 및 파일 시스템 탑재를 정의할 수 있습니다. 이 접근 방식은 다음과 같은 이점을 제공합니다.

  • 단일 정보 소스 - API 요청의 모든 구성

  • S3 파일 관리 없음 - 생성 또는 유지 관리할 필요가 없음 provisioning_parameters.json

  • 기본 제공 검증 - API는 클러스터 생성 전에 Slurm 토폴로지를 검증합니다.

  • 드리프트 감지 -에 대한 무단 변경 감지 slurm.conf

  • Per-instance-group 스토리지 - 서로 다른 인스턴스 그룹에 대해 서로 다른 FSx 파일 시스템 구성

  • FSx for OpenZFS 지원 - FSx for Lustre 외에 OpenZFS 파일 시스템 탑재

SlurmConfig(인스턴스 그룹당)

SlurmConfig 각 인스턴스 그룹에를 추가하여 Slurm 노드 유형 및 파티션 할당을 정의합니다.

"SlurmConfig": { "NodeType": "Controller | Login | Compute", "PartitionNames": ["string"] }

파라미터:

  • NodeType - 필수입니다. 이 인스턴스 그룹의 Slurm 노드 유형입니다. 유효한 값:

    • Controller - Slurm 컨트롤러(헤드) 노드입니다. slurmctld 데몬을 실행합니다. 정확히 하나의 인스턴스 그룹에이 노드 유형이 있어야 합니다.

    • Login - 사용자 액세스를 위한 로그인 노드입니다. 선택 사항. 최대 하나의 인스턴스 그룹에이 노드 유형이 있을 수 있습니다.

    • Compute - 작업을 실행하는 작업자 노드입니다. 이 노드 유형의 인스턴스 그룹이 여러 개 있을 수 있습니다.

    중요

    NodeType는 변경할 수 없습니다. 클러스터 생성 중에 설정한 후에는 변경할 수 없습니다. 다른 노드 유형을 사용하려면 새 인스턴스 그룹을 생성합니다.

  • PartitionNames - 조건부. Slurm 파티션 이름의 배열입니다. Compute 노드 유형에 필수이며 Controller 또는 Login 노드 유형에는 허용되지 않습니다. 현재는 인스턴스 그룹당 단일 파티션 이름을 지원합니다.

    참고

    모든 노드는 지정된 dev 파티션 외에도 범용 파티션에 자동으로 추가됩니다.

예:

{ "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole" }

Orchestrator.Slurm(클러스터 수준)

클러스터 구성에 Orchestrator.Slurm를 추가하여 HyperPod가 slurm.conf 파일을 관리하는 방법을 지정합니다.

"Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed | Overwrite | Merge" } }

파라미터:

  • SlurmConfigStrategy - Orchestrator.Slurm이 제공된 경우 필요합니다. HyperPod가 컨트롤러 노드에서 slurm.conf 파일을 관리하는 방법을 제어합니다. 유효한 값:

    • Managed (기본값) - HyperPod는에서 파티션 노드 매핑을 완전히 제어합니다slurm.conf. 드리프트 감지가 활성화됨: 현재가 예상 구성과 slurm.conf 다르면 UpdateCluster가 오류와 함께 실패합니다. HyperPod를 Slurm 구성의 단일 신뢰할 수 있는 소스로 사용하려는 경우이 전략을 사용합니다.

    • Overwrite - HyperPod는 API 구성을 강제로 적용하여에 대한 수동 변경 사항을 덮어씁니다slurm.conf. 드리프트 감지가 비활성화되었습니다. 이 전략을 사용하여 드리프트에서 복구하거나 클러스터를 알려진 상태로 재설정합니다.

    • Merge - HyperPod는 수동 slurm.conf 변경 사항을 보존하고 API 구성과 병합합니다. 드리프트 감지가 비활성화되었습니다. 업데이트 간에 지속되어야 하는 Slurm 구성을 수동으로 변경해야 하는 경우이 전략을 사용합니다.

참고

Orchestrator.Slurm가 요청에서 생략된 경우 기본 동작은 Managed 전략입니다.

작은 정보

UpdateCluster를 사용하여 SlurmConfigStrategy 언제든지 변경할 수 있습니다. 특정 전략에 대한 잠금은 없습니다.

예:

{ "ClusterName": "my-hyperpod-cluster", "InstanceGroups": [...], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } } }

SlurmConfigStrategy 비교

전략 드리프트 감지 수동 변경 사항 사용 사례
Managed 활성화됨 - 드리프트가 감지되면 업데이트를 차단합니다. 차단됨 HyperPod 관리형
Overwrite 비활성화됨 덮어쓰기 드리프트에서 복구, 알려진 상태로 재설정
Merge 비활성화됨 보존됨 사용자 지정 slurm.conf 요구 사항이 있는 고급 사용자

InstanceStorageConfigs 통한 FSx 구성

API 기반 구성을 사용하면를 사용하여 인스턴스 그룹당 FSx 파일 시스템을 구성할 수 있습니다InstanceStorageConfigs. 이렇게 하면 서로 다른 인스턴스 그룹이 서로 다른 파일 시스템을 탑재할 수 있습니다.

사전 조건:

  • 클러스터는 사용자 지정 VPC를 사용해야 합니다(를 통해VpcConfig). FSx 파일 시스템은 VPC에 상주하며 플랫폼 관리형 VPC는 VPC에 연결할 수 없습니다.

  • 하나 이상의 인스턴스 그룹에 SlurmConfig이 있어야 합니다NodeType: Controller.

FsxLustreConfig

인스턴스 그룹에 대한 FSx for Lustre 파일 시스템 탑재를 구성합니다.

"InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "string", "MountPath": "string", "MountName": "string" } } ]

파라미터:

  • DnsName - 필수입니다. FSx for Lustre 파일 시스템의 DNS 이름입니다. 예시: fs-0abc123def456789.fsx.us-west-2.amazonaws.com

  • MountPath – 선택 사항입니다. 인스턴스의 로컬 탑재 경로입니다. 기본값: /fsx

  • MountName - 필수입니다. FSx for Lustre 파일 시스템의 탑재 이름입니다. Amazon FSx 콘솔에서 또는를 실행하여 찾을 수 있습니다aws fsx describe-file-systems.

FsxOpenZfsConfig

인스턴스 그룹에 대한 FSx for OpenZFS 파일 시스템 탑재를 구성합니다.

"InstanceStorageConfigs": [ { "FsxOpenZfsConfig": { "DnsName": "string", "MountPath": "string" } } ]

파라미터:

  • DnsName - 필수입니다. FSx for OpenZFS 파일 시스템의 DNS 이름입니다. 예시: fs-0xyz987654321.fsx.us-west-2.amazonaws.com

  • MountPath – 선택 사항입니다. 인스턴스의 로컬 탑재 경로입니다. 기본값: /home

참고

각 인스턴스 그룹은 최대 하나FsxLustreConfig와 하나의를 가질 수 있습니다FsxOpenZfsConfig.

여러 파일 시스템이 있는 예제:

{ "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 4, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } }, { "FsxOpenZfsConfig": { "DnsName": "fs-0xyz987654321.fsx.us-west-2.amazonaws.com", "MountPath": "/shared" } }, { "EbsVolumeConfig": { "VolumeSizeInGB": 500 } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-bucket/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole" }
중요

FSx 구성 변경 사항은 노드 프로비저닝 중에만 적용됩니다. 기존 노드는 원래 FSx 구성을 유지합니다. 모든 노드에 새 FSx 구성을 적용하려면 인스턴스 그룹을 0으로 축소한 다음 다시 확장합니다.

전체 API 기반 구성 예제

다음 예제에서는 API 기반 Slurm 구성을 사용한 전체 CreateCluster 요청을 보여줍니다.

{ "ClusterName": "ml-training-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Controller" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 }, { "InstanceGroupName": "login", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "SlurmConfig": { "NodeType": "Login" }, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 }, { "InstanceGroupName": "gpu-compute", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 8, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["gpu-training"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] }, { "InstanceGroupName": "cpu-compute", "InstanceType": "ml.c5.18xlarge", "InstanceCount": 4, "SlurmConfig": { "NodeType": "Compute", "PartitionNames": ["cpu-preprocessing"] }, "InstanceStorageConfigs": [ { "FsxLustreConfig": { "DnsName": "fs-0abc123def456789.fsx.us-west-2.amazonaws.com", "MountPath": "/fsx", "MountName": "abcdefgh" } } ], "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-us-west-2-111122223333/lifecycle/src/", "OnCreate": "on_create.sh" }, "ExecutionRole": "arn:aws:iam::111122223333:role/HyperPodRole", "ThreadsPerCore": 2 } ], "Orchestrator": { "Slurm": { "SlurmConfigStrategy": "Managed" } }, "VpcConfig": { "SecurityGroupIds": ["sg-0abc123def456789a"], "Subnets": ["subnet-0abc123def456789a", "subnet-0abc123def456789b"] }, "Tags": [ { "Key": "Project", "Value": "ML-Training" } ] }

API 기반 구성 사용에 대한 자세한 내용은 섹션을 참조하세요수명 주기 스크립트를 사용하여 SageMaker HyperPod 클러스터 사용자 지정.

레거시 구성: provisioning_parameters.json

참고

접근 provisioning_parameters.json 방식은 HyperPod에서 Slurm을 구성하는 레거시 방법입니다. 새 클러스터의 경우 위에서 설명한 API 기반 구성 접근 방식을 사용하는 것이 좋습니다. 레거시 접근 방식은 이전 버전과의 호환성을 위해 완전히 지원됩니다.

레거시 접근 방식을 사용하면 라는 Slurm 구성 파일을 생성하여 수명 주기 스크립트의 일부로 Amazon S3에 provisioning_parameters.json 업로드할 수 있습니다. HyperPod는 클러스터 생성 중에이 파일을 읽어 Slurm 노드를 구성합니다.

provisioning_parameters.json 구성 양식

다음 코드는 HyperPod 클러스터에 Slurm 노드를 올바르게 설정하기 위해 준비해야 하는 Slurm 구성 양식입니다. 클러스터 생성 중에 이 양식을 작성하여 수명 주기 스크립트 세트의 일부로 업로드해야 합니다. HyperPod 클러스터 생성 프로세스 전체에서 이 양식을 준비하는 방법을 알아보려면 수명 주기 스크립트를 사용하여 SageMaker HyperPod 클러스터 사용자 지정 섹션을 참조하세요.

// Save as provisioning_parameters.json. { "version": "1.0.0", "workload_manager": "slurm", "controller_group": "string", "login_group": "string", "worker_groups": [ { "instance_group_name": "string", "partition_name": "string" } ], "fsx_dns_name": "string", "fsx_mountname": "string" }

파라미터:

  • version - 필수입니다. HyperPod 프로비저닝 파라미터 양식의 버전입니다. 1.0.0에 보관합니다.

  • workload_manager - 필수입니다. 이는 HyperPod 클러스터에 구성할 워크로드 관리자를 지정하기 위한 것입니다. slurm에 보관합니다.

  • controller_group - 필수입니다. 이는 Slurm 컨트롤러(헤드) 노드에 할당하려는 HyperPod 클러스터 인스턴스 그룹의 이름을 지정하기 위한 것입니다.

  • login_group – 선택 사항입니다. Slurm 로그인 노드에 할당하려는 HyperPod 클러스터 인스턴스 그룹의 이름을 지정하기 위한 것입니다.

  • worker_groups - 필수입니다. 이는 HyperPod 클러스터에서 Slurm 작업자(컴퓨팅) 노드를 설정하기 위한 것입니다.

    • instance_group_name - 필수입니다. 이는 Slurm 워커(컴퓨팅) 노드에 할당하려는 HyperPod 인스턴스 그룹의 이름을 지정하기 위한 것입니다.

    • partition_name - 필수입니다. 이는 노드에 파티션 이름을 지정하기 위한 것입니다.

  • fsx_dns_name – 선택 사항입니다. Amazon FSx와 통신하도록 HyperPod 클러스터에서 Slurm 노드를 설정하려면 FSx DNS 이름을 지정합니다.

  • fsx_mountname – 선택 사항입니다. Amazon FSx와 통신하도록 HyperPod 클러스터에서 Slurm 노드를 설정하려면 FSx 마운트 이름을 지정합니다.

비교: API 기반 구성과 레거시 구성 비교

Feature API 기반(권장) 레거시(provisioning_parameters.json)
구성 위치 CreateCluster API 요청 S3 파일
FSx for Lustre 예 - 인스턴스 그룹당 예 - 클러스터 전체만 해당
FSx OpenZFS용 FSx 예 - 인스턴스 그룹당 아니요 - 지원되지 않음
기본 제공 검증 아니요
드리프트 감지 예 - (관리형 전략) 아니요
S3 파일 관리 불필요 필수
수명 주기 스크립트 복잡성 간소화됨 전체 SLURM 설정 필요

SageMaker HyperPod DLAMI

SageMaker HyperPod는 다음을 기반으로 DLAMI를 실행합니다.

SageMaker HyperPod DLAMI는 Slurm, Kubernetes, 종속성 및 SageMaker HyperPod 클러스터 소프트웨어 패키지와 같은 오픈 소스 도구를 지원하기 위한 추가 패키지와 번들링되어 클러스터 상태 확인 및 자동 재개와 같은 복원력 기능을 지원합니다. HyperPod 서비스 팀이 DLAMIs를 통해 배포하는 HyperPod 소프트웨어 업데이트를 확인하려면 Amazon SageMaker HyperPod 릴리스 정보 섹션을 참조하세요.

SageMaker HyperPod API 권한 참조

중요

Amazon SageMaker Studio 또는 Amazon SageMaker Studio Classic에서 Amazon SageMaker 리소스를 생성할 수 있도록 허용하는 사용자 지정 IAM 정책도 해당 리소스에 태그를 추가할 수 있는 권한을 부여해야 합니다. Studio와 Studio Classic은 만드는 리소스에 태그를 자동으로 지정하기 때문에 리소스에 태그를 추가할 권한이 필요합니다. IAM 정책이 Studio 및 Studio Classic에서 리소스를 만들도록 허용하지만 태그 지정은 허용하지 않는 경우 리소스 만들기를 시도할 때 'AccessDenied' 오류가 발생할 수 있습니다. 자세한 내용은 SageMaker AI 리소스 태그 지정을 위한 권한 제공 섹션을 참조하세요.

AWS Amazon SageMaker AI에 대한 관리형 정책는 SageMaker 리소스를 생성할 수 있는 권한을 부여하며, 이러한 리소스는 해당 리소스를 생성하는 동안 태그를 추가할 수 있는 권한을 이미 포함합니다.

SageMaker HyperPod API 작업을 실행할 수 있도록 액세스 제어를 설정하고 클라우드 관리자를 위해 IAM 사용자에게 연결할 수 있는 권한 정책을 작성하는 경우 다음 표를 참조로 사용합니다.

Amazon SageMaker API 작업 필요한 권한(API 작업) 리소스
CreateCluster sagemaker:CreateCluster arn:aws:sagemaker:region:account-id:cluster/cluster-id
DeleteCluster sagemaker:DeleteCluster arn:aws:sagemaker:region:account-id:cluster/cluster-id
DescribeCluster sagemaker:DescribeCluster arn:aws:sagemaker:region:account-id:cluster/cluster-id
DescribeClusterNode sagemaker:DescribeClusterNode arn:aws:sagemaker:region:account-id:cluster/cluster-id
ListClusterNodes sagemaker:ListClusterNodes arn:aws:sagemaker:region:account-id:cluster/cluster-id
ListClusters sagemaker:ListClusters arn:aws:sagemaker:region:account-id:cluster/cluster-id
UpdateCluster sagemaker:UpdateCluster arn:aws:sagemaker:region:account-id:cluster/cluster-id
UpdateClusterSoftware sagemaker:UpdateClusterSoftware arn:aws:sagemaker:region:account-id:cluster/cluster-id

SageMaker API에 사용되는 권한 및 리소스 유형의 전체 목록은 AWS 서비스 권한 부여 참조Actions, resources, and condition keys for Amazon SageMaker AI를 참조하세요.

의 SageMaker HyperPod 명령 AWS CLI

다음은 SageMaker HyperPod가 핵심 HyperPod API 작업을 실행하기 위한 AWS CLI 명령입니다.

의 SageMaker HyperPod Python 모듈 AWS SDK for Python (Boto3)

다음은 SageMaker AI가 핵심 HyperPod API 작업을 실행하기 위한 AWS SDK for Python (Boto3) 클라이언트의 메서드입니다.