H4D 인스턴스로 RDMA 지원 HPC Slurm 클러스터 만들기

이 페이지에서는 H4D 머신 유형으로 원격 직접 메모리 액세스 (RDMA)를 사용하는 고성능 컴퓨팅 (HPC) Slurm 클러스터를 만드는 방법을 설명합니다. gcloud CLI 및 Cluster Toolkit을 사용하여 클러스터를 구성합니다.

H4D 머신 시리즈는 까다로운 HPC 워크로드의 요구사항을 충족하도록 특별히 설계되었습니다. H4D는 RDMA 지원 200Gbps 네트워킹을 통해 워크로드 확장성이 개선된 인스턴스를 제공합니다. Google Cloud의 H4D 컴퓨팅 최적화 머신 유형에 대한 자세한 내용은 H4D 머신 시리즈를 참고하세요.

튜토리얼 개요

이 튜토리얼에서는 RDMA를 사용하는 H4D 머신 유형을 사용하여 HPC 최적화 Slurm 클러스터를 설정하는 단계를 설명합니다. 구체적으로는 Compute Engine 가상 머신으로 클러스터를 설정하고, 필요한 Terraform 모듈을 저장할 Cloud Storage 버킷을 만들고, Slurm 클러스터를 프로비저닝할 Filestore 인스턴스를 설정합니다. 이 튜토리얼의 단계를 완료하려면 다음 프로세스를 따르세요.

  1. 필요한 권한과 환경 변수를 사용하여 Google Cloud 프로젝트를 설정합니다.
  2. Cloud Storage 버킷을 설정합니다.
  3. Cluster Toolkit을 설정합니다.
  4. Cluster Toolkit 디렉터리로 전환합니다.
  5. Slurm 배포 YAML 파일을 만듭니다.
  6. 청사진을 사용하여 Slurm 클러스터를 프로비저닝합니다.
  7. Slurm 클러스터에 연결합니다.

시작하기 전에

  1. 각각 192개의 vCPU가 있는 두 개의 H4D 인스턴스에 대해 예약 용량 블록을 요청합니다.
  2. Slurm 클러스터를 프로비저닝하기에 충분한 Filestore 할당량이 있는지 확인합니다. Filestore 서비스 등급이 기본 SSD인 스토리지 영역 용량이 최소 5,120GiB 필요합니다.

    Filestore 할당량을 확인하려면 Google Cloud 콘솔에서 할당량 및 시스템 한도를 확인하고 테이블을 필터링하여 Filestore 리소스만 표시합니다.

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Compute Engine, Filestore, Cloud Storage, Service Usage, Cloud Resource Manager API를 사용 설정합니다.

    API 사용 설정

비용

이 튜토리얼을 실행하는 비용은 튜토리얼 설정 또는 작업 실행과 같이 완료하는 각 섹션에 따라 다릅니다. 가격 계산기를 사용하여 비용을 계산할 수 있습니다.

  • 이 튜토리얼 설정 비용을 추정하려면 다음 사양을 사용하세요.

    • 리전당 Filestore (기본 SSD) 용량: 5,120GiB
    • 표준 영구 디스크: Slurm 로그인 노드용 50GB pd-standard
    • 성능 (SSD) 영구 디스크: Slurm 컨트롤러용 50GB pd-ssd
    • VM 인스턴스: h4d-highmem-192, h4d-standard-192 또는 h4d-highmem-192-lssd 머신 유형으로 생성된 H4D 인스턴스 2개
    • Hyperdisk Balanced 볼륨: H4D 인스턴스당 50GiB

Cloud Shell 실행

이 튜토리얼에서는 Google Cloud에서 호스팅되는 리소스를 관리하기 위한 셸 환경인 Cloud Shell을 사용합니다.

Cloud Shell에는 Google Cloud CLI가 사전 설치되어 있습니다. gcloud CLI는 Google Cloud의 기본 명령줄 인터페이스를 제공합니다. Cloud Shell을 실행하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔

  2. 콘솔의 오른쪽 상단에서 Cloud Shell 활성화 버튼을 클릭합니다. Cloud Shell 아이콘

Cloud Shell 세션이 시작되면 명령줄 프롬프트가 표시됩니다. 이 셸을 사용하여 gcloud 및 Cluster Toolkit 명령어를 실행합니다.

환경 변수 설정하기

Cloud Shell에서 튜토리얼의 나머지 부분에 사용할 다음 환경 변수를 설정합니다. 이러한 환경 변수는 다음 작업의 자리표시자 값을 설정합니다.

  • 예약된 H4D 인스턴스에 액세스하는 데 필요한 관련 값으로 프로젝트를 구성합니다.

  • Cluster Toolkit 모듈을 저장할 Cloud Storage 버킷을 설정합니다.

예약 용량 변수

export H4D_RESERVATION_PROJECT_ID=H4D_RESERVATION_PROJECT_ID
export H4D_RESERVATION_NAME=H4D_RESERVATION_NAME
export H4D_DEPLOYMENT_NAME=H4D_DEPLOYMENT_NAME
export H4D_REGION=H4D_REGION
export H4D_ZONE=H4D_ZONE
export H4D_DEPLOYMENT_FILE_NAME=H4D_DEPLOYMENT_FILE_NAME

다음을 바꿉니다.

  • H4D_RESERVATION_PROJECT_ID: H4D 머신 유형 예약 블록이 부여된 Google Cloud프로젝트 ID입니다.
  • H4D_RESERVATION_NAME: 프로젝트에 있는 VM 예약 블록의 이름입니다. 예를 들면 h4d-highmem-exr입니다.
  • H4D_DEPLOYMENT_NAME: Slurm 클러스터 배포의 고유한 이름입니다. 예를 들면 h4d-hpc-slurm-cluster-deployment입니다.
  • H4D_REGION: 예약된 H4D 머신 예약 블록을 실행하는 리전입니다. 예를 들면 us-central1입니다.
  • H4D_ZONE: 예약된 머신을 포함하는 영역입니다. 이 문자열에는 리전과 영역이 모두 포함되어야 합니다. 예를 들면 us-central1-a입니다.
  • H4D_DEPLOYMENT_FILE_NAME: Slurm 청사진 YAML 파일의 고유한 이름입니다. 이 튜토리얼을 두 번 이상 실행하는 경우 매번 고유한 배포 이름을 선택하세요.

스토리지 용량 변수

Cloud Storage 버킷의 환경 변수를 만듭니다.

Cluster Toolkit은 청사진을 사용하여 VM 클러스터를 정의하고 배포합니다. 청사진은 Cloud 인프라를 프로비저닝하는 하나 이상의 Terraform 모듈을 정의합니다. 이 버킷은 이러한 청사진을 저장하는 데 사용됩니다.

export GOOGLE_CLOUD_BUCKET_NAME=GOOGLE_CLOUD_BUCKET_NAME
export GOOGLE_CLOUD_BUCKET_LOCATION=GOOGLE_CLOUD_BUCKET_LOCATION

다음을 바꿉니다.

  • GOOGLE_CLOUD_BUCKET_NAME: 버킷 이름 지정 요구사항을 충족하는 Cloud Storage 버킷에 사용할 이름입니다.
  • GOOGLE_CLOUD_BUCKET_LOCATION: 버킷이 호스팅될 원하는 Google Cloud리전입니다. 예를 들면 us-central1입니다.

예약된 H4D 용량 블록이 있는 프로젝트로 전환

다음 명령어를 실행하여 H4D 인스턴스에 대해 승인된 예약 블록이 있는 Google Cloud프로젝트에 있는지 확인합니다.

gcloud config set project ${H4D_RESERVATION_PROJECT_ID}

Cloud Storage 버킷 만들기

Terraform 모듈을 저장할 버킷을 만듭니다. Cloud Shell에서 환경 변수를 사용하여 다음 명령어를 실행합니다.

Terraform을 사용할 때는 버전이 사용 설정된 파일에 상태를 원격으로 저장하는 것이 좋습니다. Google Cloud에서 버전 관리가 사용 설정된 Cloud Storage 버킷을 만들 수 있습니다.

gcloud storage buckets create gs://${GOOGLE_CLOUD_BUCKET_NAME} \
    --project=${H4D_RESERVATION_PROJECT_ID} \
    --default-storage-class=STANDARD \
    --location=${GOOGLE_CLOUD_BUCKET_LOCATION} \
    --uniform-bucket-level-access

gcloud storage buckets update gs://${GOOGLE_CLOUD_BUCKET_NAME} --versioning

Cluster Toolkit 설정

Google Cloud 프로젝트에서 Slurm 클러스터를 만들려면 Cluster Toolkit을 사용하여 클러스터 배포 및 프로비저닝을 처리하면 됩니다. Cluster Toolkit은Google Cloud에 워크로드를 배포하는 프로세스를 간소화하기 위해 Google Cloud 에서 제공하는 오픈소스 소프트웨어입니다.

다음 단계에 따라 Cluster Toolkit을 설정합니다.

Cluster Toolkit GitHub 저장소 클론

  1. Cloud Shell에서 GitHub 저장소를 클론합니다.

    git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
  2. 기본 작업 디렉터리로 이동합니다.

    cd cluster-toolkit/

Cluster Toolkit 바이너리 빌드

  1. Cloud Shell에서 다음 명령어를 실행하여 소스에서 Cluster Toolkit 바이너리를 빌드합니다.

    make
  2. 다음 명령어를 실행하여 빌드를 확인합니다.

    H4D 인스턴스를 사용하는 HPC 최적화 Slurm 클러스터를 배포하려면 Cluster Toolkit 버전 v1.47.0 이상을 사용해야 합니다.

    ./gcluster --version

    바이너리를 빌드한 후에는 클러스터를 배포하여 작업 또는 워크로드를 실행할 수 있습니다.

배포 파일 만들기

  1. Cluster Toolkit 디렉터리에서 Slurm 배포 YAML 파일을 만듭니다.

    nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
    
  2. 다음 콘텐츠를 YAML 파일에 붙여넣습니다.

    ---
    terraform_backend_defaults:
      type: gcs
      configuration:
        bucket: GOOGLE_CLOUD_BUCKET_NAME
    
    vars:
      deployment_name: H4D_DEPLOYMENT_FILE_NAME
      project_id: H4D_RESERVATION_PROJECT_ID
      region: H4D_REGION
      zone: H4D_ZONE
      
      
    
  3. 파일을 저장하고 종료하려면 Ctrl+O > Enter > Ctrl+X를 누릅니다.

Slurm 클러스터 프로비저닝

Slurm 클러스터를 프로비저닝하려면 다음 배포 명령어를 실행합니다. 이 명령어는 H4D Cluster Toolkit 청사진을 사용하여 Slurm 클러스터를 프로비저닝합니다.

Cloud Shell에서 클러스터 만들기를 시작합니다.

./gcluster deploy -d ${H4D_DEPLOYMENT_FILE_NAME}.yaml examples/hpc-slurm-h4d.yaml --auto-approve

클러스터에 연결

배포 후 Google Cloud 콘솔에 연결하여 클러스터를 확인합니다.

  1. Google Cloud 콘솔에서 Compute Engine > VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. example-deployment-login-123과 같은 이름이 있을 수 있는 로그인 노드를 찾습니다.

  3. SSH를 클릭하여 연결합니다.

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

Slurm 클러스터 삭제

더 이상 필요하지 않은 리소스는 정리하는 것이 좋습니다.

삭제 보호 사용 중지

인스턴스를 업데이트할 때 삭제 보호를 중지하려면 다음과 유사한 명령어를 사용합니다.

  gcloud filestore instances update INSTANCE_NAME \
      --no-deletion-protection

다음과 같이 바꿉니다.

  • INSTANCE_NAME: 수정하려는 인스턴스의 이름입니다. 예를 들면 my-genomics-instance입니다.

INSTANCE_NAME을 찾으려면 gcloud filestore instances list 명령어를 실행하면 됩니다. 이 명령어는 현재 Google Cloud 프로젝트의 모든 Filestore 인스턴스(이름, 위치(영역), 등급, 용량, 상태 포함)를 나열합니다.

명령어를 실행한 후 이 튜토리얼에서 사용된 H4D 머신 유형과 일치하는 Filestore 인스턴스를 찾습니다.

Slurm 클러스터 폐기

  1. destroy 명령어를 실행하기 전에 Cluster Toolkit 디렉터리의 루트로 이동합니다. 기본적으로 DEPLOYMENT_FOLDER는 Cluster Toolkit 디렉터리의 루트에 있습니다.

  2. 클러스터를 폐기하려면 다음을 실행합니다.

    ./gcluster destroy ${H4D_DEPLOYMENT_FILE_NAME} --auto-approve
    

클러스터 폐기가 완료되면 다음과 유사한 메시지가 표시됩니다.

Destroy complete! Resources: xx destroyed.

스토리지 버킷 삭제

이전 명령어가 오류 없이 종료되었는지 확인한 후 Cloud Storage 버킷을 삭제합니다.

gcloud storage buckets delete gs://${GOOGLE_CLOUD_BUCKET_NAME}

문제 해결

  • 오류: 스토리지가 남아 있지 않아 Cloud Shell에서 클러스터를 프로비저닝할 수 없습니다.

    Cloud Shell을 자주 사용하는 사용자이고 스토리지 공간이 부족한 경우 이 오류가 표시될 수 있습니다.

    이 문제를 해결하려면 Cloud Shell 사용 중지 또는 재설정을 참고하세요.

  • 오류: 클러스터 또는 청사진 이름이 이미 있습니다.

    이 튜토리얼에서 이미 사용된 파일 이름과 정확히 같은 이름을 사용한 프로젝트를 사용하는 경우 이 오류가 표시될 수 있습니다. 예를 들어 조직의 다른 사용자가 이 튜토리얼을 처음부터 끝까지 진행한 경우입니다.

    이 문제를 해결하려면 튜토리얼을 다시 실행하고 배포 파일의 고유한 이름을 선택한 다음 새 배포 파일로 Slurm 클러스터 프로비저닝 명령어를 다시 실행합니다.

다음 단계