연습 - HPC 클러스터에 사용자 지정 노드 배열 추가

완료됨

주의

이 콘텐츠는 EOL(수명 종료) 상태인 Linux 배포판, CentOS를 다룹니다. 이에 따라 사용 및 플랜을 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요.

nodearray는 Azure CycleCloud 클러스터에서 동일하게 구성된 노드 컬렉션입니다. 해당 용도는 대기 중인 작업 수가 변경됨에 따른 클러스터 컴퓨팅 리소스의 수평적 스케일링을 지원하는 것입니다. 각 nodearray에는 이름, 각 노드에 적용되는 특성 세트 및 nodearray를 스케일링하는 방법을 설명하는 선택적 특성이 있습니다.

Slurm 작업 스케줄러의 파티션은 노드를 논리적이고 잠재적으로 겹칠 수 있는 집합으로 그룹화합니다. 해당 파티션의 목적은 리소스나 시간의 제한 같은 특정 제약 조건을 고려하여 작업 처리를 최적화하는 것입니다. 스케줄러는 리소스가 소진되거나 모든 작업이 처리될 때까지 파티션 내의 노드에 작업을 할당합니다.

작업별 리소스 요구 사항을 고려하도록 새로 배포된 Azure CycleCloud 관리형 클러스터를 수정하려고 합니다. 이 목표를 달성하기 위해 기본 템플릿에 더 많은 변경 내용을 적용하고 접근 방식의 유효성을 검사하기로 결정합니다.

이 연습에서 수행하는 작업은 다음과 같습니다.

  • 작업 1: Azure CycleCloud 템플릿에 nodearray 정의 추가
  • 작업 2: Azure CycleCloud 템플릿에 그래픽 인터페이스 매개 변수 추가
  • 작업 3: Azure CycleCloud 클러스터 속성 내보내기
  • 작업 4: 새 매개 변수를 포함하도록 속성 파일 편집
  • 작업 5: 수정된 템플릿 및 매개 변수 파일을 기존 클러스터로 가져오기

참고 항목

이 연습을 시작하기 전에 이전 연습을 성공적으로 완료했는지 확인합니다.

작업 1: Azure CycleCloud 템플릿에 nodearray 정의 추가

이전 연습에서 사용자 지정한 Slurm 템플릿 내에 nodearray의 정의를 추가하는 것부터 시작합니다. 샘플 템플릿에는 hpchtc 레이블이 지정된 두 개의 파티션이 포함되어 있습니다. CUDA(Compute Unified Device Architecture) 기능을 활용하는 작업을 위한 다른 파티션 및 해당 nodearray를 만듭니다.

  1. Azure Portal로 이동합니다. 메시지가 표시되면 이 모듈에서 사용 중인 Azure 구독의 기여자 또는 소유자 역할이 있는 Microsoft 계정 또는 Microsoft Entra 계정으로 인증합니다.

  2. Azure Portal에서 검색 텍스트 상자 옆의 도구 모음에서 해당 아이콘을 선택하여 Cloud Shell 을 열고 Bash 세션을 실행하고 있는지 확인합니다.

  3. 이전 연습에서 가져온 GitHub 리포지토리를 호스팅하는 디렉터리로 작업 디렉터리를 설정하려면, Cloud Shell에서 다음 명령을 실행합니다.

    cd ~/cyclecloud-slurm/templates
    
  4. 다음 명령을 실행하여 nano 편집기에서 다운로드한 템플릿을 엽니다.

    nano slurm.txt
    
  5. nano 편집기 인터페이스에서 [parameters About] 섹션으로 스크롤하고 해당 섹션 바로 앞에 다음 내용을 추가합니다.

    
    [[nodearray cuda]]
    MachineType = $CUDAMachineType
    ImageName = $CUDAImageName
    MaxCoreCount = $MaxCUDAExecuteCoreCount
    
    AdditionalClusterInitSpecs = $CUDAClusterInitSpecs
    
        [[[configuration]]]
        slurm.autoscale = true
        slurm.hpc = true
    
        [[[cluster-init cyclecloud/slurm:execute]]]
    
        [[[network-interface eth0]]]
        AssociatePublicIpAddress = $ExecuteNodesPublic
    
    

    참고 항목

    Windows 컴퓨터를 사용하는 경우 Shift + 삽입 키 조합을 사용하여 클립보드의 콘텐츠를 붙여넣을 수 있습니다.

    참고 항목

    변경 내용은 추가 nodearray를 정의합니다.

작업 2: Azure CycleCloud 템플릿에 그래픽 인터페이스 매개 변수 추가

Azure CycleCloud 그래픽 인터페이스를 사용하여 템플릿 매개 변수 값을 수정하기 위해 템플릿에 더 많은 변경 내용을 적용합니다.

  1. nano 편집기 인터페이스에서 [[parameters Auto-Scaling]] 섹션으로 스크롤하고 해당 섹션 바로 앞에 다음 내용을 추가합니다.

    
        [[[parameter CUDAMachineType]]]
        Label = CUDA VM Type
        Description = The VM type for CUDA execute nodes
        ParameterType = Cloud.MachineType
        DefaultValue = Standard_NC24
    
    
  2. [[[parameter HPCMaxScalesetSize]]] 섹션으로 스크롤하고 해당 섹션 바로 앞에 다음 내용을 추가합니다.

    
        [[[parameter MaxCUDAExecuteCoreCount]]]
        Label = Max CUDA Cores
        Description = The total number of CUDA execute cores to start
        DefaultValue = 100
        Config.Plugin = pico.form.NumberTextBox
        Config.MinValue = 0
        Config.IntegerOnly = true
    
    
  3. [[[parameter SchedulerClusterInitSpecs]]] 섹션으로 스크롤하고 해당 섹션 바로 앞에 다음 내용을 추가합니다.

    
        [[[parameter CUDAImageName]]]
        Label = CUDA OS
        ParameterType = Cloud.Image
        Config.OS = linux
        DefaultValue = cycle.image.centos7
        Config.Filter := Package in {"cycle.image.centos7", "cycle.image.ubuntu18"}
    
    
  4. [[parameters Advanced Networking]] 섹션으로 스크롤하고 해당 섹션 바로 앞에 다음 내용을 추가합니다.

    
        [[[parameter CUDAClusterInitSpecs]]]
        Label = CUDA Cluster-Init
        DefaultValue = =undefined
        Description = Cluster init specs to apply to CUDA execute nodes
        ParameterType = Cloud.ClusterInitSpecs
    
    
  5. Ctrl + O 키 조합을 선택하고 Enter 키를 선택한 다음 Ctrl + X 키 조합을 선택하여 변경한 내용을 저장하고 파일을 닫습니다.

작업 3: Azure CycleCloud 클러스터 속성 내보내기

Azure CycleCloud 템플릿에서 변경한 구성을 대상 클러스터에 적용하기 전에 먼저 클러스터 속성을 내보내야 합니다.

  1. 기존 클러스터를 나열하려면, Cloud Shell에서 다음 명령을 실행합니다.

    cyclecloud show_cluster
    

    참고 항목

    출력에 contoso-custom-slurm-lab-cluster 항목이 포함되어 있는지 확인합니다.

  2. 다음 명령을 실행하여 contoso-custom-slurm-lab-cluster 클러스터 및 해당 값의 매개 변수 목록을 params.json 파일로 내보냅니다.

    cyclecloud export_parameters contoso-custom-slurm-lab-cluster > ~/params.json
    
  3. 다음 명령을 실행하여 내보낸 매개 변수 및 해당 값의 목록을 검토합니다.

    cat ~/params.json
    

작업 4: 새 매개 변수를 포함하도록 속성 파일 편집

Azure CycleCloud 템플릿에 적용한 편집 내용에는 새로 제공된 모든 매개 변수의 기본값이 포함되어 있지만 특정 요구 사항을 고려하여 수정해야 할 수도 있습니다. 이 작업에서는 CUDAMachineTypeMaxCUDAExecuteCoreCount 매개 변수의 값을 설정합니다.

  1. 다운로드한 매개 변수 파일을 nano 편집기에서 열려면, Cloud Shell에서 다음 명령을 실행합니다.

    nano ~/params.json
    
  2. nano 편집기에서 파일의 끝까지 스크롤하고 닫는 중괄호(}) 앞에 새 줄로 시작하는 다음 콘텐츠를 추가합니다.

       "CUDAMachineType" : "Standard_NC6",
       "MaxCUDAExecuteCoreCount" : 60
    
  3. 이전 단계에서 추가한 줄 앞에 있는 줄의 끝에 쉼표를 추가합니다.

       "CUDAMachineType" : "Standard_NC6"
    
  4. Ctrl + O 키 조합을 선택하고 Enter 키를 선택한 다음 Ctrl + X 키 조합을 선택하여 변경한 내용을 저장하고 파일을 닫습니다.

작업 5: 수정된 템플릿 및 매개 변수 파일을 기존 클러스터로 가져오기

이 연습의 마무리로, 수정된 템플릿과 해당 매개 변수 파일을 기존 클러스터로 가져와 현재 구성을 재정의합니다.

  1. 수정된 템플릿과 그 매개 변수 파일을 기존 클러스터로 가져오려면, Cloud Shell에서 다음 명령을 실행합니다.

    cyclecloud import_cluster contoso-custom-slurm-lab-cluster --file ~/cyclecloud-slurm/templates/slurm.txt -p ~/params.json -c Slurm --force
    

    참고 항목

    기존 클러스터의 구성을 덮어쓰려면 대상 클러스터의 이름 및 --force 플래그를 지정해야 합니다.

  2. 컴퓨터에서 다른 브라우저 창을 열고 https://< IP_address> URL로 이동합니다. 메시지가 표시되면 계속 진행할지 확인합니다.

  3. 인증하라는 메시지가 표시되면 Azure CycleCloud CLI를 구성하는 데 사용한 것과 동일한 Azure CycleCloud 애플리케이션 사용자 계정의 자격 증명을 제공하여 로그인합니다.

  4. Azure CycleCloud 그래픽 인터페이스에서 클러스터 페이지로 이동합니다. 클러스터 목록에서 contoso-custom-slurm-lab-cluster항목을 선택한 다음 편집을 선택합니다.

  5. contoso-custom-slurm-lab-cluster 편집 팝업 창의 정보 페이지에서 다음을 선택합니다.

  6. 필수 설정 페이지에서 Standard_NC6 값으로 설정된 CUDA VM 유형 항목과 해당 자동 크기 조정 옵션이 있는지 확인합니다.

contoso-custom-slurm-lab-cluster 편집 팝업 창의 필수 설정 페이지의 스크린샷

축하합니다! 이 모듈의 두 번째 연습을 완료했습니다. 이 연습에서는 해당 파티션이 있는 새 nodearray의 정의가 있는 수정된 템플릿을 사용하여 Azure CycleCloud 클러스터를 추가로 사용자 지정했습니다. 이 목표를 달성하기 위해 템플릿을 편집한 후 클러스터 매개 변수 파일을 내보내고 편집한 다음 수정된 템플릿과 함께 클러스터로 가져왔습니다.

참고 항목

다음 연습을 실행할 계획이라면 이 연습에서 배포하고 구성한 리소스를 삭제하지 마세요. 다음 연습을 완료하려면 이러한 리소스가 필요합니다.