AWS Batch FAQ

일반 정보

AWS Batch는 개발자, 과학자 및 엔지니어가 AWS에서 수많은 배치 컴퓨팅 작업을 효율적으로 손쉽게 실행할 수 있게 해주는 배치 관리 기능 세트입니다. AWS Batch는 제출된 배치 작업의 볼륨 및 특정 리소스 요구 사항에 따라 최적의 수량 및 컴퓨팅 리소스의 유형(예: CPU 또는 메모리 최적화 컴퓨터 리소스)을 동적으로 프로비저닝합니다. AWS Batch에서는 작업 실행을 위한 배치 컴퓨팅 소프트웨어나 서버 클러스터를 설치하여 관리할 필요가 없으므로 결과 분석과 문제 해결에 집중할 수 있습니다. AWS Batch는 Amazon ECS, Amazon EKSAWS Fargate를 사용하여 배치 컴퓨팅 워크로드를 계획, 예약 및 실행하며 스팟 인스턴스를 활용할 수 있는 옵션을 제공합니다.

배치 컴퓨팅은 수동 개입 없이 하나 이상의 컴퓨터에서 일련의 프로그램("작업")을 실행하는 것을 말합니다. 입력 파라미터는 스크립트, 명령줄 인수, 제어 파일 또는 작업 제어 언어를 통해 사전에 정의됩니다. 해당 배치 작업은 이전 작업의 완료 또는 특정 입력의 가용성에 따라 달라질 수 있으므로 여러 작업의 순서를 정하고 일정을 예약하는 것이 중요하며 대화형 처리와 호환되지 않습니다.

  • 배치 컴퓨팅은 작업을 처리하는 시점을 더 큰 용량 또는 더 저렴한 용량을 사용할 수 있는 기간으로 옮길 수 있습니다.
  • 이를 통해 빈번한 수동 개임과 감독이 필요한 유휴 컴퓨팅 리소스를 방지할 수 있습니다.
  • 또한, 컴퓨팅 리소스의 사용률이 높아짐에 따라 효율성이 증가합니다.
  • 작업의 우선순위를 지정할 수 있으므로 비즈니스 목표에 맞춰 리소스를 사용할 수 있습니다.

AWS Batch를 통해 ECS 인프라에서 완전히 추상화된 컴퓨팅 프로비저닝을 처리하고자 한다면 Fargate에서 작업을 실행해야 합니다. 특정 인스턴스 구성(특정 프로세서, GPU 또는 아키텍처)에 액세스해야 하거나 대규모 워크로드에 액세스해야 할 때는 ECS에서 작업을 실행해야 합니다. Kubernetes를 컨테이너 오케스트레이션 기술로 선택하지 않은 경우 Batch와 EKS의 통합을 사용하여 배치 워크로드를 표준화할 수 있습니다.

사용 사례에 따라 작업의 초기 스케일 아웃 시에는 Fargate 작업이 더 빨리 시작됩니다. EC2 인스턴스 또는 포드가 시작될 때까지 기다릴 필요가 없기 때문입니다. 그러나 워크로드가 더 큰 경우에는 EKS 또는 ECS 인스턴스가 더 빠를 수 있습니다. Batch가 인스턴스와 컨테이너 이미지를 재사용하여 후속 작업을 실행하기 때문입니다.

AWS Batch가 EC2 인프라에서 완전히 추상화된 컴퓨팅 프로비저닝을 처리하도록 하고자 할 때 Fargate에서 작업을 실행해야 합니다. 특정 인스턴스 구성(특정 프로세서, GPU 또는 아키텍처)에 액세스해야 하거나 대규모 워크로드에 액세스해야 할 때는 EC2에서 작업을 실행해야 합니다.

사용 사례에 따라, EC2 또는 Fargate 사용 시 작업이 더 빨리 시작될 수 있습니다. Fargate 작업은 업무의 초기 스케일 아웃의 경우 더 빨리 시작됩니다. EC2 인스턴스가 시작될 때까지 기다릴 필요가 없기 때문입니다. 그러나 워크로드가 더 큰 경우에는 EC2 인스턴스가 더 빠를 수 있습니다. Batch가 인스턴스와 컨테이너 이미지를 재사용하여 후속 작업을 실행하기 때문입니다.

예. Fargate CE가 해당 CE에서 현재 실행 중인 모든 작업의 총 vCPU 양인 최대 vCPU를 갖도록 설정할 수 있습니다. vCPU 수가 CE의 최대 vCPU에 도달하면 Batch가 대기열에 연결된 순서대로(있는 경우) 다음 Fargate CE에서 작업 예약을 시작합니다. 이는 예를 들어, Fargate CE를 최소 비즈니스 요구 사항으로 설정한 후, Fargate Spot에서 나머지 워크로드를 실행하려는 경우에 유용합니다.

Fargate Spot CE를 먼저 설정한 후 Fargate CE를 설정할 때, Batch는 작업에서 사용되는 vCPU가 해당 CE의 최대 vCPU보다 큰 경우에만 Fargate로 넘깁니다. Fargate Spot이 회수되는 경우, 최대 vCPU가 충족되지 않으며 Batch는 작업을 실행하기 위해 후속 CE의 Fargate 리소스를 요청하지 않습니다.

AWS Batch 작업 대기열을 Fargate/Fargate Spot CE 및 EC2 또는 Spot CE에 연결할 수는 없습니다.

AWS Batch를 사용해야 하는 이유

AWS Batch는 작업 실행과 컴퓨팅 리소스 관리를 처리하므로 사용자는 인프라를 설정하고 관리하는 대신 애플리케이션 개발이나 결과 분석에 집중할 수 있습니다. 배치 워크로드를 AWS에서 실행하거나 AWS로의 이전을 고려하고 있다면 AWS Batch를 사용해야 합니다.

AWS Batch는 여러 작업을 병렬로 실행하여 확장하는 배치 컴퓨팅과 애플리케이션에 최적화되어 있습니다. 딥 러닝, 게놈 분석, 금융 위험 모델, Monte Carlo 시뮬레이션, 애니메이션 렌더링, 미디어 트랜스코딩, 이미지 처리 및 엔지니어링 시뮬레이션은 모두 배치 컴퓨팅 애플리케이션의 좋은 예입니다.

다중 컨테이너 작업

AWS Batch 워크로드를 논리적으로 구분되는 요소 세트(예: 시뮬레이션 환경 및 테스트 중인 시스템(SUT), 기본 애플리케이션 또는 원격 측정 사이드카)로 모델링하려는 경우 다중 컨테이너 작업 기능을 사용해야 합니다. 이 기능을 사용하면 운영이 간소화되고 모범 아키텍처 사례를 따르기가 쉬워지며 프로덕션 시스템 시스템의 다중 컨테이너 아키텍처에 맞게 시뮬레이션을 조정할 수 있습니다. SUT 및 시뮬레이션 환경에 대해 별도의 컨테이너를 실행하려는 경우 또는 보조 사이드카를 추가해야 하는 경우 더 이상 모든 워크로드 요소를 모놀리식 컨테이너로 결합하고 코드가 변경될 때마다 다시 빌드할 필요가 없습니다. 결과적으로 DevOps를 간소화하고, 컨테이너를 다운로드하기에 작고 빠르게 유지하며, 작업 병렬화를 촉진할 수 있습니다.

AWS Batch는 단일 노드 정규 작업, 어레이 작업, 다중 노드 병렬(MNP) 작업을 비롯한 모든 작업 유형에서 여러 컨테이너를 실행할 수 있도록 지원합니다.

Amazon ECS, Amazon EC2, AWS Fargate 및 Amazon EKS를 비롯한 모든 AWS Batch 컴퓨팅 환경에서 다중 컨테이너 작업을 실행할 수 있습니다.

기능

AWS Batch는 컴퓨팅 환경 및 작업 대기열을 관리합니다. 따라서 사용자는 스팟 또는 온디맨드 리소스 간에 전환할 수 있는 옵션과 함께 Amazon ECS, Amazon EKSAWS Fargate를 사용하여 규모에 관계없이 수천 개의 작업을 손쉽게 실행할 수 있습니다. 배치 작업을 정의하고 대기열에 이를 제출하기만 하면 됩니다. 그러면 AWS Batch가 작업을 실행할 장소를 선택하고 필요한 경우 AWS 용량을 추가로 시작합니다. AWS Batch는 작업 진행 상황을 신중하게 모니터링하고, 용량이 더는 필요 없게 되면 AWS Batch가 이를 제거합니다. 또한, AWS Batch는 파이프라인 또는 워크플로의 일부로서 작업을 제출할 수 있는 기능을 제공하므로 작업을 제출하면서 작업 간에 존재하는 상호 종속성을 표시할 수 있습니다.

AWS Batch에서는 Docker 컨테이너로 실행될 수 있는 모든 작업을 지원합니다. 작업이 자신의 메모리 요구 사항과 vCPU 개수를 지정합니다.  

AWS Batch 컴퓨팅 리소스는 EC2 인스턴스 또는 AWS Fargate 컴퓨팅 리소스입니다.

AWS Batch 컴퓨팅 환경은 작업이 실행되는 컴퓨팅 리소스 모음입니다. AWS Batch는 AWS에서 프로비저닝하고 관리하는 관리형 컴퓨팅 환경과 고객이 관리하는 비관리형 컴퓨팅 환경이라는 두 가지 유형의 컴퓨팅 환경을 지원합니다. 비관리형 컴퓨팅 환경은 전용 호스트, 규모가 더 큰 스토리지 구성, Amazon EFS 등 특화된 리소스를 활용할 수 있는 메커니즘을 제공합니다.

작업 정의는 실행될 작업, 파라미터, 환경 변수, 컴퓨팅 요구 사항 및 작업 실행을 최적화하는 데 사용되는 기타 정보를 설명합니다. 작업 정의는 작업을 제출하기 전에 정의되고 다른 작업과 공유될 수 있습니다.

AWS Batch는 Amazon ECS를 사용하여 컨테이너식 작업을 실행하므로 ECS 에이전트가 AWS Batch 컴퓨팅 환경 내 컴퓨팅 리소스에 설치되어 있어야 합니다. ECS 에이전트는 관리형 컴퓨팅 환경에 사전에 설치됩니다.

AWS Batch 컴퓨팅 환경은 EC2 스팟 인스턴스로 구성될 수 있습니다. 관리형 컴퓨팅 환경을 생성할 때 EC2 스팟 인스턴스를 사용할 것을 지정하고 지불할 온디맨드 요금의 백분율을 제공하기만 하면 나머지는 AWS Batch가 처리합니다. 비관리형 컴퓨팅 환경도 EC2 스팟 플릿에서 시작하는 스팟 인스턴스를 비롯하여 사용자가 시작하는 스팟 인스턴스를 포함할 수 있습니다.

요금

AWS Batch에 대한 추가 비용은 없습니다. 배치 작업을 저장하고 실행하기 위해 생성한 AWS 리소스(예: EC2 인스턴스 또는 AWS Fargate)에 대한 비용만 지불하면 됩니다.

GPU 일정 설정

예. Batch를 사용하여 작업에 필요한 액셀러레이터의 수와 유형을 현재 vCPU 및 메모리 옵션과 함께 작업 정의 입력 변수로 지정할 수 있습니다. AWS Batch는 필요한 액셀러레이터를 토대로 작업에 적합하게 인스턴스의 크기를 확장하고, 적절한 컨테이너만 액셀러레이터에 액세스할 수 있도록 각 작업의 요구에 따라 액셀러레이터를 격리합니다.

Batch와 함께 액셀러레이터를 사용하면 액셀러레이터 필요성에 따라 작업을 동적으로 예약하고 프로비저닝할 수 있으며 Batch는 작업에 대해 적절한 수의 액셀러레이터가 예약되도록 합니다. Batch는 필요한 경우 EC2 가속화된 인스턴스를 확장하고, 작업이 완료되면 EC2 가속화된 인스턴스를 축소하여 사용자가 애플리케이션에 집중할 수 있도록 합니다. Batch는 EC2 스팟과의 네이티브 통합 기능을 제공합니다. 즉, 가속화된 인스턴스를 사용할 때 가속화된 작업을 통해 최대 90%의 비용 절감 효과를 얻을 수 있습니다.

현재 가속화된 P 및 G 인스턴스에서 GPU를 사용할 수 있습니다.

작업 정의에서 액셀러레이터의 수와 유형을 지정할 수 있습니다. 액셀러레이터 유형(예: GPU - 현재 유일하게 지원되는 액셀러레이터)과 작업에 필요한 유형의 수를 설명하여 액셀러레이터를 지정합니다. 지정된 액셀러레이터 유형은 컴퓨팅 환경에 지정된 인스턴스 유형 중 하나에 있어야 합니다. 예를 들어 작업에 2개의 GPU가 필요한 경우 컴퓨팅 환경에서 P 인스턴스를 지정해야 합니다.

API에서:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

vCPU 및 메모리 요구 사항과 마찬가지로 작업 제출 시 액셀러레이터의 수와 유형을 덮어쓸 수 있습니다.

현재 작업에서 Batch는 가능한 경우 가속화된 인스턴스에 대해 가속화가 필요 없는 작업을 예약하지 않을 것입니다. 이는 장기 실행 작업이 액셀러레이터를 활용하지 않으면서 가속화된 인스턴스를 차지하여 비용을 증가시키는 경우를 방지하기 위한 것입니다. 드물게 스팟 요금과 관련된 경우, 허용되는 유형이 가속화된 인스턴스의 경우, Batch가 액셀러레이터 필요성에 관계없이 가속화된 인스턴스가 작업을 실행하는 데 가장 비용이 적게 드는 방법이라고 판단할 수 있습니다.

CE에 Batch가 가속화된 인스턴스만 시작할 수 있는 작업을 제출할 경우 Batch는 액셀러레이터 필요성에 관계없이 해당 인스턴스에서 작업을 실행합니다.

이제부터는 p 유형 인스턴스가 기본적으로 ECS GPU 최적화 AMI로 시작됩니다. 이 AMI에는 GPU 기반 애플리케이션을 실행하는 데 필요한 라이브러리와 런타임이 포함되어 있습니다. CE를 만들 때 항상 필요에 따라 사용자 지정 AMI를 가리킬 수 있습니다.

시작하기

시작하려면 AWS 설명서의 시작 가이드를 따르세요.

시작하기 위해 자체 컴퓨팅 리소스를 수동으로 시작할 필요는 없습니다. AWS Batch 웹 콘솔이 첫 번째 컴퓨팅 환경과 작업 대기열을 생성하는 프로세스를 안내하므로 이를 따라 첫 번째 작업을 제출하면 됩니다. 컴퓨팅 환경 내 리소스는 추가 작업이 준비되면 확장되고 실행할 수 있는 작업 수가 감소하면 축소됩니다.