Azure CycleCloud를 사용하여 Slurm을 실행하는 방법 설명

완료됨

이 단원을 완료한 후에는 Azure CycleCloud에서 Slurm을 사용할 수 있어야 합니다.

CycleCloud에서 Slurm 사용

다음 단계를 수행하여 Azure CycleCloud를 사용하여 HPC(고성능 컴퓨팅) 클러스터를 배포할 수 있습니다.

  1. 배포된 Azure CycleCloud 인스턴스에 연결하고 인증합니다.

  2. 새 클러스터 만들기 페이지에서 사용 가능한 옵션을 검토하고 스케줄러 섹션에서 Slurm을 선택합니다.

    Azure CycleCloud 웹 애플리케이션의 새 클러스터 만들기 페이지를 보여 주는 스크린샷.

  3. 새 Slurm 클러스터 페이지의 정보 탭에서 클러스터 이름 텍스트 상자에 Slurm 클러스터의 이름을 입력합니다.

  4. 새 Slurm 클러스터 페이지의 필수 설정 탭에서 클러스터 이름 텍스트 상자에 다음 설정을 구성합니다.

    • 지역: 클러스터 노드를 호스트할 데이터 센터를 정의합니다.
    • 스케줄러 VM 유형: 작업 스케줄러를 호스트할 가상 머신의 VM SKU를 지정할 수 있습니다.
    • HPC VM 유형: HPC 파티션 워크로드를 호스트할 가상 머신의 VM SKU를 지정할 수 있습니다.
    • HTC VM 유형: HTC 파티션 워크로드를 호스트할 가상 머신의 VM SKU를 지정할 수 있습니다.
    • 자동 크기 조정: 해당 노드가 필요하거나 더 이상 필요하지 않을 때 파티션 노드를 호스트하는 VM 인스턴스의 시작 및 중지를 사용하거나 사용하지 않도록 설정할 수 있습니다.
    • 최대 HPC 코어 수: 자동 스케일링 시 HPC 파티션에 할당할 수 있는 최대 CPU 코어 수입니다.
    • 최대 HTC 코어 수: 자동 스케일링 시 HTC 파티션에 할당할 수 있는 최대 CPU 코어 수입니다.
    • ScaleSet당 최대 VM 수: 파티션 워크로드를 호스트하는 데 사용할 수 있는 최대 VM 수입니다.
    • 스폿 인스턴스 사용: Azure 스폿 인스턴스를 사용할지 여부를 결정합니다. 스폿 인스턴스는 실행 비용이 상당히 저렴하지만 작업 실행에 영향을 미칠 수 있는 경고 없이 제거할 수 있습니다.
    • 서브넷 ID: 클러스터 노드 VM을 호스트할 Azure 가상 네트워크 서브넷입니다.

    Azure CycleCloud 웹 애플리케이션의 새 Slurm 클러스터 페이지의 필수 설정 탭을 보여 주는 스크린샷.

  5. 네트워크 연결 스토리지 페이지에서 네트워크 연결 스토리지 탑재에 기본 제공 또는 외부 NFS 옵션을 사용할지 여부를 구성합니다. Builtin을 선택하면 스케줄러 노드가 다른 노드의 탑재 지점 역할을 하는 NFS 서버로 구성됩니다. 외부 NFS를 지정하는 경우 Azure NetApp Files, HPC Cache 또는 NFS 서버를 실행하는 특별히 구성된 VM과 같은 네트워크 연결 스토리지 디바이스의 세부 정보를 제공할 수 있습니다.

  6. 고급 설정 페이지에서 다음 설정을 지정할 수 있습니다.

    • Slurm 버전: 클러스터와 함께 사용할 Slurm 버전을 선택합니다.
    • 작업 계정: 작업 계정을 사용하도록 설정할지 여부와 계정 데이터를 저장하기 위해 선택할 설정을 지정합니다.
    • 종료 정책: 인스턴스 종료 또는 인스턴스 할당 취소 중에서 선택할 수 있습니다.
    • 자격 증명: 연관된 Azure 구독에 연결하는 데 필요한 자격 증명입니다.
    • 스케줄러 운영 체제: 스케줄러를 호스팅하는 데 사용되는 Linux 운영 체제를 선택합니다.
    • HPC 운영 체제: 스케줄러를 호스팅하는 데 사용되는 Linux 운영 체제를 지정합니다.
    • 스케줄러 클러스터 Init: 여기에서는 스케줄러 VM에 적용할 사용자 지정 지침을 지정합니다.
    • HTC 클러스터 Init: HTC 노드에 적용할 사용자 지정 지침을 지정합니다.
    • 고급 네트워킹: 이 옵션은 인터넷 주소에서 헤드 노드에 액세스할 수 있는지 여부와 실행 노드를 인터넷에서 액세스할 수 있는지 여부에 따라 프록시를 반환을 사용할 수 있습니다.

    Azure CycleCloud 웹 애플리케이션의 새 Slurm 클러스터 페이지에 있는 고급 설정 탭을 보여 주는 스크린샷.

  7. Cloud-init 페이지를 사용하면 가상 머신 노드가 배포된 후 해당 노드에 사용자 지정 구성 설정을 전달할 수 있습니다.

메모리 설정

CycleCloud는 일정 예약을 위해 Slurm에서 사용할 수 있는 메모리의 양을 자동으로 설정합니다. 다른 Linux 커널 옵션으로 인해 사용 가능한 메모리의 양은 조금씩 변경될 수 있으며 OS와 VM은 작업에 사용할 수 있는 적은 양의 메모리를 사용할 수 있으므로 CycleCloud는 Slurm 구성의 메모리 양을 자동으로 줄입니다. 기본적으로 CycleCloud는 VM에서 보고된 사용 가능한 메모리의 5%를 보관하지만 클러스터 템플릿에서 slurm.dampen_memory를 보관할 메모리 비율로 설정하여 이 값을 재정의할 수 있습니다. 예를 들어, VM 메모리의 20%를 절약하려면 다음을 사용합니다.

slurm.dampen_memory=20

Slurm 파티션 구성

Azure CycleCloud와 함께 제공되는 기본 템플릿에는 두 개의 파티션(HPC 및 HTC)이 있으며 Slurm 파티션에 직접 매핑되는 사용자 지정 노드 배열을 정의할 수 있습니다. 예를 들어 GPU 파티션을 만들려면 클러스터 템플릿에 다음 섹션을 추가합니다.

[[nodearray gpu]]
    MachineType = $GPUMachineType
    ImageName = $GPUImageName
    MaxCoreCount = $MaxGPUExecuteCoreCount
    Interruptible = $GPUUseLowPrio
    AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs

        [[[configuration]]]
        slurm.autoscale = true
        # Set to true if nodes are used for tightly-coupled multi-node jobs
        slurm.hpc = false

        [[[cluster-init cyclecloud/slurm:execute:2.0.1]]]
        [[[network-interface eth0]]]
        AssociatePublicIpAddress = $ExecuteNodesPublic

기존 Slurm 클러스터 편집

기존 Slurm 클러스터를 수정하고 변경 내용을 적용하는 경우 slurm.conf 파일을 다시 빌드하고 클러스터의 기존 노드를 업데이트해야 합니다. Azure cyclecloud에 배포된 Slurm 클러스터에 있는 스크립트를 사용하여 cyclecloud_slurm.sh라는 특수 스크립트를 사용하여 이 작업을 수행할 수 있습니다. 스크립트는 Slurm 스케줄러 노드의 /opt/cycle/slurm 디렉터리에 있습니다. 클러스터를 변경한 후 apply_changes 매개 변수를 사용하여 루트로 다음 스크립트를 실행합니다. 예를 들어, MPI(메시지 전달 인터페이스) 파티션에 참여하는 노드에 영향을 미치는 변경을 하는 경우 /opt/cycle/slurm/cyclecloud_slurm.sh apply_changes를 사용합니다.

노드 또는 파티션에 대한 자동 스케일링 사용 안 함

slurm.conf 파일을 직접 편집하여 실행 중인 Slurm 클러스터에 대한 자동 크기 조정을 사용하지 않도록 설정할 수 있습니다. 개별 노드 또는 전체 파티션을 자동 스케일링에서 제외할 수 있습니다.

자동 크기 조정에서 노드 하나 또는 여러 개를 제외하려면 Slurm 구성 파일에 SuspendExcNodes=<listofnodes>를 추가합니다. 예를 들어, HPC 파티션에서 노드 1과 2를 제외하려면 다음을 /sched/slurm.conf에 추가한 다음 slurmctld 서비스를 다시 시작합니다.

SuspendExcNodes=hpc-pg0-[1-2]

파티션을 제외하려면 /sched/slurm.conf 파일도 수정합니다. 예를 들어, 자동 크기 조정에서 HPC 파티션을 제외하려면 slurm.conf에 다음 줄을 추가하고 slurmctld 서비스를 다시 시작합니다.

SuspendExcParts=hpc