다중 노드 병렬 작업 - AWS Batch

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

다중 노드 병렬 작업

다중 노드 병렬 작업을 사용하면 여러 Amazon EC2 인스턴스에 걸쳐 단일 작업을 실행할 수 있습니다. AWS Batch 다중 노드 병렬 작업을 사용하면 Amazon EC2 리소스를 직접 시작, 구성 및 관리할 필요 없이 긴밀하게 결합된 대규모 고성능 컴퓨팅 애플리케이션과 분산 GPU 모델 학습을 실행할 수 있습니다. AWS Batch 다중 노드 병렬 작업은 IP 기반 노드 간 통신을 지원하는 모든 프레임워크와 호환됩니다. 아파치 MXnet TensorFlow, 카페2, 메시지 전달 인터페이스 (MPI) 등을 예로 들 수 있습니다.

다중 노드 병렬 작업은 단일 작업으로 제출됩니다. 하지만 작업 정의(또는 작업 제출 노드 재정의)는 작업에 생성할 노드 수와 생성할 노드 그룹을 지정합니다. 각 다중 노드 병렬 작업에는 처음에 시작되는 기본 노드가 포함됩니다. 기본 노드가 가동된 후 하위 노드가 시작됩니다. 메인 노드가 종료되는 경우에만 작업이 완료됩니다. 그러면 모든 하위 노드가 중지됩니다. 자세한 정보는 노드 그룹을 참조하세요.

다중 노드 병렬 작업 노드는 단일 테넌트입니다. 즉, 각 Amazon EC2 인스턴스에서 작업 컨테이너가 하나만 실행됩니다.

최종 작업 상태(SUCCEEDED 또는 FAILED)는 기본 노드의 최종 작업 상태에 따라 결정됩니다. 다중 노드 병렬 작업의 상태를 가져오려면 작업을 제출할 때 반환된 작업 ID를 사용하여 작업을 설명할 수 있습니다. 하위 노드에 대한 세부 정보가 필요한 경우 각 하위 노드를 개별적으로 설명해야 합니다. #N 표기법(0부터 시작)을 사용하여 노드에 주소를 지정할 수 있습니다. 예를 들어, 작업의 두 번째 노드에 대한 세부 정보에 액세스하려면 API 작업을 사용하여 aws_batch_job_id #1 를 설명하십시오. AWS Batch DescribeJobs 다중 노드 병렬 작업에 대한 started, stoppedAt, statusReasonexit 정보는 기본 노드에서 채워집니다.

작업 재시도를 지정하는 경우 메인 노드 장애로 인해 또 다른 시도가 발생합니다. 하위 노드 장애로 인해 추가 시도가 발생하지는 않습니다. 다중 노드 병렬 작업의 새로운 시도가 발생할 때마다 연결된 하위 노드의 해당 시도가 업데이트됩니다.

에서 AWS Batch다중 노드 병렬 작업을 실행하려면 애플리케이션 코드에 분산 통신에 필요한 프레임워크와 라이브러리가 포함되어 있어야 합니다.

환경 변수

런타임 시 각 노드는 모든 AWS Batch 작업이 받는 표준 환경 변수로 구성됩니다. 또한 노드는 다중 노드 병렬 작업과 관련된 다음과 같은 환경 변수로 구성됩니다.

AWS_BATCH_JOB_MAIN_NODE_INDEX

이 변수는 작업 기본 노드의 인덱스 번호로 설정됩니다. 애플리케이션 코드는 AWS_BATCH_JOB_MAIN_NODE_INDEX(을)를 개별 노드의 AWS_BATCH_JOB_NODE_INDEX(와)과 비교하여 이 노드가 기본 노드인지를 확인할 수 있습니다.

AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS

이 변수는 다중 노드 병렬 작업 하위 노드에서만 설정됩니다. 이 변수는 메인 노드에는 없습니다. 이 변수는 작업 기본 노드의 프라이빗 IPv4 주소로 설정됩니다. 하위 노드의 애플리케이션 코드는 이 주소를 사용하여 기본 노드와 통신할 수 있습니다.

AWS_BATCH_JOB_NODE_INDEX

이 변수는 노드의 노드 인덱스 번호로 설정됩니다. 노드 인덱스는 0에서 시작하며, 각 노드는 고유의 인덱스 번호를 받습니다. 예를 들면 하위가 10개 있는 다중 노드 병렬 작업의 인덱스 값은 0~9입니다.

AWS_BATCH_JOB_NUM_NODES

이 변수는 다중 노드 병렬 작업에 대해 요청한 노드 수로 설정됩니다.

노드 그룹

노드 그룹은 모두 동일한 컨테이너 속성을 공유하는 작업 노드의 동일한 그룹입니다. 각 작업에 대해 AWS Batch 최대 5개의 개별 노드 그룹을 지정하는 데 사용할 수 있습니다.

각 그룹에는 고유의 컨테이너 이미지, 명령, 환경 변수 등이 있을 수 있습니다. 예를 들어, 메인 노드용 단일 c5.xlarge 인스턴스와 다섯 개의 c5.xlarge 인스턴스 하위 노드가 필요한 작업을 제출할 수 있습니다. 이러한 개별 노드 그룹 각각은 각 작업에 대해 실행할 다른 컨테이너 이미지 또는 명령을 지정할 수 있습니다.

또는 작업의 모든 노드가 단일 노드 그룹을 사용할 수도 있습니다. 또한 애플리케이션 코드는 메인 노드 및 하위 노드와 같은 노드 역할을 구분할 수 있습니다. AWS_BATCH_JOB_MAIN_NODE_INDEX 환경 변수를 AWS_BATCH_JOB_NODE_INDEX에 대한 자체 값과 비교하여 이를 수행합니다. 단일 작업에 최대 1,000개의 노드가 있을 수 있습니다. 이는 Amazon ECS 클러스터 내 인스턴스에 대한 기본 제한입니다. 이 한도를 늘리도록 요청할 수 있습니다.

참고

현재 다중 노드 병렬 작업에 있는 모든 노드 그룹은 동일한 인스턴스 유형을 사용해야 합니다.

작업 수명 주기

다중 노드 병렬 작업을 제출하면 작업이 SUBMITTED 상태가 됩니다. 그런 다음 작업은 모든 작업 종속성이 완료될 때까지 대기합니다. 또한 작업이 RUNNABLE 상태로 전환합니다. 마지막으로, 작업을 실행하는 데 필요한 인스턴스 용량을 AWS Batch 프로비저닝하고 해당 인스턴스를 시작합니다.

각 다중 노드 병렬 작업에는 기본 노드가 포함되어 있습니다. 주 노드는 제출된 다중 노드 작업의 결과를 확인하기 위해 AWS Batch 모니터링하는 단일 하위 작업입니다. 기본 노드가 처음에 시작되고 STARTING 상태로 이동합니다. attemptDurationSeconds 파라미터에 지정된 제한 시간 값은 노드가 아닌 전체 작업에 적용됩니다.

기본 노드가 RUNNING 상태에 도달하면(노드의 컨테이너가 실행된 후) 하위 노드가 시작되고 하위 노드도 STARTING 상태로 이동합니다. 하위 노드는 임의의 순서로 나타납니다. 하위 노드가 시작되는 시간이나 순서는 보장할 수 없습니다. 작업의 모든 노드가 RUNNING 상태인지 확인하려면(노드 컨테이너가 실행된 후) 애플리케이션 코드가 AWS Batch API를 쿼리하여 기본 노드 및 하위 노드 정보를 가져올 수 있습니다. 또는 애플리케이션 코드가 모든 노드가 온라인 상태가 될 때까지 기다린 후 분산 처리 태스크를 시작할 수도 있습니다. 기본 노드의 프라이빗 IP 주소를 각 하위 노드에서 AWS_BATCH_JOB_MAIN_NODE_PRIVATE_IPV4_ADDRESS 환경 변수로 사용할 수 있습니다. 애플리케이션 코드는 이 정보를 사용하여 각 태스크 간에 데이터를 조정하고 통신할 수 있습니다.

개별 노드가 종료되면 종료 코드에 따라 SUCCEEDED 또는 FAILED(으)로 이동합니다. 기본 노드가 종료되면 작업이 완료된 것으로 간주되고 모든 하위 노드가 중지됩니다. 하위 노드가 죽으면 작업의 다른 노드에 대해서는 아무 조치도 취하지 AWS Batch 않습니다. 감소된 수의 노드로 작업을 계속하지 않으려는 경우 이러한 요인을 애플리케이션 코드에 반영해야 합니다. 이렇게 하면 작업이 종료되거나 취소됩니다.

컴퓨팅 환경 고려 사항

AWS Batch(을)를 사용하여 다중 노드 병렬 작업을 실행하도록 컴퓨팅 환경을 구성할 때 몇 가지 고려할 점이 있습니다.

  • 다중 노드 병렬 작업은 UNMANAGED 컴퓨팅 환경에서 지원되지 않습니다.

  • 다중 노드 병렬 작업을 컴퓨팅 환경에 제출하려는 경우 단일 가용 영역에서 클러스터 배치 그룹을 생성하고 이 그룹을 컴퓨팅 리소스와 연결합니다. 이렇게 하면 높은 네트워크 흐름 잠재력으로 가깝게 인접한 인스턴스를 논리적으로 그룹화할 때 다중 노드 병렬 작업이 그대로 유지됩니다. 자세한 내용을 알아보려면 Amazon EC2 사용 설명서배치 그룹을 참조하세요.

  • 스팟 인스턴스를 사용하는 컴퓨팅 환경에서는 다중 노드 병렬 작업이 지원되지 않습니다.

  • AWS Batch 다중 노드 병렬 작업은 Amazon ECS awsvpc 네트워크 모드를 사용하여 다중 노드 병렬 작업 컨테이너에 Amazon EC2 인스턴스와 동일한 네트워킹 속성을 제공합니다. 각 다중 노드 병렬 작업 컨테이너는 고유의 탄력적 네트워크 인터페이스, 기본 프라이빗 IP 주소, 내부 DNS 호스트 이름을 가져옵니다. 네트워크 인터페이스는 호스트 컴퓨팅 리소스와 동일한 VPC 서브넷에서 생성됩니다. 컴퓨팅 리소스에 적용되는 모든 보안 그룹은 네트워크 인터페이스에도 적용됩니다. 자세한 내용을 알아보려면 Amazon Elastic Container Service 개발자 안내서awsvpc 네트워크 모드와 함께 태스크 네트워킹을 참조하세요.

  • 컴퓨팅 환경에는 최대 5개의 보안 그룹을 연결할 수 있습니다.

  • awsvpc 네트워크 모드는 다중 노드 병렬 작업에 대한 탄력적 네트워크 인터페이스에 퍼블릭 IP 주소를 제공하지 않습니다. 인터넷에 액세스하려면 NAT 게이트웨이를 사용하도록 구성된 프라이빗 서브넷에서 컴퓨팅 리소스를 시작해야 합니다. 자세한 정보는 Amazon VPC 사용 설명서NAT 게이트웨이 섹션을 참조하세요. 노드 간 통신은 노드의 프라이빗 IP 주소 또는 DNS 호스트 이름을 사용해야 합니다. 퍼블릭 서브넷 내의 컴퓨팅 리소스에서 실행하는 다중 노드 병렬 작업은 아웃바운드 네트워크 액세스를 수행할 수 없습니다. 프라이빗 서브넷과 NAT 게이트웨이를 사용하여 VPC를 생성하려면 가상 사설 클라우드 생성 섹션을 참조하세요.

  • 생성하여 컴퓨팅 리소스에 연결하는 탄력적 네트워크 인터페이스는 계정에서 수동으로 분리하거나 수정할 수 없습니다. 이러한 제한 사항은 실행 중인 작업과 연결된 탄력적 네트워크 인터페이스의 우발적인 삭제를 방지하기 위한 것입니다. 태스크에 대한 탄력적 네트워크 인터페이스를 해제하려면 작업을 종료합니다.

  • 컴퓨팅 환경에는 다중 노드 병렬 작업을 지원하기에 충분한 최대 vCPU가 있어야 합니다.

  • Amazon EC2 인스턴스 할당량에는 작업을 실행하는 데 필요한 인스턴스 수가 포함됩니다. 예를 들어, 작업에 30개의 인스턴스가 필요하지만 계정이 20개의 인스턴스만 실행할 수 있는 경우 작업은 지원합니다. 그러면 작업이 그대로 RUNNABLE 상태로 유지됩니다.

  • 다중 노드 병렬 작업의 노드 그룹에 인스턴스 유형을 지정하는 경우 컴퓨팅 환경에서 해당 인스턴스 유형을 시작할 수 있어야 합니다.