Azure CycleCloud와 Slurm 통합에 대해 설명
이 단원을 완료하면 Slurm이 Azure CycleCloud와 통합되는 방법을 설명하고 Slurm과 Azure CycleCloud 간의 주요 통합 영역을 설명할 수 있어야 합니다.
Azure CycleCloud란?
Azure CycleCloud는 Azure에서 HPC 클러스터를 배포하고 워크로드를 관리하기 위한 도구입니다. 다음을 포함하여 다양한 HPC 기능을 제공합니다.
- HPC 클러스터의 템플릿 기반 배포: Azure CycleCloud는 Slurm, OpenPBS, LSF, Grid Engine, HTCondor 등 가장 일반적인 클러스터 스케줄러를 배포하는 사용자 지정 가능한 기본 제공 템플릿을 제공합니다. Azure CycleCloud 인스턴스로 가져올 수 있는 미리 정의된 다른 많은 템플릿은 CycleCloud GitHub 리포지토리에서 사용할 수 있습니다.
- 클러스터 노드의 수동 및 자동 스케일링: Azure CycleCloud를 사용하면 작업 큐 및 거버넌스 정책의 길이에 따라 관리형 클러스터의 수동 및 자동 수평 스케일링이 가능합니다. Azure CycleCloud는 사용자 지정 스케줄러용 자동 스케일링 어댑터를 개발하기 위한 REST API도 제공합니다.
- cloud-init 스크립트를 통한 노드 구성: Azure CycleCloud는 다른 CycleCloud 관련 구성 작업 전에 관리형 클러스터 노드 내에서 실행되는 사용자 지정 스크립트를 기반으로 구성 관리를 지원합니다.
- 내부 및 외부 클러스터 스토리지 관리: Azure CycleCloud에서는 Azure 관리 디스크 및 네트워크 연결 스토리지(예: NFS 서버 또는 BeeGFS 클러스터)를 프로비저닝, 탑재, 포맷하여 클러스터 스토리지를 구성할 수 있습니다.
- 모니터링, 로깅, 경고: Azure CycleCloud는 기본 제공 클러스터 모니터링을 제공하며 Azure Monitor와 통합됩니다. CycleCloud 클러스터의 로그 데이터를 Log Analytics에 저장하고 사용자 지정 메트릭 대시보드를 만들 수도 있습니다. 원격 분석 데이터에 의해 트리거되는 사용자 지정 경고 및 메일 알림을 만들 수도 있습니다. 모든 Azure CycleCloud 활동이 기록됩니다.
- 인증 및 권한 부여: Azure CycleCloud는 기본 제공 로컬 인증을 지원합니다. 아니면 AD DS(Active Directory Domain Services) 또는 기타 LDAP(Lightweight Directory Access Protocol) 기반 ID 공급자와 통합할 수 있습니다. 기본적으로 로컬로 정의된 사용자는 관리형 클러스터 노드의 운영 체제에 액세스할 수 있지만, 클러스터 사용자를 별도로 관리할 수도 있습니다. Azure 구독의 리소스를 관리하려면 Microsoft Entra 서비스 주체나 관리 ID를 사용할 수 있습니다.
- 거의 실시간으로 비용 보고 및 제어: Azure CycleCloud는 클러스터 사용량을 추적하고 해당 비용을 예측합니다. 이 기능을 사용하면 클러스터 비용이 지정한 금액을 초과할 때 트리거되는 예산 경고를 설정할 수 있습니다. Azure CycleCloud는 Microsoft Cost Management와도 통합됩니다.
Azure CycleCloud 및 Azure Batch
Azure CycleCloud 및 Azure Batch 클라우드에서 대규모 병렬 및 고성능 컴퓨팅 워크로드를 관리하고 실행하도록 설계된 Azure 서비스입니다. 이런 서비스는 대상 그룹, 기능 집합, 사용 사례에 따라 다릅니다.
Azure CycleCloud는 Azure에서 HPC 및 HTC 클러스터를 만들고, 관리하고, 최적화하는 데 중점을 줍니다. CycleCloud는 전산 유체 역학, 유전체학, 엔지니어링 시뮬레이션과 같은 도메인별 HPC 및 HTC 워크로드를 대상으로 합니다. CycleCloud는 Slurm, Grid Engine, LSF, HTCondor와 같은 다양한 클러스터 스케줄러를 지원합니다. 또한 스토리지 솔루션에 대한 Azure Blob Storage, Azure Managed Disks, Azure NetApp Files 같은 Azure 서비스와 통합됩니다.
Azure Batch는 Azure에서 대규모 병렬 및 일괄 처리 워크로드를 실행하기 위해 설계된 관리되는 서비스입니다. Azure Batch 데이터 처리, 렌더링, 기계 학습 모델 학습과 같은 다양한 유형의 일괄 처리 작업에 적합합니다. Azure Batch 워크로드 요구 사항에 따라 리소스 관리, 작업 예약, 컴퓨팅 노드 스케일링을 담당합니다.
Azure CycleCloud는 여러 클러스터 스케줄러를 지원하는 HPC 및 HTC 워크로드를 위해 특별히 설계되었으며, Azure Batch는 보다 범용이므로 다양한 유형의 병렬 및 일괄 처리 작업을 지원합니다.
HPC 및 HTC 파티션 이해
Azure CycleCloud 파티션은 특정 구성, 용도, 워크로드 유형을 사용하는 컴퓨팅 노드를 논리적으로 그룹화한 것입니다. HPC 파티션 및 HTC 파티션이라는 용어는 고성능 컴퓨팅 및 고처리량 컴퓨팅 워크로드를 처리하도록 구성된 파티션을 나타냅니다.
HPC 파티션은 많은 수의 CPU 또는 GPU 기반 가상 머신을 사용하여 복잡한 작업을 수행합니다. HTC는 오랜 기간 동안 많은 컴퓨팅 리소스를 사용하여 느슨하게 결합된 많은 작업을 수행하는 아키텍처입니다. 과학 및 엔지니어링 시뮬레이션과 관련된 계산과 같이 크고 복잡한 계산을 수행해야 하는 경우 HPC 파티션을 사용할 수 있습니다.
HTC 파티션은 많은 수의 CPU 또는 GPU 기반 가상 머신 노드를 사용하여 긴밀한 결합과 빠른 통신이 필요한 복잡한 수학 작업을 해결합니다. HTC 작업은 일반적으로 독립적이며 순차적이며 여러 사이트의 다양한 컴퓨팅 리소스에서 예약할 수 있습니다. HPC 작업은 일반적으로 병렬, 상호 의존적이며 대기 시간이 짧은 상호 연결된 단일 사이트에서 실행해야 합니다. HTC는 대량의 소규모 작업을 처리하는 데 적합하며 작은 요소로 나눌 수 있는 데이터 집약적 작업을 일괄 처리하는 데 적합합니다. HTC에서 일괄 처리하면 대량의 데이터나 계산 작업을 일괄 처리라고 하는 더 작고 관리하기 쉬운 그룹으로 나누어 처리할 수 있습니다. 클러스터는 컴퓨팅 클러스터의 다른 노드에 각 일괄 처리를 할당하여 이런 일괄 처리를 병렬로 처리합니다.
Azure CycleCloud와 같은 클라우드 기반 환경에서 HTC 및 HPC는 동일한 클러스터 아키텍처에서 실행할 수 있습니다.
Azure CycleCloud 구현
CycleCloud는 Linux 기반 웹 애플리케이션으로 구현되며, Azure 환경에 액세스할 수 있는 모든 위치에 설치할 수 있습니다. 가장 간단한 설치 방법은 ARM(Azure Resource Manager) 템플릿을 사용하여 배포를 자동화하는 옵션과 함께 해당 Azure Marketplace 이미지를 사용하여 Azure VM을 배포하는 것입니다. yum
또는 apt
패키지를 사용하거나 Microsoft Container Registry에서 제공되는 컨테이너 이미지를 사용할 수도 있습니다.
초기 구성 중에는 CycleCloud 애플리케이션을 호스트하는 운영 체제 및 이후에 배포되는 클러스터 노드에 대한 액세스를 보호하는 SSH 키를 제공하기 위한 옵션이 표시됩니다. CycleCloud 애플리케이션이 ARM과 상호 작용하도록 하려면, 이 상호 작용에 대한 보안 컨텍스트를 제공하고 Azure RBAC(역할 기반 액세스 제어)를 사용하여 대상 Azure 구독에서 충분한 권한을 할당할 Microsoft Entra ID를 선택해야 합니다. 이 ID는 서비스 주체의 형식을 취할 수 있습니다. 또는 Azure VM에서 Azure CycleCloud 애플리케이션을 호스트하는 경우 관리 ID를 사용할 수 있습니다.
또한 Azure CycleCloud 인스턴스에는 Azure 스토리지 계정 및 함께 제공되는 Blob 컨테이너가 필요합니다. locker라고 하는 이 컨테이너는 프로젝트를 클러스터 노드에 배포하기 위한 준비 영역을 제공합니다.
설치되면 Azure CycleCloud 애플리케이션은 사용자가 HPC 시스템을 관리하고 모니터링할 수 있는 그래픽 사용자 인터페이스와 CycleCloud를 기존 워크플로에 쉽게 통합하고 자동화할 수 있는 CLI(명령줄 인터페이스)를 제공합니다. CLI를 사용하여 템플릿을 가져오고, 클러스터 프로비전을 자동화하고, 고급 관리 작업을 수행할 수도 있습니다.
CycleCloud 클러스터 자동 스케일링 이해
Azure CycleCloud는 Azure에서 스케줄러를 쉽게 배포하도록 지원합니다. 그러면 스케줄러는 Azure 리소스로 구성된 클러스터에서 실행되는 작업을 배포하고 관리합니다. Azure CycleCloud는 스케줄러로 작동하지 않습니다. 대신 스케줄러와 기본 플랫폼 간의 중개자로 작동합니다. 또한 Azure CycleCloud는 REST API 기반 프로그래밍 인터페이스 및 Python 기반 클라이언트 라이브러리를 제공하여 해당 스케줄러에 대한 자동 크기 조정 기능의 개발을 간소화합니다.
Azure CycleCloud를 사용하면 관리형 클러스터의 자동 스케일링 동작과 클러스터 작업 큐의 길이를 상호 연결할 수 있습니다. (예를 들어) 유휴 노드가 종료된 후의 시간 또는 자동 중지 검사 빈도를 제어하는 템플릿 매개 변수를 정의하여 이 동작을 추가로 사용자 지정할 수 있습니다.
모든 기본 제공 템플릿은 Azure CycleCloud 그래픽 인터페이스에서 직접 자동 스케일링 설정을 노출합니다. 각각의 경우, 설정에는 CPU 코어 수로 표현되는 자동 크기 조정 범위의 하한 및 상한을 지정하는 옵션이 포함됩니다. 상한을 사용하면 예기치 않은 요금 발생의 가능성을 최소화할 수 있습니다. 예산 경고를 설정하여 이 위험을 추가로 완화할 수 있습니다.
하한 임계값을 0으로 설정하면 클러스터를 만들면 스케줄러의 헤드 노드만 프로비전됩니다. 그러나 스케줄러는 큐에 있는 작업을 감지하면 정의된 한도까지 해당 워크로드를 실행하는 데 필요한 컴퓨팅 노드의 프로비전을 시작합니다. 개별 작업이 서로 독립적으로 실행되는 느슨하게 결합된 작업 또는 병렬 작업을 지원하기 위해, 첫 번째 노드를 사용할 수 있게 되는 즉시 작업이 실행되기 시작합니다. MPI(메시지 전달 인터페이스) 기능을 사용하는 작업과 같이 긴밀하게 결합된 작업의 경우 노드 간 종속성의 범위에 따라 대기 시간이 더 길어질 수 있습니다. 작업 큐가 빈 상태로 유지된 시간이 허용된 유휴 시간을 초과하면, 컴퓨팅 노드의 자동 중지가 시작되고 클러스터는 다시 한번 스케줄러 헤드 노드로만 구성됩니다.
CycleCloud와 Slurm 통합
CycleCloud에서 Slurm 기반 클러스터를 설정하여 Slurm을 Azure CycleCloud와 통합할 수 있습니다. 여기서 CycleCloud는 기본 인프라를 관리하고 Slurm은 작업 예약 및 리소스 관리를 처리합니다.
Slurm은 다음과 같은 방식으로 Azure CycleCloud와 통합됩니다.
- 클러스터 구성: Azure CycleCloud에서 클러스터를 새로 만들 때 Slurm을 클러스터 스케줄러로 선택할 수 있습니다. 즉, CycleCloud는 클러스터 리소스(예: VM, 스토리지, 네트워킹)를 구성하고 클러스터의 마스터 노드(또는 컨트롤러 노드)에 Slurm 스케줄러를 배포합니다.
- 클러스터 배포 Azure CycleCloud는 Azure에 Slurm 클러스터를 배포하여 마스터 노드와 컴퓨팅 노드에 필요한 VM을 만듭니다. 마스터 노드는 Slurm 컨트롤러 디먼(
slurmctld
)을 실행하고, 컴퓨팅 노드는 작업 실행을 담당하는 Slurm 디먼(slurmd
)을 실행합니다. CycleCloud는 네트워크 및 스토리지 리소스를 설정하고 지정된 설정에 따라 Slurm 클러스터를 구성합니다. - 자동 크기 조정: Azure CycleCloud는 워크로드 요구 사항 및 정의된 자동 스케일링 정책에 따라 컴퓨팅 노드를 추가하거나 제거하여 Slurm 클러스터를 동적으로 확장할 수 있습니다. 이렇게 하면 리소스 사용량을 최적화하고 비용을 제어할 수 있습니다. 새 작업이 제출되고 리소스가 부족한 경우 CycleCloud는 자동으로 추가 컴퓨팅 노드를 프로비전하고 Slurm 클러스터에 추가할 수 있습니다. 마찬가지로 워크로드가 감소하면 CycleCloud는 유휴 컴퓨팅 노드를 자동으로 제거하여 비용을 절감할 수 있습니다.
- 모니터링 및 관리: Azure CycleCloud는 클러스터 성능, 리소스 사용량, 작업 상태 추적과 같은 Slurm 클러스터에 대한 모니터링과 관리 기능을 제공합니다. 클러스터 수명 주기를 관리하고, 클러스터를 시작/중지하고, 필요에 따라 업데이트를 적용할 수도 있습니다.
- 작업 제출:
sbatch
,srun
,salloc
와 같은 표준 Slurm 명령을 사용하여 Slurm 클러스터에 작업을 제출할 수 있습니다. 그런 다음, 이런 작업은 Slurm 클러스터의 컴퓨팅 노드를 구성하는 Azure VM에서 예약되고 실행됩니다.