쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

HyperPod에서 제공하는 기본 수명 주기 스크립트로 시작합니다.

포커스 모드
HyperPod에서 제공하는 기본 수명 주기 스크립트로 시작합니다. - Amazon SageMaker AI

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

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

이 섹션에서는 하향식 접근 방식으로 HyperPod에서 Slurm을 설정하는 기본 흐름의 모든 구성 요소를 안내합니다. CreateCluster API를 실행하기 위한 HyperPod 클러스터 생성 요청을 준비하는 것부터 시작하여 계층 구조에 대해 자세히 살펴보고 수명 주기 스크립트로 이동합니다. Awsome Distributed Training GitHub 리포지토리 에 제공된 샘플 수명 주기 스크립트를 사용합니다. 리포지토리를 복제하려면 다음 명령을 실행합니다.

git clone https://github.com/aws-samples/awsome-distributed-training/

SageMaker HyperPod에서 Slurm 클러스터를 설정하기 위한 기본 수명 주기 스크립트는 1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config에서 확인할 수 있습니다.

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

다음 흐름도는 기본 수명 주기 스크립트를 설계하는 방법에 대한 자세한 개요를 보여줍니다. 다이어그램 아래의 설명과 절차 안내서는 HyperPod CreateCluster API 호출 중에 어떻게 작동하는지 설명합니다.

HyperPod 클러스터 생성 및 수명 주기 스크립트의 구조에 대한 자세한 흐름도입니다.

그림: HyperPod 클러스터 생성 및 수명 주기 스크립트의 구조에 대한 자세한 흐름도입니다. (1) 점선 화살표는 상자가 “called into”인 위치로 이동되며 구성 파일 및 수명 주기 스크립트 준비의 흐름을 보여줍니다. 이는 provisioning_parameters.json 및 수명 주기 스크립트 준비부터 시작됩니다. 그런 다음 집합 실행을 위해 lifecycle_script.py에 순서대로 코딩됩니다. 또한 lifecycle_script.py 스크립트 실행은 HyperPod 인스턴스 터미널에서 실행할 on_create.sh 쉘 스크립트에 의해 수행됩니다. (2) 실선 화살표는 기본 HyperPod 클러스터 생성 흐름과 상자가 "called into" 또는 "submitted to"로 호출되는 방법을 보여줍니다. on_create.sh는 콘솔 UI의 create_cluster.json 또는 클러스터 생성 요청 양식에서 클러스터 생성 요청에 필요합니다. 요청을 제출하면 HyperPod는 요청의 지정된 구성 정보와 수명 주기 스크립트를 기반으로 CreateCluster API를 실행합니다. (3) 점선 화살표는 클러스터 리소스 프로비저닝 중에 HyperPod 플랫폼이 클러스터 인스턴스에 resource_config.json을 생성함을 나타냅니다. resource_config.json에는 클러스터 ARN, 인스턴스 유형 및 IP 주소와 같은 HyperPod 클러스터 리소스 정보가 포함되어 있습니다. 클러스터 생성 중에 resource_config.json 파일을 예상할 수 있도록 수명 주기 스크립트를 준비해야 합니다. 자세한 내용은 아래 절차 가이드를 참조하세요.

다음 절차 가이드에서는 HyperPod 클러스터 생성 중에 발생하는 작업과 기본 수명 주기 스크립트를 설계하는 방법을 설명합니다.

  1. create_cluster.json – HyperPod 클러스터 생성 요청을 제출하려면 JSON 형식의 CreateCluster 요청 파일을 준비합니다. 이 모범 사례 예제에서는 요청 파일의 이름이 create_cluster.json이라고 가정합니다. 인스턴스 그룹으로 HyperPod 클러스터를 프로비저닝하려면 create_cluster.json을 작성합니다. 가장 좋은 방법은 HyperPod 클러스터에서 구성하려는 Slurm 노드 수와 동일한 수의 인스턴스 그룹을 추가하는 것입니다. 설정하려는 Slurm 노드에 할당할 인스턴스 그룹에 고유한 이름을 지정해야 합니다.

    또한 S3 버킷 경로를 지정하여 전체 구성 파일 및 수명 주기 스크립트 세트를 CreateCluster 요청 양식의 필드 이름 InstanceGroups.LifeCycleConfig.SourceS3Uri에 저장하고, 항목 쉘 스크립트의 파일 이름(on_create.sh 명칭)을 InstanceGroups.LifeCycleConfig.OnCreate에 지정해야 합니다.

    참고

    HyperPod 콘솔 UI에서 클러스터 제출 생성 양식을 사용하는 경우 콘솔은 사용자를 대신하여 CreateCluster 요청 채우기 및 제출을 관리하고 백엔드에서 CreateCluster API를 실행합니다. 이 경우 create_cluster.json를 생성할 필요가 없습니다. 대신 클러스터 생성 제출 양식에 올바른 클러스터 구성 정보를 지정해야 합니다.

  2. on_create.sh - 각 인스턴스 그룹에 대해 명령을 실행하고, 스크립트인 실행하여 소프트웨어 패키지를 설치하고, Slurm을 사용하여 HyperPod 클러스터 환경을 설정하려면 진입점 쉘 스크립트인 on_create.sh를 제공해야 합니다. 준비해야 할 두 가지 사항은 Slurm을 설정하기 위해 HyperPod에 필요한 provisioning_parameters.json와 소프트웨어 패키지를 설치하기 위해 수명 주기 스크립트 세트입니다. 이 스크립트는 on_create.sh의 샘플 스크립트에 표시된 대로 다음 파일을 찾아 실행하기 위해 작성되어야 합니다.

    참고

    전체 수명 주기 스크립트 세트를 create_cluster.json에서 지정한 S3 위치에 업로드해야 합니다. 또한 provisioning_parameters.json를 동일한 위치에 배치해야 합니다.

    1. provisioning_parameters.jsonHyperPod에서 Slurm 노드를 프로비저닝하기 위한 구성 양식입니다. on_create.sh 스크립트는 이 JSON 파일을 찾고 경로 식별을 위한 환경 변수를 정의합니다. 이 JSON 파일을 통해 Slurm 노드와 Slurm용 Amazon FSx와 같은 스토리지 옵션을 구성하여 통신할 수 있습니다. provisioning_parameters.json에서 create_cluster.json에 지정한 이름을 사용하여 HyperPod 클러스터 인스턴스 그룹을 설정 방식에 따라 적절하게 Slurm 노드에 할당해야 합니다.

      다음 다이어그램은 두 JSON 구성 파일인 create_cluster.jsonprovisioning_parameters.json을 작성하여 HyperPod 인스턴스 그룹을 Slurm 노드에 할당하는 방법의 예를 보여줍니다. 이 예제에서는 컨트롤러(관리) 노드, 로그인 노드(선택 사항) 및 컴퓨팅(작업자) 노드라는 세 개의 Slurm 노드를 설정하는 경우를 가정합니다.

      작은 정보

      이 두 JSON 파일을 검증하는 데 도움이 되도록 HyperPod 서비스 팀은 검증 스크립트인 validate-config.py를 제공합니다. 자세한 내용은 HyperPod에서 Slurm 클러스터를 생성하기 전에 JSON 구성 파일을 검증합니다.을 참조하세요.

      .json 파일 간의 직접 비교.

      그림: create_cluster.json HyperPod 클러스터 생성과 provisiong_params.json Slurm 구성을 직접 비교합니다. create_cluster.json의 인스턴스 그룹 수는 Slurm 노드로 구성하려는 노드 수와 일치해야 합니다. 그림의 예제의 경우 세 개의 인스턴스 그룹으로 구성된 HyperPod 클러스터에 세 개의 Slurm 노드가 구성됩니다. 이에 따라 인스턴스 그룹 이름을 지정하여 HyperPod 클러스터 인스턴스 그룹을 Slurm 노드에 할당해야 합니다.

    2. resource_config.json - 클러스터 생성 중에 lifecycle_script.py 스크립트는 HyperPod 에서 resource_config.json 파일을 예상하도록 작성됩니다. 이 파일에는 인스턴스 유형 및 IP 주소와 같은 클러스터에 대한 정보가 포함되어 있습니다.

      CreateCluster API를 실행하면 HyperPod는 파일을 create_cluster.json 기반으로 /opt/ml/config/resource_config.json에서 리소스 구성 파일을 생성합니다. 파일 경로는 SAGEMAKER_RESOURCE_CONFIG_PATH라는 환경 변수에 저장됩니다.

      중요

      resource_config.json 파일은 HyperPod 플랫폼에서 자동으로 생성되므로 생성할 필요가 없습니다. 다음 코드는 create_cluster.json 이전 단계를 기반으로 클러스터 생성에서 생성되는 resource_config.json의 예를 보여주고 백엔드에서 어떤 일이 발생하고 자동 생성된 resource_config.json이 어떻게 보일지 이해하는 데 도움이 됩니다.

      { "ClusterConfig": { "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/abcde01234yz", "ClusterName": "your-hyperpod-cluster" }, "InstanceGroups": [ { "Name": "controller-machine", "InstanceType": "ml.c5.xlarge", "Instances": [ { "InstanceName": "controller-machine-1", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" } ] }, { "Name": "login-group", "InstanceType": "ml.m5.xlarge", "Instances": [ { "InstanceName": "login-group-1", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" } ] }, { "Name": "compute-nodes", "InstanceType": "ml.trn1.32xlarge", "Instances": [ { "InstanceName": "compute-nodes-1", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" }, { "InstanceName": "compute-nodes-2", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" }, { "InstanceName": "compute-nodes-3", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" }, { "InstanceName": "compute-nodes-4", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" } ] } ] }
    3. lifecycle_script.py - 프로비저닝되는 동안 HyperPod 클러스터에서 Slurm을 설정하는 수명 주기 스크립트를 집합적으로 실행하는 기본 Python 스크립트입니다. 이 스크립트는 on_create.sh에 지정되거나 식별된 경로에서 provisioning_parameters.jsonresource_config.json을 읽고 관련 정보를 각 수명 주기 스크립트에 전달한 다음 수명 주기 스크립트를 순서대로 실행합니다.

      수명 주기 스크립트는 Slurm 설정, 사용자 생성, Conda 또는 Docker 설치와 같이 클러스터 생성 중에 소프트웨어 패키지를 설치하고 필수 또는 사용자 지정 구성을 설정할 수 있는 완전한 유연성을 가진 스크립트 세트입니다. 샘플 lifecycle_script.py 스크립트는 리포지토리에서 Slurm 데몬 시작(start_slurm.sh), Amazon FSx for Lustre 탑재(mount_fsx.sh), MariaDB 계정 설정(setup_mariadb_accounting.sh) 및 RDS 계정 설정(setup_rds_accounting.sh)과 같은 다른 기본 수명 주기 스크립트를 실행할 준비가 되어 있습니다. 또한 스크립트를 더 추가하고, 동일한 디렉터리에 패키징하고, lifecycle_script.py에 코드 라인을 추가하여 HyperPod가 스크립트를 실행할 수 있습니다. 기본 수명 주기 스크립트에 대한 자세한 내용은 Awsome Distributed Training GitHub 리포지토리3.1 수명 주기 스크립트도 참조하세요.

      참고

      HyperPod는 클러스터의 각 인스턴스에서 SageMaker HyperPod DLAMI를 실행하며 AMI에는 클러스터와 HyperPod 기능 간의 호환성을 준수하는 소프트웨어 패키지가 사전 설치되어 있습니다. 사전 설치된 패키지를 다시 설치하는 경우 호환되는 패키지를 설치할 책임이 있으며 일부 HyperPod 기능이 예상대로 작동하지 않을 수 있습니다.

      기본 설정 외에도 utils 폴더 아래에서 다음 소프트웨어를 설치하기 위한 스크립트를 더 많이 사용할 수 있습니다. lifecycle_script.py 파일은 설치 스크립트를 실행하기 위한 코드 라인을 포함하도록 이미 준비되었습니다. 따라서 다음 항목을 참조하여 해당 행을 검색하고 설명하지 않고 활성화하세요.

      1. 다음 코드 라인은 Docker , EnrootPyxis를 설치하기 위한 것입니다. 이러한 패키지는 Slurm 클러스터에서 Docker 컨테이너를 실행하는 데 필요합니다.

        이 설치 단계를 활성화하려면 config.py 파일에서 enable_docker_enroot_pyxis 파라미터를 True로 설정합니다.

        # Install Docker/Enroot/Pyxis if Config.enable_docker_enroot_pyxis: ExecuteBashScript("./utils/install_docker.sh").run() ExecuteBashScript("./utils/install_enroot_pyxis.sh").run(node_type)
      2. HyperPod 클러스터를 Amazon Managed Service for PrometheusAmazon Managed Grafana와 통합하여 HyperPod 클러스터 및 클러스터 노드에 대한 지표를 Amazon Managed Grafana 대시보드로 내보낼 수 있습니다. 지표를 내보내고 Amazon Managed Grafana에서 Slurm 대시보드, NVIDIA DCGM Exporter 대시보드EFA 지표 대시보드를 사용하려면 Prometheus용 Slurm 내보내기, NVIDIA DCGM 내보내기EFA 노드 내보내기를 설치해야 합니다. Amazon Managed Grafana 워크스페이스에서 수출자 패키지를 설치하고 Grafana 대시보드를 사용하는 방법에 대한 자세한 내용은 SageMaker HyperPod 클러스터 리소스 모니터링 섹션을 참조하세요.

        이 설치 단계를 활성화하려면 config.py 파일에서 enable_observability 파라미터를 True로 설정합니다.

        # Install metric exporting software and Prometheus for observability if Config.enable_observability: if node_type == SlurmNodeType.COMPUTE_NODE: ExecuteBashScript("./utils/install_docker.sh").run() ExecuteBashScript("./utils/install_dcgm_exporter.sh").run() ExecuteBashScript("./utils/install_efa_node_exporter.sh").run() if node_type == SlurmNodeType.HEAD_NODE: wait_for_scontrol() ExecuteBashScript("./utils/install_docker.sh").run() ExecuteBashScript("./utils/install_slurm_exporter.sh").run() ExecuteBashScript("./utils/install_prometheus.sh").run()
  3. 2단계의 모든 구성 파일과 설정 스크립트를 1단계CreateCluster 요청에 제공한 S3 버킷에 업로드해야 합니다. 예를 들어, create_cluster.json에 다음이 있다고 가정하겠습니다.

    "LifeCycleConfig": { "SourceS3URI": "s3://sagemaker-hyperpod-lifecycle/src", "OnCreate": "on_create.sh" }

    그런 다음 "s3://sagemaker-hyperpod-lifecycle/src"에는 on_create.sh, lifecycle_script.py, provisioning_parameters.json 및 기타 모든 설정 스크립트가 포함되어야 합니다. 다음과 같이 로컬 폴더의 파일을 준비했다고 가정합니다.

    └── lifecycle_files // your local folder ├── provisioning_parameters.json ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scrips to be fed into lifecycle_script.py

    파일을 업로드하려면 다음과 같이 S3 명령을 사용합니다.

    aws s3 cp --recursive ./lifecycle_scripts s3://sagemaker-hyperpod-lifecycle/src
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.