동적 노드의 클러스터 스케일링 - AWS ParallelCluster

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

동적 노드의 클러스터 스케일링

ParallelCluster Slurm의 절전 플러그인을 사용하여 클러스터를 동적으로 확장하는 Slurm 의 메서드를 지원합니다. 자세한 내용은 Slurm 설명서의 클라우드 일정 가이드Slurm 절전 가이드를 참조하세요.

ParallelCluster 버전 3.8.0부터 작업 수준 재개 또는 작업 수준 조정을 기본 동적 노드 할당 전략으로 ParallelCluster 사용하여 클러스터를 확장합니다. 즉, 각 작업의 요구 사항, 작업에 할당된 노드 수, 재개해야 하는 노드를 기반으로 클러스터를 확장합니다. ParallelCluster ParallelCluster SLURM_RESUME_FILE 환경 변수에서 이 정보를 가져옵니다.

동적 노드의 확장은 EC2 인스턴스를 시작하고 시작된 Amazon EC2 인스턴스를 노드에 할당하는 Slurm 과정을 포함하는 2단계 프로세스입니다. 이 두 단계는 각각 all-or-nothing또는 최선형 로직을 사용하여 수행할 수 있습니다.

Amazon EC2 인스턴스를 시작하는 경우:

  • all-or-nothing총 대상 용량과 동일한 최소 대상을 지정하여 Amazon EC2 시작 API를 호출합니다.

  • best-effort: 최소 목표 용량이 1이고 총 목표 용량이 요청된 용량과 동일한 상태에서 Amazon EC2 API 시작을 호출합니다.

Amazon EC2 인스턴스를 노드에 할당하는 Slurm 경우:

  • all-or-nothing요청된 모든 노드에 Amazon EC2 인스턴스를 Slurm 할당할 수 있는 경우에만 Amazon EC2 인스턴스를 노드에 할당합니다.

  • best-effort: 요청된 모든 노드가 Amazon EC2 인스턴스 Slurm 용량을 지원하지 않는 경우에도 Amazon EC2 인스턴스를 노드에 할당합니다.

    위 전략의 가능한 조합은 시작 전략으로 해석됩니다. ParallelCluster

The available ParallelCluster 출시 전략 that can be set into the ScalingStrategy cluster configuration to be used with 직무 수준 규모 조정 are:

all-or-nothing스케일링:

이 전략에는 요청된 컴퓨팅 노드를 성공적으로 AWS ParallelCluster 시작하는 데 필요한 모든 인스턴스가 필요한 각 작업에 대해 Amazon EC2 시작 인스턴스 API 호출을 시작하는 것이 포함됩니다. 이렇게 하면 작업당 필요한 용량을 사용할 수 있을 때만 클러스터를 확장하여 조정 프로세스 종료 시 유휴 인스턴스가 남아 있지 않도록 할 수 있습니다.

이 전략은 각 작업 플러스의 Amazon EC2 인스턴스 시작 로직과 Amazon EC2 인스턴스를 노드에 할당하는 all-or-nothing로직을 사용합니다. all-or-nothingSlurm

이 전략은 시작 요청을 요청된 컴퓨팅 리소스당 하나씩, 각 노드를 최대 500개까지 일괄 처리하여 그룹화합니다. 여러 컴퓨팅 리소스에 걸쳐 있거나 500개 이상의 노드를 초과하는 요청의 경우 여러 배치를 ParallelCluster 순차적으로 처리합니다.

단일 리소스의 일괄 처리에 장애가 발생하면 관련 미사용 용량이 모두 종료되므로 조정 프로세스가 끝날 때 유휴 인스턴스가 남아 있지 않습니다.

제한 사항

  • 확장에 걸리는 시간은 Slurm 재개 프로그램 실행당 제출된 작업 수에 정비례합니다.

  • 조정 작업은 기본적으로 1000개 인스턴스로 설정된 RunInstances 자원 계정 한도에 따라 제한됩니다. 이 제한은 AWS의 EC2 API 제한 정책을 따릅니다. 자세한 내용은 Amazon EC2 API 제한 설명서를 참조하십시오.

  • 여러 가용 영역에 걸친 대기열에 있는 단일 인스턴스 유형의 컴퓨팅 리소스에서 작업을 제출하면 단일 가용 영역에서 모든 용량을 제공할 수 있는 경우에만 all-or-nothingEC2 시작 API 호출이 성공합니다.

  • 단일 가용 영역이 있는 대기열에 있는 여러 인스턴스 유형이 있는 컴퓨팅 리소스에서 작업을 제출하면 단일 인스턴스 유형으로 모든 용량을 제공할 수 있는 경우에만 all-or-nothingAmazon EC2 시작 API 호출이 성공합니다.

  • 여러 가용 영역에 걸친 대기열에 있는 여러 인스턴스 유형이 있는 컴퓨팅 리소스에서 작업을 제출하는 경우 all-or-nothingAmazon EC2 시작 API 호출은 지원되지 ParallelCluster 않으며 대신 최선의 조정을 수행합니다.

greedy-all-or-nothing규모 조정:

이 all-or-nothing 전략을 변형하면 여전히 작업당 필요한 용량을 사용할 수 있을 때만 클러스터를 확장하여 확장 프로세스 종료 시 유휴 인스턴스를 피할 수 있지만, 최소 목표 용량 1을 목표로 ParallelCluster 하는 Amazon EC2 시작 인스턴스 API 호출을 시작하여 요청된 용량까지 시작된 노드 수를 최대화하는 것이 포함됩니다. 이 전략에서는 모든 작업에 대해 EC2 인스턴스를 시작하기 위한 최선의 로직과 각 작업의 노드에 Amazon EC2 인스턴스를 Slurm 할당하는 all-or-nothing로직을 사용합니다.

전략 그룹은 요청 시작 요청을 요청된 컴퓨팅 리소스당 하나씩, 각 노드를 최대 500개까지 일괄 처리합니다. 여러 컴퓨팅 리소스에 걸쳐 있거나 500개 이상의 노드를 초과하는 요청의 경우 Parellelcluster는 여러 배치를 순차적으로 처리합니다.

확장 프로세스 중에 일시적인 오버스케일링을 감수하고 처리량을 극대화함으로써 확장 프로세스가 끝날 때 유휴 인스턴스가 남지 않도록 합니다.

제한 사항

  • 일시적인 오버스케일링이 가능하므로 규모 조정 완료 전에 실행 상태로 전환되는 인스턴스에는 추가 비용이 발생합니다.

  • AWS의 RunInstances 자원 계정 한도에 따라 all-or-nothing 전략과 동일한 인스턴스 한도가 적용됩니다.

최대한의 규모 조정:

이 전략은 최소 용량 1을 목표로 하고 요청된 용량을 모두 사용할 수 없는 경우 조정 프로세스 실행 후 유휴 인스턴스를 남겨두는 대신 요청된 총 용량을 달성하는 것을 목표로 하여 Amazon EC2 시작 인스턴스 API 호출을 호출합니다. 이 전략에서는 모든 작업에 대해 Amazon EC2 인스턴스를 시작하는 최선의 로직과 각 작업의 Slurm 노드에 Amazon EC2 인스턴스를 할당하는 최선 로직을 사용합니다.

이 전략은 시작 요청을 요청된 컴퓨팅 리소스당 하나씩, 각 노드를 최대 500개까지 일괄 처리하여 그룹화합니다. 여러 컴퓨팅 리소스에 걸쳐 있거나 500개 이상의 노드를 초과하는 요청의 경우 여러 배치를 ParallelCluster 순차적으로 처리합니다.

이 전략을 사용하면 여러 조정 프로세스에서 유휴 인스턴스를 유지하는 대신 여러 조정 프로세스 실행에 대해 기본 1,000개 인스턴스 한도를 훨씬 초과하여 확장할 수 있습니다.

제한 사항

  • 작업에서 요청한 모든 노드를 할당할 수 없는 경우, 조정 프로세스 종료 시 유휴 실행 인스턴스가 발생할 수 있습니다.

다음은 다양한 ParallelCluster 시작 전략을 사용하여 동적 노드 확장이 어떻게 작동하는지 보여주는 예제입니다. 동일한 유형의 총 40개 노드에 대해 각각 20개의 노드를 요청하는 두 개의 작업을 제출했지만 EC2에서 요청된 용량을 처리할 수 있는 Amazon EC2 인스턴스가 30개뿐이라고 가정해 보겠습니다.

all-or-nothing규모 조정:

  • 첫 번째 작업에서는 all-or-nothingAmazon EC2 시작 인스턴스 API가 호출되어 20개의 인스턴스를 요청합니다. 호출이 성공하면 20개의 인스턴스가 시작됩니다.

  • all-or-nothing 첫 번째 작업을 위해 시작된 인스턴스 20개를 Slurm 노드에 성공적으로 할당했습니다.

  • 또 다른 all-or-nothingAmazon EC2 시작 인스턴스 API가 호출되어 두 번째 작업에 사용할 20개의 인스턴스를 요청합니다. 다른 10개의 인스턴스를 위한 용량만 있기 때문에 호출이 성공하지 못했습니다. 지금은 인스턴스가 시작되지 않았습니다.

greedy-all-or-nothing스케일링:

  • 최선을 다해 Amazon EC2 시작 인스턴스 API를 호출하여 모든 작업에서 요청한 총 용량인 40개의 인스턴스를 요청합니다. 그 결과 30개의 인스턴스가 시작됩니다.

  • 첫 번째 작업을 위해 시작된 인스턴스 20개를 Slurm 노드에 성공적으로 all-or-nothing할당했습니다.

  • 두 번째 작업을 위해 나머지 시작된 인스턴스를 Slurm 노드에 다시 all-or-nothing할당하려고 시도하지만 작업에서 요청한 총 20개 중 사용 가능한 인스턴스가 10개뿐이므로 할당에 실패했습니다.

  • 할당되지 않은 시작 인스턴스 10개가 종료됩니다.

최선의 규모 조정:

  • 최선을 다해 Amazon EC2 시작 인스턴스 API를 호출하여 모든 작업에서 요청한 총 용량인 40개의 인스턴스를 요청합니다. 그 결과 30개의 인스턴스가 시작됩니다.

  • 첫 번째 작업을 위해 시작된 인스턴스 20개를 Slurm 노드에 최선을 다해 할당하면 성공합니다.

  • 요청된 총 용량이 20인 경우에도 나머지 10개의 시작된 인스턴스를 두 번째 작업을 위해 Slurm 노드에 최선을 다해 할당하는 데 성공했습니다. 그러나 작업이 20개 노드를 요청했고 그 중 10개 노드에만 Amazon EC2 인스턴스를 할당할 수 있었기 때문에 나중에 확장 프로세스를 호출할 때 누락된 10개의 인스턴스를 시작할 수 있을 만큼 충분한 용량을 찾거나 스케줄러가 이미 실행 중인 다른 컴퓨팅 노드에 작업을 스케줄링할 때까지 작업을 시작할 수 없고 인스턴스는 유휴 상태로 남아 있습니다.

ParallelCluster 두 가지 유형의 동적 노드 할당 전략을 사용하여 클러스터를 확장합니다.

  • 사용 가능한 요청 노드 정보를 기반으로 한 할당:
    • 모든 노드 재개 또는 노드 목록 규모 조정:

      ParallelCluster 가 ResumeProgram 실행될 때 Slurm 요청된 노드 목록 이름만을 기반으로 Slurm 클러스터를 확장합니다. 노드 이름으로만 노드에 컴퓨팅 리소스를 할당합니다. 노드 이름 목록은 여러 작업에 걸쳐 있을 수 있습니다.

    • 직무 수준 재개 또는 직무 수준 규모 조정:

      ParallelCluster 각 작업의 요구 사항, 작업에 할당된 현재 노드 수, 재개해야 하는 노드를 기반으로 클러스터를 확장합니다. ParallelCluster SLURM_RESUME_FILE환경 변수에서 이 정보를 가져옵니다.

  • Amazon EC2 출시 전략을 사용한 할당:
    • 최선의 규모 조정:

      ParallelCluster 요청된 노드를 지원하는 데 필요한 일부 인스턴스 (반드시 필요하지는 않음) 를 시작하기 위해 최소 목표 용량이 1인 Amazon EC2 시작 인스턴스 API 호출을 사용하여 클러스터를 확장합니다.

    • 규모 ll-or-nothing 조정:

      ParallelCluster 요청된 노드를 지원하는 데 필요한 모든 인스턴스가 시작된 경우에만 성공하는 Amazon EC2 시작 인스턴스 API 호출을 사용하여 클러스터를 확장합니다. 이 경우 요청된 총 용량과 동일한 최소 목표 용량을 사용하여 Amazon EC2 시작 인스턴스 API를 호출합니다.

기본적으로 는 최선의 Amazon EC2 시작 전략과 함께 노드 목록 확장을 ParallelCluster 사용하여 요청된 노드를 지원하는 데 필요한 일부 인스턴스를 시작하지만 반드시 전부는 아닙니다. 제출된 워크로드를 처리하기 위해 최대한 많은 용량을 프로비저닝하려고 합니다.

ParallelCluster 버전 3.7.0부터 전용 모드로 제출된 작업에 대해 all-or-nothingEC2 시작 전략을 통한 작업 수준 조정을 ParallelCluster 사용합니다. 단독 모드에서 작업을 제출하면 작업은 할당된 노드에 독점적으로 액세스할 수 있습니다. 자세한 내용은 Slurm 설명서의 단독을 참조하세요.

단독 모드에서 작업을 제출하려면:

  • 클러스터에 Slurm 작업을 제출할 때 단독 플래그를 전달하세요. 예를 들어 sbatch ... --exclusive입니다.

    OR

  • JobExclusiveAllocationtrue로 설정된 상태로 구성된 클러스터 대기열에 작업을 제출합니다.

단독 모드에서 작업을 제출하는 경우:

  • ParallelCluster 현재 최대 500개의 노드를 포함하도록 시작 요청을 일괄 처리하고 있습니다. 작업에서 500개 이상의 노드를 요청하는 경우 각 500개 노드 집합에 대해 all-or-nothing시작 요청을 하고 나머지 노드 집합에 대해 추가 시작 요청을 합니다. ParallelCluster

  • 노드 할당이 단일 컴퓨팅 리소스에 있는 경우 500개 노드 집합마다 all-or-nothing시작 요청을 보내고 나머지 노드 집합에 대해서는 추가 시작 요청을 합니다. ParallelCluster 시작 요청이 실패하면 모든 시작 요청에서 생성된 미사용 용량이 ParallelCluster 종료됩니다.

  • 노드 할당이 여러 컴퓨팅 리소스에 걸친 경우 각 컴퓨팅 리소스에 대해 all-or-nothing시작 요청을 ParallelCluster 해야 합니다. 이러한 요청도 일괄 처리됩니다. 컴퓨팅 리소스 중 하나에 대한 시작 요청이 실패하면 모든 컴퓨팅 리소스 시작 요청에서 생성된 미사용 용량이 ParallelCluster 종료됩니다.

all-or-nothing시작 전략에 따른 작업 수준 조정 (알려진 제한 사항 포함):

  • 여러 가용 영역에 걸친 대기열에 있는 단일 인스턴스 유형의 컴퓨팅 리소스에서 작업을 제출하면 단일 가용 영역에서 모든 용량을 제공할 수 있는 경우에만 all-or-nothingEC2 시작 API 호출이 성공합니다.

  • 단일 가용 영역이 있는 대기열에 있는 여러 인스턴스 유형이 있는 컴퓨팅 리소스에서 작업을 제출하면 단일 인스턴스 유형으로 모든 용량을 제공할 수 있는 경우에만 all-or-nothingAmazon EC2 시작 API 호출이 성공합니다.

  • 여러 가용 영역에 걸친 대기열에 있는 여러 인스턴스 유형이 있는 컴퓨팅 리소스에서 작업을 제출하는 경우 all-or-nothingAmazon EC2 시작 API 호출은 지원되지 ParallelCluster 않으며 대신 최선의 조정을 수행합니다.

AWS ParallelCluster 다음 한 가지 유형의 동적 노드 할당 전략만 사용하여 클러스터를 확장합니다.

  • 사용 가능한 요청 노드 정보를 기반으로 한 할당:

    • 모든 노드 재개 또는 노드 목록 ParallelCluster 확장: 가 실행될 때 Slurm 요청된 노드 목록 이름만을 기반으로 Slurm 클러스터를 확장합니다. ResumeProgram 노드 이름으로만 노드에 컴퓨팅 리소스를 할당합니다. 노드 이름 목록은 여러 작업에 걸쳐 있을 수 있습니다.

  • Amazon EC2 출시 전략을 사용한 할당:

    • 최대한의 ParallelCluster 확장: 최소 목표 용량을 1로 설정한 Amazon EC2 시작 인스턴스 API 호출을 사용하여 클러스터를 확장하여 요청된 노드를 지원하는 데 필요한 일부 인스턴스를 시작하지만 반드시 필요한 것은 아닙니다.

ParallelCluster 최선의 Amazon EC2 시작 전략과 함께 노드 목록 확장을 사용하여 요청된 노드를 지원하는 데 필요한 일부 인스턴스를 시작하지만 반드시 필요한 것은 아닙니다. 제출된 워크로드를 처리하기 위해 최대한 많은 용량을 프로비저닝하려고 합니다.

제한 사항

  • 확장 프로세스 종료 시 (작업에서 요청한 모든 노드를 할당할 수 없는 경우) 유휴 실행 인스턴스가 발생할 수 있습니다.