AWS 기술 블로그

HPC 클러스터를 구성하는 핵심요소, AWS EC2 인스턴스 소개 1부: CAE 워크로드에 따른 EC2 인스턴스 선택 방법

엔지니어링 시뮬레이션이나 분산 트레이닝을 위해 HPC(High Performance Computing) 클러스터 환경을 구성할 경우, 가장 먼저 고려해야 할 부분은 바로 어떤 서버 사양으로 클러스터를 구성해야 하는가 입니다. 이번 블로그에서는 AWS 클라우드 환경에서 HPC 클러스터 구성 시, 시뮬레이션 워크로드에 따른 EC2 인스턴스 선택 방법에 대해 소개하고자 합니다.

AWS에서 제공하는 가상 서버, EC2 인스턴스

기존의 온프레미스(on-premises) 환경에서는 연구원들이 데이터센터내에 이미 구축된 HPC 인프라를 사용하기 때문에 워크로드에 최적화된 서버를 선택할 기회가 사실상 불가능 했습니다. 그러나 클라우드 환경에서는 기본적으로 워크로드에 최적화된 인스턴스 선택이 가능합니다.

AWS의 클라우드 환경에서는 가상 서버인 아마존 EC2 인스턴스를 이용하여 HPC 클러스터를 구성합니다. 현재 AWS에서는 약 750여개의 다양한 EC2 인스턴스를 제공하고 있기 때문에, 사용자는 원하는 거의 모든 사양의 서버를 사용할 수 있습니다. 이는 고객의 워크로드에 적합한 다양한 컴퓨팅 옵션을 선택할 수 있다는 장점을 의미하기도 하지만, 반대 급부적으로 너무나도 많은 사양의 EC2 인스턴스와 복잡한 기술 스펙으로 인해 선택이 더 어려워 질 수 있다는 것을 뜻합니다. 따라서 이번 블로그를 통해 HPC 클러스터 구성 시, 적합한 EC2 인스턴스를 찾는데 도움이 되었으면 합니다.

Amazon EC2 인스턴스 네이밍

EC2 인스턴스를 제대로 사용하기 위해서는 그림1과 같은 EC2 인스턴스 표기법에 대해 잘 이해할 필요가 있습니다. 우선 EC2 인스턴스 이름에 가장 먼저 등장하는 영문은 인스턴스 패밀리를 의미합니다. 예를 들어 그림1과 같이 ‘C’로 시작하는 인스턴스는 컴퓨팅에 특화된 인스턴스를 의미하며, CFD(Computational Fluid Dynamics)와 같이 많은 코어 수를 요구하는 시뮬레이션에 적합한 인스턴스입니다.. ‘C’로 시작하는 인스턴스 이외에도 ‘M’, ‘R’, ‘P’ 등으로 시작하는 인스턴스도 존재합니다. 다음의 링크를 방문하면 AWS에서 제공하는 EC2 인스턴스를 타입별로 확인할 수 있으며, EC2 인스턴스의 패밀리 명만으로도 EC2인스턴스의 특징을 유추하는 것이 가능합니다.

<그림 1. EC2 인스턴스 표기법>

EC2 인스턴스 패밀리 뒤에 나오는 숫자는 인스턴스의 세대(generation)를 의미합니다. 일반적으로 세대가 높을수록 최신의 EC2 인스턴스를 의미하며 가성비가 좋기 때문에, 가급적 최신 세대(7 또는 8세대)의 인스턴스 사용을 권장합니다. EC2 인스턴스 세대 뒤에 붇는 영문은 추가 기능을 의미합니다. 여기서 추가 기능이란, 그림2와 같이 크게 1) 프로세서 제조사, 2) 스토리지 및 네트워크 특화 옵션, 그리고 3) 성능 옵션의 3가지 형태로 구분할 수 있습니다. 그림1의 경우, ‘i’가 붙었기 때문에, 인텔 기반의 EC2 인스턴스라는 것을 유추할 수 있습니다. 참고로 현재 AWS에서는 x86 계열의 인텔 및 AMD 기반의 EC2 인스턴스 뿐만 아니라, AWS에서 자체 개발한 ARM 기반의 그래비톤(Graviton) 인스턴스도 제공하고 있습니다. 경우에 따라서는 한 개 이상의 추가 기능이 붙을 수도 있습니다. 예를 들어, 주로 기계 학습 추론 및 그래픽 처리용으로 사용되는 인스턴스인 ‘g4dn’ 의 경우 ‘d’와 ‘n’이라는 추가 기능이 적용되어 있습니다.

<그림 2. EC2 인스턴스의 추가 기능 옵션>

마지막으로 ‘.’ 뒤에 있는 부분은 EC2 인스턴스의 크기를 의미합니다. 쉽게 생각하면, 우리가 입고 있는 티셔츠 사이즈와 유사하다고 생각하면 됩니다. 그림3에서 볼 수 있는 것처럼 EC2 인스턴스의 크기가 늘어날 수록 vCPU, 메모리 등이 거의 2배씩 증가함을 확인할 수 있습니다. 비용 또한 사이즈가 커질수록 일반적으로 2배씩 비례하여 증가합니다. 그림3의 c5n 인스턴스의 경우 ‘n’ 이라는 고속 네트워크 속성을 가지고 있기 때문에, 최대 100Gbps의 네트워크 대역폭을 제공할 수 있는 것을 확인할 수 있습니다.

<그림 3. c5n 인스턴스 스펙>

그림3에서 vCPU란, 하이퍼스레딩(hyperthreading)된 가상의 코어를 의미하며, 일반적으로 x86 기반의 EC2 인스턴스에서는 vCPU의 개수를 2로 나누면 물리 코어의 개수를 유추할 수 있습니다. 그래비톤 인스턴스의 경우, vCPU가 물리적인 코어와 1:1로 매핑됩니다. vCPU와 물리 코어의 상관 관계에 대해 보다 정확한 확인이 필요하다면 다음의 링크를 확인하면 됩니다. 또한 그림3에서 아마존 EBS는 EC2 인스턴스와 네트워크로 연결된 일종의 하드디스크인 블록 스토리지를 의미하며, 이 스토리지 용량은 사용자가 EC2 인스턴스 생성시 임의로 설정할 수 있으며 변경 또한 가능합니다.

지금부터는 워크로드별로 AWS에서 사용할 수 있는 EC2 인스턴스 타입들에 대해 소개하도록 하겠습니다.

Tightly coupled HPC 워크로드를 위한 EC2 인스턴스

첫번째로 이야기할 워크로드는 바로 HPC의 대표적인 워크로드인 tightly coupled 워크로드 입니다. 클러스터를 구성하는 노드들이 고속의 네트워크로 연결되어 MPI(Message Passing Interface)를 이용하여 다른 노드의 메모리에 있는 데이터에 접근하는 방식입니다. CFD, FEA(Finite Element Analysis), WRF(Weather Research Forecast)와 같은 워크로드들이 대표적인 tightly coupled 워크로드 입니다. 이러한 워크로드들을 위해 AWS 클라우드에서 HPC 클러스터를 구성하기 위해서는, 우선적으로 EFA(Elastic Fabric Adaptor)가 탑재된 인스턴스들을 추천합니다. EFA가 탑재된 인스턴스들은 앞서 언급한 EC2 인스턴스 네이밍의 추가 옵션에서 보통 ‘n’ 옵션을 포함하고 있습니다. c5n, c6in, c7gn 인스턴스들이 대표적인 사례이며, 모두 ‘c’로 시작하기 때문에 CFD 워크로드에 적용 가능한 EC2 인스턴스들입니다. EFA와 관련된 자세한 내용은 다음의 블로그를 참고하시기 바랍니다. 2023년 퍼블릭 사례로 공개된 대한민국의 UAM 업체인 Plana 사례의 경우, Siemens의 STAR-CCM+를 이용한 시뮬레이션을 위하여 c5n.18xlarge 인스턴스로 HPC 클러스터를 구성하였습니다.

AWS에서는 또한 2022년 1월 Hpc6a를 시작으로 tightly coupled 워크로드를 위하여, 현재 총 4개의 HPC 전용 인스턴스를 시장에 출시하였습니다. 이러한 전용 인스턴스들은 표1에서 확인할 수 있는 것처럼, tightly coupled 워크로드에 최고의 성능을 제공하도록 설계되었습니다. 특히 성능과 비용이라는 2가지 목표를 달성하기 위하여 일반 EC2 인스턴스 대비 1) 다수의 코어, 2) 대용량 메모리, 3) EFA를 탑재하여 100Gbps 이상의 고성능의 네트워크 대역폭을 제공하고 있으며, 4) 코어당 매우 낮은 비용을 제공하고 있습니다. 이러한 HPC 전용 인스턴스들은 tightly coupled 워크로드를 지원하는데 최적화되어 있습니다.

<표 1. AWS에서 제공하는 HPC 전용 인스턴스 스펙>

HPC 전용 인스턴스에 대해 조금 더 자세히 알아보도록 하겠습니다. 우선 Hpc7g 인스턴스는 2023년 5월에 출시된 ARM 기반의 HPC 전용 인스턴스 입니다. AWS가 ARM 기반으로 자체 제작한 Graviton3E 기반의 인스턴스 입니다. 이 HPC 전용 인스턴스는 표2에서 확인 할 수 있는 것처럼 3개의 서로 다른 사이즈를 보유하고 있으며, 인스턴스 모두 128GiB라는 일정한 메모리 크기를 가지고 있습니다. 비용 또한 일반 EC2 인스턴스와는 다르게, 3개 인스턴스 모두 동일하다는 특징을 가지고 있습니다. 따라서 일반적으로 비용 절감을 위해 이러한 3개의 인스턴스 중 가장 코어수가 많은 Hpc7g.16xlarge가 선호 될 수 있으나, 오히려 적은 코어 수를 확보한 hpc7g.4xlarge 인스턴스가 코어당 월등한 메모리양을 확보할 수 있기 때문에, 3개의 인스턴스 옵션 중 가성비 측면에서 최고의 선택이 될 수 있습니다. 관련된 자세한 내용은 다음의 블로그를 참고하시기 바랍니다. 바로 대한민국의 스타트업인 Encored(OpenFOAM)와 Adro(WRF)가 Hpc7g 인스턴스를 사용하여 자사의 엔지니어링 시뮬레이션 환경을 획기적으로 개선한 대표적인 사례입니다.

<표 2. Hpc7g 인스턴스 스펙>

Hpc7g 인스턴스는 ARM 기반이기 때문에 에너지 효율적인 장점이 있으며, 가격 또한 x86 인스턴스 대비 상대적으로 매우 저렴합니다. 다수의 상용 패키지들이 x86기반의 CPU에서 동작하지만, 대표적인 상업용 CFD 패키지 솔루션인 Siemens의 STAR-CCM+, Ansys Fluent의 최신 버전의 경우, ARM 아키텍처 역시 지원하고 있습니다. Hpc7g 인스턴스와 관련된 STAR-CCM+, Fluent, LS-Dyna, OpenFOAM, GROMACS, WRF 와 같은 다양한 워크로드에 대한 벤치마크 결과가 궁금하다면 다음의 블로그를 참고하시기 바랍니다.

다음은 또다른 HPC 전용 인스턴스인 Hpc7a 인스턴스에 대해 알아보도록 하겠습니다. Hpc7a 인스턴스는 HPC 전용 인스턴스 패밀리 중 가장 늦게 출시된 최신의 HPC 전용 인스턴스 입니다. Hpc7a 인스턴스는 AMD의 최신 아키텍처인 4세대 EPYC(Genoa) 기반의 인스턴스입니다. 최대 192개의 코어를 보유하고 있으며, 코어당 메모리 비율이 최소 1:4로 구성되어 있습니다. 또한 300Gbps의 높은 네트워크 대역폭을 제공한다는 특징을 보유하고 있습니다. 이 인스턴스 또한 Hpc7g와 마찬가지로, 사이즈에 관계없이 768GiB 라는 높은 메모리 용량을 보유하고 있으며 비용 또한 동일한 특징을 가지고 있습니다.

<표 3. Hpc7a 인스턴스 스펙>

Hpc7a 인스턴스를 이용하여 STAR-CCM+, Fluent, OpenFOAM, GROMACS, WRF 와 같은 다양한 워크로드에 대한 벤치마크 결과가 궁금하다면 다음의 블로그를 참고하시기 바랍니다.

마지막으로 인텔 기반의 HPC 전용 인스턴스인 Hpc6id에 대해 알아보겠습니다. Hpc6id는 인텔의 3세대 CPU 아키텍처인 아이스 레이크(Ice Lake)기반의 아키텍처로, 표4와 같이 하나의 단일 사이즈로만 구성되어 있습니다, 이 인스턴스는 코어의 수 보다는, 메모리가 1TiB에 이를 정도로 메모리 용량에 특화된 인스턴스입니다. 코어당 메모리 비율은 무려 1:16입니다. 또한 인스턴스 이름에 ‘d’ 라는 추가 속성을 포함하고 있어, 다른 HPC 전용 인스턴스와 다르게 15.2TiB 만큼의 대용량의 로컬 블록 스토리지가 제공됩니다. 따라서 지질 탐사, FEA와 같은 구조해석 등의 대용량의 메모리 및 스크래치 스토리지가 필요한 시뮬레이션에 적합한 인스턴스라 할 수 있습니다. Hpc6id를 이용한 FEA의 대표적인 상용 패키지 솔루션인 Ansys Mechanical에 대한 벤치마크 결과는 다음의 링크에서 확인할 수 있습니다. Ansys Mechanical, LS-DYNA, Abaqus, NASTRAN, Actran 등이 Hpc6id에 적용될 수 있는 대표적인 솔버 들이라 할 수 있습니다.

<표 4. Hpc6id 인스턴스 스펙>

Loosely coupled HPC 워크로드를 위한 EC2 인스턴스

앞서 언급한 tightly coupled 아키텍처와 달리 loosely coupled 워크로드의 경우 클러스터를 구성하는 노드들이 독자적인 작업을 수행하기 때문에, 거의 대부분 노드간 고속 네트워킹을 필요로 하지 않는다는 특징이 존재합니다. 금융권에서 복잡한 금융 시나리오를 모델링하는데 많이 사용되는 몬테카를로 시뮬레이션, 반도체 설계에서 많이 사용되는 EDA(Electronic Design Automation), 헬스케어의 genomics등이 대표적인 loosely coupled 워크로드의 사례입니다. 이러한 워크로드는 단일 스레드에서의 높은 성능이 중요하기 때문에, 고대역의 네트워크 보다는 높은 클럭 스피드 및 대용량 메모리를 요구하는 경우가 많습니다. 이러한 워크로드에 사용될 수 있는 대표적인 EC2 인스턴스는 최대 4GHz 이상의 클럭 스피드를 제공하는M5zn, Z1d 등이며, 고용량의 메모리가 필요하다면 최대 1TiB의 메모리 용량을 지원하는 R7iz등의 인스턴스가 이러한 워크로드에 적용될 수 있습니다.

반도체 업계에서는 일반적으로 사용되지 않지만, 금융권 및 헬스케어 업계에서 사용되는 loosely coupled 워크로드의 또다른 특징 중 하나는 바로 고객들이 애플리케이션과 그 실행에 필요한 모든 요소를 하나로 패키징 한 컨테이너 환경에서 AWS Batch를 빈번히 사용한다는 점입니다. 쉽게 설명 드리면, 컨테이너를 이용한다는 관점에서 AWS Batch는 인프라 관점보다는 보다 개발자 친화적인 HPC 환경이라고 이해하시면 될 것 같습니다. AWS Batch 와 관련하여 보다 구체적인 정보가 필요하시다면 다음의 블로그 및 AWS Batch 공식 홈페이지를 참고하시기 바랍니다.

가속 컴퓨팅을 구현하기 위한 EC2 인스턴스

일부 HPC 워크로드의 경우, GPU와 같은 가속기가 제공하는 병렬성을 이용하여 매우 빠르게 워크로드를 처리할 수 있습니다. 표5에는 AWS에서 제공하는 GPU가 탑재된 대표적인 EC2 인스턴스들의 스펙을 제공하고 있습니다. EC2 인스턴스 표기법에서 인스턴스 명이 ‘p’ 또는 ‘g’로 시작하는 인스턴스들이 바로 GPU가 탑재된 EC2 인스턴스 입니다. ‘g’로 시작하는 EC2 인스턴스는 주로 그래픽 처리에 특화되어 있어 ‘p’로 시작하는 EC2 인스턴스 대비 상대적으로 덜 강력한 GPU가 탑재되나 대신 비용이 저렴하다는 장점이 존재합니다. 이러한 EC2 인스턴스들은 CAE(Computer Aided Engineering)로 통용되는 엔지니어링 시뮬레이션 뿐만 아니라, 머신러닝의 분산 트레이닝을 위한 HPC 클러스터 구축에도 사용될 수 있습니다.

<표 5. AWS에서 제공하는 GPU가 탑재된 대표적인 EC2 인스턴스 스펙>

이외에도 머신러닝 워크로드에 한정해서 언급한다면, 머신러닝 분산 트레이닝을 위해 HPC 클러스터를 구성할 경우, AWS에서 자체 제작한 AWS Trainium이라는 가속기 기반의 Trn1 인스턴스를 적용하는 것도 가능합니다. 최근에 전세계적인 GPU 수급 부족으로 인해 많은 기업들이 어려움을 겪고 있고, GPU 자체가 고비용이며 전력 소모가 매우 높다는 단점이 존재합니다. 따라서 GPU의 대안으로 Trn1 인스턴스를 검토해 볼 수 있습니다.

<표 6. Trn1 인스턴스 스펙>

맺음말

이번 블로그에서는 EC2 인스턴스의 네이밍과 워크로드에 따른 EC2 인스턴스 선택 방법에 대해 소개하였습니다. AWS 클라우드에서는 워크로드별로 최적의 HPC 클러스터를 구성할 수 있습니다. 여러분들이 이 블로그를 통해 워크로드에 맞는 EC2인스턴스를 선택하는데 도움이 됐으면 합니다.

마지막으로 EC2 인스턴스는 리전(region)에 따라 비용 및 가용한 EC2 인스턴스가 모두 다릅니다. 예를 들어, Hpc6a 인스턴스는 미국 오하이오 리전에는 존재하지만, 서울 리전에는 존재하지 않습니다. 따라서 사용하고자 하는 EC2 인스턴스가 내가 원하는 리전에 존재하는지 확인이 반드시 필요하며, 동일한 EC2 인스턴스의 비용이 리전마다 상이하기 때문에 이러한 부분도 비용 최적화된 HPC 클러스터 환경을 구축하기 위해서는 꼼꼼하게 챙길 필요가 있습니다.

Sangman Cho

Sangman Cho

조상만 Solutions Architect는 AWS 입사 이후, 엔터프라이즈 제조 고객의 AWS 클라우드 기반 디지털 전환을 기술적으로 도와드리는 업무를 수행하고 있습니다.