H4D 인스턴스로 RDMA 지원 HPC Slurm 클러스터 만들기
H4D 머신 시리즈는 까다로운 HPC 워크로드의 요구사항을 충족하도록 특별히 설계되었습니다. H4D는 RDMA 지원 200Gbps 네트워킹을 통해 워크로드 확장성이 개선된 인스턴스를 제공합니다. Google Cloud의 H4D 컴퓨팅 최적화 머신 유형에 대한 자세한 내용은 H4D 머신 시리즈를 참고하세요.
튜토리얼 개요
이 튜토리얼에서는 RDMA를 사용하는 H4D 머신 유형을 사용하여 HPC 최적화 Slurm 클러스터를 설정하는 단계를 설명합니다. 구체적으로는 Compute Engine 가상 머신으로 클러스터를 설정하고, 필요한 Terraform 모듈을 저장할 Cloud Storage 버킷을 만들고, Slurm 클러스터를 프로비저닝할 Filestore 인스턴스를 설정합니다. 이 튜토리얼의 단계를 완료하려면 다음 프로세스를 따르세요.
- 필요한 권한과 환경 변수를 사용하여 Google Cloud 프로젝트를 설정합니다.
- Cloud Storage 버킷을 설정합니다.
- Cluster Toolkit을 설정합니다.
- Cluster Toolkit 디렉터리로 전환합니다.
- Slurm 배포 YAML 파일을 만듭니다.
- 청사진을 사용하여 Slurm 클러스터를 프로비저닝합니다.
- Slurm 클러스터에 연결합니다.
시작하기 전에
- 각각 192개의 vCPU가 있는 두 개의 H4D 인스턴스에 대해 예약 용량 블록을 요청합니다.
Slurm 클러스터를 프로비저닝하기에 충분한 Filestore 할당량이 있는지 확인합니다. Filestore 서비스 등급이 기본 SSD인 스토리지 영역 용량이 최소 5,120GiB 필요합니다.
Filestore 할당량을 확인하려면 Google Cloud 콘솔에서 할당량 및 시스템 한도를 확인하고 테이블을 필터링하여 Filestore 리소스만 표시합니다.
- Filestore 할당량을 확인하는 방법에 관한 자세한 내용은 API별 할당량 보기를 참고하세요.
- 할당량이 충분하지 않으면 할당량 증가를 요청하세요.
Compute Engine, Filestore, Cloud Storage, Service Usage, Cloud Resource Manager 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을 실행하려면 다음 단계를 따르세요.
Google Cloud 콘솔로 이동합니다.
콘솔의 오른쪽 상단에서 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 저장소 클론
Cloud Shell에서 GitHub 저장소를 클론합니다.
git clone https://github.com/GoogleCloudPlatform/cluster-toolkit.git
기본 작업 디렉터리로 이동합니다.
cd cluster-toolkit/
Cluster Toolkit 바이너리 빌드
Cloud Shell에서 다음 명령어를 실행하여 소스에서 Cluster Toolkit 바이너리를 빌드합니다.
make
다음 명령어를 실행하여 빌드를 확인합니다.
H4D 인스턴스를 사용하는 HPC 최적화 Slurm 클러스터를 배포하려면 Cluster Toolkit 버전
v1.47.0
이상을 사용해야 합니다../gcluster --version
바이너리를 빌드한 후에는 클러스터를 배포하여 작업 또는 워크로드를 실행할 수 있습니다.
배포 파일 만들기
Cluster Toolkit 디렉터리에서 Slurm 배포 YAML 파일을 만듭니다.
nano ${H4D_DEPLOYMENT_FILE_NAME}.yaml
다음 콘텐츠를 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
파일을 저장하고 종료하려면 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 콘솔에 연결하여 클러스터를 확인합니다.
Google Cloud 콘솔에서 Compute Engine > VM 인스턴스 페이지로 이동합니다.
example-deployment-login-123
과 같은 이름이 있을 수 있는 로그인 노드를 찾습니다.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 클러스터 폐기
destroy 명령어를 실행하기 전에 Cluster Toolkit 디렉터리의 루트로 이동합니다. 기본적으로 DEPLOYMENT_FOLDER는 Cluster Toolkit 디렉터리의 루트에 있습니다.
클러스터를 폐기하려면 다음을 실행합니다.
./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 클러스터 프로비저닝 명령어를 다시 실행합니다.
다음 단계
- 고급 Slurm 작업:
- Slurm 클러스터를 재배포하는 방법 알아보기
- Slurm 클러스터에서 네트워크 성능을 테스트하는 방법 알아보기
- 호스트 이벤트를 관리하는 방법 알아보기
- VM 토폴로지 보기
- Slurm 클러스터에서 VM 모니터링
- 오작동하는 호스트 신고