에 대한 AWS CLI 명령 사용 SageMaker HyperPod APIs - Amazon SageMaker

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

에 대한 AWS CLI 명령 사용 SageMaker HyperPod APIs

에 대한 AWS CLI 명령을 사용하여 첫 번째 SageMaker HyperPod 클러스터를 생성합니다 HyperPod.

Slurm을 사용하여 첫 번째 SageMaker HyperPod 클러스터 생성

다음 자습서에서는 AWS CLI 에 대한 명령을 SageMaker HyperPod 통해 새 SageMaker HyperPod 클러스터를 생성하고 Slurm으로 설정하는 방법을 보여줍니다. 자습서 다음에 세 개의 Slurm 노드, , my-login-groupmy-controller-group가 있는 HyperPod 클러스터를 생성합니다worker-group-1.

  1. 먼저 수명 주기 스크립트를 준비하고 Amazon S3 버킷에 업로드합니다. 클러스터를 생성하는 동안 는 각 인스턴스 그룹에서 이를 HyperPod 실행합니다. 다음 명령을 사용하여 Amazon S3에 수명 주기 스크립트를 업로드합니다.

    aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
    참고

    가 특정 접두사로 시작하는 Amazon S3 버킷IAM역할: SageMaker HyperPodAmazonSageMakerClusterInstanceRolePolicy에만 액세스할 수 sagemaker-있으므로 S3 버킷 경로는 접두사 로 시작해야 합니다. Amazon S3

    처음부터 시작하는 경우 Awsome 분산 훈련 GitHub 리포지토리 에 제공된 샘플 수명 주기 스크립트를 사용합니다. 다음 하위 단계에서는 Amazon S3 버킷에 샘플 수명 주기 스크립트를 다운로드하는 방법, 수정할 내용 및 업로드하는 방법을 보여줍니다.

    1. 수명 주기 스크립트 샘플 사본을 로컬 컴퓨터의 디렉터리에 다운로드합니다.

      git clone https://github.com/aws-samples/awsome-distributed-training/
    2. 디렉터리로 이동하여 수명 주기 스크립트 세트를 찾을 1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config수 있습니다.

      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config

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

    3. Slurm 구성 파일을 작성하고 로 저장합니다provisioning_params.json. 파일에서 기본 Slurm 구성 파라미터를 지정하여 SageMaker HyperPod 클러스터 인스턴스 그룹에 Slurm 노드를 올바르게 할당합니다. 이 자습서에서는 다음 예제 구성 과 worker-group-1같이 my-controller-group, my-login-group및 라는 세 개의 Slurm 노드를 설정합니다provisioning_params.json.

      { "version": "1.0.0", "workload_manager": "slurm", "controller_group": "my-controller-group", "login_group": "my-login-group", "worker_groups": [ { "instance_group_name": "worker-group-1", "partition_name": "partition-1" } ] }
    4. 스크립트를 에 업로드합니다s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src. Amazon S3 콘솔을 사용하거나 다음 AWS CLI Amazon S3 명령을 실행하여 이 작업을 수행할 수 있습니다.

      aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
  2. JSON 형식의 CreateCluster 요청 파일을 준비하고 로 저장합니다create_cluster.json. 다음 요청 템플릿은 1.c단계의 에 정의된 Slurm 노드 구성provisioning_params.json과 일치합니다. 의 경우 에서 관리형 로 생성한 IAM 역할ARN의 AmazonSageMakerClusterInstanceRolePolicyExecutionRole제공합니다 SageMaker HyperPod 사용을 위한 사전 조건.

    { // Required: Specify the name of the cluster. "ClusterName": "my-hyperpod-cluster", // Required: Configure instance groups to be launched in the cluster "InstanceGroups": [ { // Required: Specify the basic configurations to set up a controller node. "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}", // Optional: Configure an additional storage per instance group. "InstanceStorageConfigs": [ { // Attach an additional EBS volume to each instance within the instance group. // The default mount path for the additional EBS volume is /opt/sagemaker. "EbsVolumeConfig":{ // Specify an integer between 1 and 16384 in gigabytes (GB). "VolumeSizeInGB": integer, } } ] }, { "InstanceGroupName": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}" } ] }
  3. 다음 명령을 실행하여 클러스터를 생성합니다.

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

    이렇게 하면 생성된 클러스터ARN의 가 반환됩니다.

    리소스 제한으로 인해 오류가 발생하는 경우 계정의 할당량이 충분한 인스턴스 유형으로 변경하거나 에 따라 추가 할당량을 요청해야 합니다SageMaker HyperPod 할당량.

  4. 를 실행describe-cluster하여 클러스터의 상태를 확인합니다.

    aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster

    클러스터 상태가 로 전환되면 다음 단계로 InService진행합니다.

  5. 를 실행list-cluster-nodes하여 클러스터 노드의 세부 정보를 확인합니다.

    aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster

    이렇게 하면 응답이 반환되고 InstanceId는 클러스터 사용자가 (aws ssm)에 로그인하는 데 필요한 것입니다. 클러스터 노드에 로그인하고 ML 워크로드를 실행하는 방법에 대한 자세한 내용은 섹션을 참조하세요 SageMaker HyperPod 클러스터의 작업.

클러스터 삭제 및 리소스 정리

SageMaker HyperPod 클러스터 생성을 성공적으로 테스트한 후 클러스터를 삭제할 때까지 해당 InService 상태에서 계속 실행됩니다. 온디맨드 요금을 기준으로 지속적인 서비스 요금이 발생하지 않도록 온디맨드 SageMaker 용량을 사용하여 생성된 클러스터를 삭제하는 것이 좋습니다. 이 자습서에서는 두 인스턴스 그룹으로 구성된 클러스터를 생성했습니다. 이 중 하나는 C5 인스턴스를 사용하므로 다음 명령을 실행하여 클러스터를 삭제해야 합니다.

aws sagemaker delete-cluster --cluster-name my-hyperpod-cluster

이 자습서에 사용되는 Amazon S3 버킷에서 수명 주기 스크립트를 정리하려면 클러스터 생성 중에 사용한 Amazon S3 버킷으로 이동하여 파일을 완전히 제거합니다.

클러스터에서 모델 훈련 워크로드 실행을 테스트한 경우 데이터를 업로드했는지 또는 Amazon FSx for Lustre 및 Amazon Elastic File System과 같은 다른 Amazon S3 버킷 또는 파일 시스템 서비스에 아티팩트를 저장했는지도 확인합니다. 요금이 발생하지 않도록 하려면 스토리지 또는 파일 시스템에서 모든 아티팩트와 데이터를 삭제합니다.