Amazon EC2에서 HPC 워크로드를 위한 EFA 및 MPI 시작하기 - Amazon Elastic Compute Cloud

Amazon EC2에서 HPC 워크로드를 위한 EFA 및 MPI 시작하기

이 자습서는 HPC 워크로드를 위한 MPI 지원 인스턴스와 EFA를 시작하는 데 도움이 됩니다.

1단계: EFA를 사용한 보안 그룹 준비

EFA에는 보안 그룹 자체 내의 모든 인바운드 및 아웃바운드 트래픽을 허용하는 보안 그룹이 필요합니다. 다음 절차에서는 자체적으로 들어오고 나가는 모든 인바운드 및 아웃바운드 트래픽을 허용하고 SSH 연결을 위해 모든 IPv4 주소의 인바운드 SSH 트래픽을 허용하는 보안 그룹을 생성합니다.

중요

이 보안 그룹은 테스트 목적으로만 사용됩니다. 프로덕션 환경에서는 컴퓨터의 IP 주소 또는 로컬 네트워크의 IP 주소 범위와 같이 연결하려는 IP 주소로부터의 트래픽만 허용하는 인바운드 SSH 규칙을 생성하는 것이 좋습니다.

다른 시나리오는 다양한 사용 사례에 대한 보안 그룹 규칙 섹션을 참조하세요.

EFA 사용 보안 그룹을 생성하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 보안 그룹(Security Groups)을 선택한 다음, 보안 그룹 생성(Create security group)을 선택합니다.

  3. 보안 그룹 생성(Create security group) 창에서 다음을 수행합니다.

    1. 보안 그룹 이름의 경우 EFA-enabled security group과 같은 보안 그룹의 고유한 이름을 입력합니다.

    2. (선택 사항) 설명에 보안 그룹에 대한 간략한 설명을 입력합니다.

    3. VPC에서는 EFA 사용 인스턴스를 시작하려는 VPC를 선택합니다.

    4. 보안 그룹 생성을 선택합니다.

  4. 생성한 보안 그룹을 선택하고 세부 정보(Details) 탭에서 보안 그룹 ID(Security group ID)를 복사합니다.

  5. 보안 그룹을 선택한 상태에서 작업(Actions), 인바운드 규칙 편집(Edit inbound rules)을 선택한 후 다음을 수행합니다.

    1. [Add another rule]을 선택합니다.

    2. 유형(Type)에서 모든 트래픽(All traffic)을 선택합니다.

    3. 소스 유형(Source type)에서 사용자 지정(Custom)을 선택하고 복사한 보안 그룹 ID를 필드에 붙여넣습니다.

    4. 규칙 추가를 선택합니다.

    5. Type(유형)에서 SSH를 선택합니다.

    6. 소스 유형(Source type)에서 어디서나 - IPv4(Anywhere - IPv4)를 선택합니다.

    7. 규칙 저장을 선택합니다.

  6. 보안 그룹을 선택한 상태에서 작업(Actions), 아웃바운드 규칙 편집(Edit outbound rules)을 선택한 후 다음을 수행합니다.

    1. [Add another rule]을 선택합니다.

    2. 유형(Type)에서 모든 트래픽(All traffic)을 선택합니다.

    3. 대상 유형(Destination type)에서 사용자 지정(Custom)을 선택하고 복사한 보안 그룹 ID를 필드에 붙여넣습니다.

    4. 규칙 저장을 선택합니다.

2단계: 임시 인스턴스 시작

EFA 소프트웨어 구성 요소를 설치하고 구성하는 데 사용할 수 있는 임시 인스턴스를 실행합니다. 이 인스턴스를 사용해 EFA를 사용한 AMI을 생성하여 EFA를 사용한 인스턴스를 실행할 수 있습니다.

임시 인스턴스를 실행합니다.
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Instances(인스턴스)를 선택한 다음에 Launch Instances(인스턴스 시작)를 선택하여 새 인스턴스 시작 마법사를 엽니다.

  3. (선택 사항)이름 및 태그(Name and tags) 섹션에서 인스턴스의 이름(예: EFA-instance)을 제공합니다. 이름은 인스턴스에 리소스 태그(Name=EFA-instance)로 할당됩니다.

  4. Application and OS Images(애플리케이션 및 OS 이미지) 섹션에서 지원되는 운영 체제 중 하나에 해당하는 AMI를 선택합니다.

  5. 인스턴스 유형(Instance type) 섹션에서 지원되는 인스턴스 유형(supported instance type)을 선택합니다.

  6. 키 페어(Key pair) 섹션에서 인스턴스에 사용할 키 페어를 선택합니다.

  7. 네트워크 설정(Network settings) 섹션에서 편집(Edit)을 선택하고 다음과 같이 수행합니다.

    1. 서브넷(Subnet)에서 인스턴스를 시작할 서브넷을 선택합니다. 서브넷을 선택하지 않으면 EFA에 대해 인스턴스를 활성화할 수 없습니다.

    2. 방화벽(보안 그룹)의 경우 기존 보안 그룹 선택(Select existing security group)을 선택한 다음에 이전 단계에서 생성한 보안 그룹을 선택합니다.

    3. 고급 네트워크 구성 섹션을 확장합니다.

      네트워크 인터페이스 1에서 네트워크 카드 인덱스 = 0, 디바이스 인덱스 = 0인터페이스 유형 = ENA 포함 EFA를 선택합니다.

      (선택 사항) p4d.24xlarge 또는 p5.48xlarge와 같은 다중 카드 인스턴스 유형을 사용하는 경우, 필요한 추가 네트워크 인터페이스마다 네트워크 인터페이스 추가를 선택하고 네트워크 카드 인덱스에서 다음 미사용 인덱스를 선택한 다음, 디바이스 인덱스 = 1인터페이스 유형 = ENA 포함 EFA 또는 EFA 전용을 선택합니다.

  8. 스토리지(Storage) 섹션에서 필요에 따라 볼륨을 구성합니다.

  9. 오른쪽의 요약(Summary) 패널에서 인스턴스 시작(Launch instance)을 선택합니다.

참고

IMDSv2를 이미 계정의 기본값으로 설정하지 않은 경우 9단계에서 생성할 AMI뿐만 아니라 임시 인스턴스에도 IMDSv2를 사용하도록 요구하는 것을 고려해 보세요. IMDSv2 구성 단계에 대한 자세한 내용은 새 인스턴스에 대한 인스턴스 메타데이터 옵션 구성 섹션을 참조하세요.

3단계: EFA 소프트웨어 설치

임시 인스턴스에서 EFA를 지원하는 데 필요한 EFA 사용 커널, EFA 드라이버, Libfabric 및 Open MPI 스택을 설치합니다.

이 단계는 EFA를 Open MPI에서 사용할지, Intel MPI에서 사용할지 또는 Open MPI 및 Intel MPI에서 사용할지에 따라 다릅니다.

EFA 소프트웨어를 설치하려면
  1. 시작한 인스턴스에 연결합니다. 자세한 내용은 SSH를 사용하여 Linux 인스턴스에 연결 단원을 참조하십시오.

  2. 모든 소프트웨어 패키지가 최신 상태로 업데이트되어 있는지 확인하기 위해, 인스턴스에서 퀵 소프트웨어 업데이트를 실행합니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.

    • Amazon Linux 2023, Amazon Linux 2, RHEL 8/9, Rocky Linux 8/9

      $ sudo yum update -y
    • Ubuntu 및 Debian

      $ sudo apt-get update && sudo apt-get upgrade -y
    • SUSE Linux Enterprise

      $ sudo zypper update -y
  3. 인스턴스를 재부팅하고 다시 연결합니다.

  4. EFA 소프트웨어 설치 파일을 다운로드합니다. 소프트웨어 설치 파일은 압축 tarball(.tar.gz) 파일로 패키징되어 있습니다. 최신 안정 버전을 다운로드하려면 다음 명령을 사용하십시오.

    $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.35.0.tar.gz

    또한 위의 명령에서 버전 번호를 latest로 바꾸면 최신 버전을 얻을 수 있습니다.

  5. (선택 사항) EFA tarball(.tar.gz) 파일의 신뢰성 및 무결성을 확인합니다.

    이 작업을 수행하여 소프트웨어 게시자의 자격 증명을 확인하고 파일이 게시된 이후 변경되거나 손상되지 않았는지 확인하는 것이 좋습니다. tarball 파일을 확인하지 않으려면 이 단계를 건너뜁니다.

    참고

    또는 MD5 또는 SHA256 체크섬을 대신 사용하여 tarball 파일을 확인하려면 체크섬을 사용하여 EFA 설치 프로그램 확인 섹션을 참조하세요.

    1. 퍼블릭 GPG 키를 다운로드하고 키 링으로 가져옵니다.

      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key

      명령에서 키 값이 반환됩니다. 다음 단계에서 필요하므로 키 값을 기록해 둡니다.

    2. GPG 키의 지문을 확인합니다. 다음 명령을 실행하고 이전 단계의 키 값을 지정합니다.

      $ gpg --fingerprint key_value

      명령에서 4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC와 동일한 지문이 반환되어야 합니다. 지문이 일치하지 않으면 EFA 설치 스크립트를 실행하지 말고 AWS Support에 문의하세요.

    3. 서명 파일을 다운로드하고 EFA tarball 파일의 서명을 확인합니다.

      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.35.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.35.0.tar.gz.sig

      다음은 출력의 예입니다.

      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC

      결과에 Good signature가 있고 이전 단계에서 반환된 지문과 지문이 일치하면 다음 단계로 진행합니다. 그렇지 않은 경우 EFA 설치 스크립트를 실행하지 말고 AWS Support에 문의하세요.

  6. 압축 .tar.gz 파일에서 파일을 추출하고 추출된 디렉터리로 이동하십시오.

    $ tar -xf aws-efa-installer-1.35.0.tar.gz && cd aws-efa-installer
  7. EFA 소프트웨어를 설치합니다. 사용 사례에 따라 다음 중 하나를 수행합니다.

    참고

    EFA는 SUSE 리눅스에서 NVIDIA GPUDirect를 지원하지 않습니다. SUSE Linux를 사용하는 경우 kmod 설치를 방지하려면 --skip-kmod 옵션을 추가로 지정해야 합니다. 기본적으로 SUSE Linux는 트리 외부 커널 모듈을 허용하지 않습니다.

    Open MPI and Intel MPI

    Open MPI 및 Intel MPI에서 EFA를 사용하려는 경우 Libfabric 및 Open MPI와 함께 EFA 소프트웨어를 설치해야 하며, 5단계: Intel MPI 설치를 완료해야 합니다.

    Libfabric 및 Open MPI와 함께 EFA 소프트웨어를 설치하려면 다음 명령을 실행합니다.

    참고

    EFA 1.30.0부터 Open MPI 4 및 Open MPI 5 모두 기본적으로 설치됩니다. 설치하려는 Open MPI 버전을 선택적으로 지정할 수 있습니다. Open MPI 4만 설치하려면 --mpi=openmpi4를 포함합니다. Open MPI 5만 설치하려면 --mpi=openmpi5를 포함합니다. 둘 다 설치하려면 --mpi 옵션을 생략합니다.

    $ sudo ./efa_installer.sh -y

    Libfabric이 /opt/amazon/efa에 설치됩니다. Open MPI 4가 /opt/amazon/openmpi에 설치됩니다. Open MPI 5가 /opt/amazon/openmpi5에 설치됩니다.

    Open MPI only

    Open MPI에서만 EFA를 사용하려는 경우 Libfabric 및 Open MPI와 함께 EFA 소프트웨어를 설치해야 하며, 5단계: Intel MPI 설치를 건너뛰어야 합니다. Libfabric 및 Open MPI와 함께 EFA 소프트웨어를 설치하려면 다음 명령을 실행합니다.

    참고

    EFA 1.30.0부터 Open MPI 4 및 Open MPI 5 모두 기본적으로 설치됩니다. 설치하려는 Open MPI 버전을 선택적으로 지정할 수 있습니다. Open MPI 4만 설치하려면 --mpi=openmpi4를 포함합니다. Open MPI 5만 설치하려면 --mpi=openmpi5를 포함합니다. 둘 다 설치하려면 --mpi 옵션을 생략합니다.

    $ sudo ./efa_installer.sh -y

    Libfabric이 /opt/amazon/efa에 설치됩니다. Open MPI 4가 /opt/amazon/openmpi에 설치됩니다. Open MPI 5가 /opt/amazon/openmpi5에 설치됩니다.

    Intel MPI only

    Intel MPI에서만 EFA를 사용하려는 경우 Libfabric 및 Open MPI 없이 EFA 소프트웨어를 설치할 수 있습니다. 이 경우 Intel MPI는 임베디드 Libfabric을 사용합니다. 이렇게 하려면 5단계: Intel MPI 설치를 완료해야 합니다.

    Libfabric 및 Open MPI없이 EFA 소프트웨어를 설치하려면 다음 명령을 실행합니다.

    $ sudo ./efa_installer.sh -y --minimal
  8. EFA 설치 프로그램에서 인스턴스를 재부팅하라는 메시지를 표시하면 인스턴스를 재부팅한 다음 인스턴스에 다시 연결합니다. 그렇지 않으면 인스턴스에서 로그아웃한 다음 다시 로그인하여 설치를 완료합니다.

4단계: (선택 사항) Open MPI 5 활성화

참고

Open MPI 5를 사용하려는 경우에만 이 단계를 수행합니다.

EFA 1.30.0부터 Open MPI 4 및 Open MPI 5 모두 기본적으로 설치됩니다. 또는 Open MPI 4 또는 Open MPI 5만 설치하도록 선택할 수도 있습니다.

3단계: EFA 소프트웨어 설치에서 Open MPI 5를 설치하기로 선택한 후 이를 사용하려는 경우 다음 단계를 수행하여 활성화해야 합니다.

Open MPI 5를 활성화하는 방법
  1. Open MPI 5를 PATH 환경 변수에 추가합니다.

    $ module load openmpi5
  2. Open MPI 5를 사용할 수 있도록 활성화했는지 확인합니다.

    $ which mpicc

    이 명령은 Open MPI 5 설치 디렉터리(/opt/amazon/openmpi5)를 반환해야 합니다.

  3. (선택 사항) 인스턴스가 시작될 때마다 Open MPI 5가 PATH 환경 변수에 추가되도록 하려면 다음을 수행합니다.

    bash shell

    module load openmpi5/home/username/.bashrc/home/username/.bash_profile에 추가합니다.

    csh and tcsh shells

    module load openmpi5/home/username/.cshrc에 추가합니다.

PATH 환경 변수에서 Open MPI 5를 제거해야 하는 경우 다음 명령을 실행하고 쉘 시작 스크립트에서 명령을 제거합니다.

$ module unload openmpi5

5단계: (선택 사항) 인텔 MPI 설치

중요

Intel MPI를 사용하려는 경우에만 이 단계를 수행하세요. Open MPI만 사용하려면 이 단계를 건너뜁니다.

Intel MPI에는 추가 설치 및 환경 변수 구성이 필요합니다.

전제 조건

다음 단계를 수행하는 사용자가 sudo 권한을 가지고 있는지 확인하세요.

Intel MPI를 설치하려면
  1. 인텔 MPI 설치 스크립트를 다운로드하려면 다음을 수행하세요.

    1. 인텔 웹 사이트를 방문합니다.

    2. 웹 페이지의 인텔 MPI 라이브러리(Intel MPI Library) 섹션에서 Intel MPI Library for Linux 오프라인(Offline) 설치 관리자에 대한 링크를 선택합니다.

  2. 이전 단계에서 다운로드한 설치 스크립트를 실행합니다.

    $ sudo bash installation_script_name.sh
  3. 설치 관리자에서 수락 및 설치(Accept & install)를 선택합니다.

  4. 인텔 개선 프로그램을 읽고 적절한 옵션을 선택한 다음 설치 시작(Begin Installation)을 선택합니다.

  5. 설치가 완료되면 [닫기(Close)]를 선택합니다.

  6. 기본적으로 인텔 MPI는 임베디드(내부) Libfabric을 사용합니다. 대신 EFA 설치 프로그램과 함께 제공되는 Libfabric을 사용하도록 인텔 MPI를 구성할 수 있습니다. 일반적으로 EFA 설치 프로그램은 인텔 MPI보다 최신 버전의 Libfabric과 함께 제공됩니다. EFA 설치 프로그램과 함께 제공되는 Libfabric이 인텔 MPI보다 성능이 더 좋은 경우도 있습니다. EFA 설치 프로그램과 함께 제공되는 Libfabric을 사용하도록 인텔 MPI를 구성하려면 셸에 따라 다음 중 하나를 수행합니다.

    bash shells

    /home/username/.bashrc/home/username/.bash_profile에 다음 명령문을 추가합니다.

    export I_MPI_OFI_LIBRARY_INTERNAL=0
    csh and tcsh shells

    /home/username/.cshrc에 다음 명령문을 추가합니다.

    setenv I_MPI_OFI_LIBRARY_INTERNAL 0
  7. 셸 스크립트에 다음 source 명령을 추가하여 설치 디렉터리에서 vars.sh 스크립트를 가져와 인스턴스가 시작될 때마다 컴파일러 환경을 설정합니다. 셸에 따라 다음 중 하나를 수행합니다.

    bash shells

    /home/username/.bashrc/home/username/.bash_profile에 다음 명령문을 추가합니다.

    source /opt/intel/oneapi/mpi/latest/env/vars.sh
    csh and tcsh shells

    /home/username/.cshrc에 다음 명령문을 추가합니다.

    source /opt/intel/oneapi/mpi/latest/env/vars.csh
  8. 기본적으로 잘못된 구성으로 인해 EFA를 사용할 수 없는 경우 인텔 MPI는 기본적으로 TCP/IP 네트워크 스택을 사용하므로 애플리케이션 성능이 느려질 수 있습니다. I_MPI_OFI_PROVIDERefa로 설정하여 이를 방지할 수 있습니다. 그러면 EFA를 사용할 수 없는 경우 인텔 MPI가 다음 오류와 함께 실패합니다.

    Abort (XXXXXX) on node 0 (rank 0 in comm 0): Fatal error in PMPI_Init: OtherMPI error, MPIR_Init_thread (XXX)........: MPID_Init (XXXX)..............: MPIDI_OFI_mpi_init_hook (XXXX): open_fabric (XXXX)............: find_provider (XXXX)..........: OFI fi_getinfo() failed (ofi_init.c:2684:find_provider:

    셸에 따라 다음 중 하나를 수행합니다.

    bash shells

    /home/username/.bashrc/home/username/.bash_profile에 다음 명령문을 추가합니다.

    export I_MPI_OFI_PROVIDER=efa
    csh and tcsh shells

    /home/username/.cshrc에 다음 명령문을 추가합니다.

    setenv I_MPI_OFI_PROVIDER efa
  9. 기본적으로 인텔 MPI는 디버깅 정보를 인쇄하지 않습니다. 디버깅 정보를 제어하기 위해 다양한 세부 사항 수준을 지정할 수 있습니다. 가능한 값(제공하는 세부 정보의 양순으로)은 0(기본값), 1, 2, 3, 4, 5입니다. 레벨 1 이상은 libfabric versionlibfabric provider를 인쇄합니다. libfabric version을 사용하여 인텔 MPI가 내부 Libfabric을 사용하고 있는지 아니면 EFA 설치 프로그램과 함께 제공되는 Libfabric을 사용하고 있는지 확인합니다. 내부 Libfabric을 사용하는 경우 버전에 impi가 접미사로 붙습니다. libfabric provider를 사용하여 인텔 MPI가 EFA를 사용하고 있는지 아니면 TCP/IP 네트워크를 사용하고 있는지 확인합니다. EFA를 사용하고 있는 경우 값은 efa입니다. TCP/IP를 사용하고 있는 경우 값은 tcp;ofi_rxm입니다.

    디버깅 정보를 활성화하려면 셸에 따라 다음 중 하나를 수행합니다.

    bash shells

    /home/username/.bashrc/home/username/.bash_profile에 다음 명령문을 추가합니다.

    export I_MPI_DEBUG=value
    csh and tcsh shells

    /home/username/.cshrc에 다음 명령문을 추가합니다.

    setenv I_MPI_DEBUG value
  10. 기본적으로 인텔 MPI는 노드 내 통신을 위해 운영 체제의 공유 메모리(shm)를 사용하고 노드 간 통신에만 Libfabric(ofi)을 사용합니다. 일반적으로 이 구성은 최상의 성능을 제공합니다. 그러나 경우에 따라 인텔 MPI shm 패브릭으로 인해 특정 애플리케이션이 무기한 중단될 수 있습니다.

    이 문제를 해결하려면 인텔 MPI가 노드 내 통신과 노드 간 통신 모두에 Libfabric을 사용하도록 합니다. 이렇게 하려면 셸에 따라 다음 중 하나를 수행합니다.

    bash shells

    /home/username/.bashrc/home/username/.bash_profile에 다음 명령문을 추가합니다.

    export I_MPI_FABRICS=ofi
    csh and tcsh shells

    /home/username/.cshrc에 다음 명령문을 추가합니다.

    setenv I_MPI_FABRICS ofi
    참고

    EFA Libfabric 제공업체는 노드 내 통신을 위해 운영 체제의 공유 메모리를 사용합니다. 즉, I_MPI_FABRICSofi로 설정하면 기본 shm:ofi 구성과 유사한 성능을 얻을 수 있습니다.

  11. 인스턴스에서 로그아웃한 후 다시 로그인합니다.

Intel MPI를 더 이상 사용하지 않으려면 셸 시작 스크립트에서 환경 변수를 제거하세요.

6단계: ptrace 보호 비활성화

HPC 애플리케이션의 성능을 향상시키기 위해 Libfabric에서는 프로세스가 동일한 인스턴스에서 실행 중일 때 프로세스 간 통신에 인스턴스의 로컬 메모리를 사용합니다.

공유 메모리 기능은 ptrace 보호에서 지원되지 않는 CMA(Cross Memory Attach)를 사용합니다. Ubuntu와 같이 기본적으로 ptrace 보호가 활성화되어 있는 Linux 배포 버전을 사용하는 경우 이를 비활성화해야 합니다. Linux 배포 버전에 ptrace 보호가 기본적으로 활성화되어 있지 않으면 이 단계를 건너뜁니다.

ptrace 보호를 비활성화하려면

다음 중 하나를 수행하세요.

  • 테스트 목적으로 ptrace 보호를 일시적으로 비활성화하려면 다음 명령을 실행하세요.

    $ sudo sysctl -w kernel.yama.ptrace_scope=0
  • ptrace 보호를 영구적으로 비활성화하려면 kernel.yama.ptrace_scope = 0/etc/sysctl.d/10-ptrace.conf에 추가하고 인스턴스를 재부팅합니다.

7단계. 설치 확인

설치 성공 확인
  1. 다음 명령을 실행하여 MPI가 성공적으로 설치되었는지 확인:

    $ which mpicc
    • Open MPI의 경우 반환되는 경로에 /opt/amazon/가 포함됩니다.

    • Intel MPI의 경우 반환되는 경로에 /opt/intel/이 포함됩니다. 예상한 출력이 나오지 않는 경우 Intel MPI vars.sh 스크립트를 소싱했는지 확인합니다.

  2. EFA 소프트웨어 구성 요소와 Libfabric 가 성공적으로 설치되었는지 확인하려면 다음 명령을 실행합니다.

    $ fi_info -p efa -t FI_EP_RDM

    이 명령은 Libfabric EFA 인스턴스에 대한 정보를 반환합니다. 다음은 해당 명령 출력을 보여주는 예제입니다.

    provider: efa fabric: EFA-fe80::94:3dff:fe89:1b70 domain: efa_0-rdm version: 2.0 type: FI_EP_RDM protocol: FI_PROTO_EFA

8단계: HPC 애플리케이션 설치

임시 인스턴스에 HPC 애플리케이션을 설치합니다. 설치 절차는 HPC 애플리케이션에 따라 다릅니다. 자세한 내용은 Amazon Linux 2 사용 설명서의 AL2 인스턴스의 소프트웨어 관리를 참조하십시오.

참고

설치 지침은 HPC 애플리케이션의 설명서를 참조하세요.

9단계: EFA 지원 AMI 생성

필수 소프트웨어 구성 요소를 설치한 뒤 AMI를 사용하여 EFA 사용 인스턴스를 재사용하고 시작합니다.

임시 인스턴스에서 AMI를 생성하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Instances(인스턴스)를 선택합니다.

  3. 생성한 임시 인스턴스를 선택하고 [작업(Actions)], [이미지(Image)], [이미지 생성(Create image)]을 선택합니다.

  4. [이미지 생성(Create image)]에서 다음을 수행합니다.

    1. [이미지 이름(Image name)]에 AMI를 설명하는 이름을 입력합니다.

    2. (선택 사항) [이미지 설명(Image description)]에 AMI의 용도에 대한 간략한 설명을 입력합니다.

    3. 이미지 생성(Create image)을 선택합니다.

  5. 탐색 창에서 AMI를 선택합니다.

  6. 목록에서 생성한 AMI를 찾습니다. 상태가 pending에서 available로 바뀔 때까지 기다린 후 다음 단계를 계속합니다.

10단계: 클러스터 배치 그룹으로 EFA 지원 인스턴스 시작

7단계에서 생성한 EFA이 지원되는 AMI를 사용한 클러스터 배치 그룹과 1단계에서 생성한 EFA를 지원하는 보안 그룹에 EFA를 사용한 인스턴스를 시작합니다.

참고
  • 클러스터 placementgroup으로 EFA 지원 인스턴스를 시작할 필요는 없습니다. 그러나 EFA가 지원되는 인스턴스를 클러스터 배치 그룹에서 실행하면 단일 가용 영역의 지연율이 낮은 그룹 인스턴스를 시작하기 때문에 권장합니다.

  • 클러스터 인스턴스를 확장할 때 용량을 사용할 수 있도록 하려면 클러스터 배치 그룹에 대한 용량 예약을 생성할 수 있습니다. 자세한 내용은 클러스터 배치 그룹에 용량 예약 생성 단원을 참조하십시오.

인스턴스 시작
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Instances(인스턴스)를 선택한 다음에 Launch Instances(인스턴스 시작)를 선택하여 새 인스턴스 시작 마법사를 엽니다.

  3. (선택 사항)이름 및 태그(Name and tags) 섹션에서 인스턴스의 이름(예: EFA-instance)을 제공합니다. 이름은 인스턴스에 리소스 태그(Name=EFA-instance)로 할당됩니다.

  4. 애플리케이션 및 OS 이미지(Application and OS Images) 섹션에서 내 AMI(My AMIs)를 선택한 다음에 이전 단계에서 생성한 AMI를 선택합니다.

  5. 인스턴스 유형(Instance type) 섹션에서 지원되는 인스턴스 유형(supported instance type)을 선택합니다.

  6. 키 페어(Key pair) 섹션에서 인스턴스에 사용할 키 페어를 선택합니다.

  7. 네트워크 설정(Network settings) 섹션에서 편집(Edit)을 선택하고 다음과 같이 수행합니다.

    1. 서브넷(Subnet)에서 인스턴스를 시작할 서브넷을 선택합니다. 서브넷을 선택하지 않으면 EFA에 대해 인스턴스를 활성화할 수 없습니다.

    2. 방화벽(보안 그룹)의 경우 기존 보안 그룹 선택(Select existing security group)을 선택한 다음에 이전 단계에서 생성한 보안 그룹을 선택합니다.

    3. 고급 네트워크 구성 섹션을 확장합니다.

      네트워크 인터페이스 1에서 네트워크 카드 인덱스 = 0, 디바이스 인덱스 = 0인터페이스 유형 = ENA 포함 EFA를 선택합니다.

      (선택 사항) p4d.24xlarge 또는 p5.48xlarge와 같은 다중 카드 인스턴스 유형을 사용하는 경우, 필요한 추가 네트워크 인터페이스마다 네트워크 인터페이스 추가를 선택하고 네트워크 카드 인덱스에서 다음 미사용 인덱스를 선택한 다음, 디바이스 인덱스 = 1인터페이스 유형 = ENA 포함 EFA 또는 EFA 전용을 선택합니다.

  8. (선택 사항) 스토리지(Storage) 섹션에서 필요에 따라 볼륨을 구성합니다.

  9. 고급 세부 정보(Advanced details) 섹션에서 배치 그룹 이름(Placement group name)의 경우 인스턴스를 시작할 클러스터 배치 그룹을 선택합니다. 새 클러스터 배치 그룹을 생성해야 하는 경우 새 배치 그룹 생성(Create new placement group)을 선택합니다.

  10. 오른쪽의 요약(Summary) 패널에서 인스턴스 개수(Number of instances)의 경우 시작하려는 EFA 사용 인스턴스 개수를 입력한 다음에 인스턴스 시작(Launch instance)을 선택합니다.

11단계: 임시 인스턴스 종료

이 단계에서는 2단계에서 시작한 인스턴스가 필요하지 않습니다. 추가 요금이 발생하지 않도록 해당 인스턴스를 종료할 수 있습니다.

임시 인스턴스 종료
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 Instances(인스턴스)를 선택합니다.

  3. 생성한 임시 인스턴스를 선택한 다음 작업, 인스턴스 상태, 인스턴스 종료(삭제)를 선택합니다.

  4. 확인 메시지가 표시되면 종료(삭제)를 선택합니다.

12단계: 암호 없는 SSH 활성화

클러스터의 모든 인스턴스에서 실행하도록 애플리케이션을 활성화하려면 리더 노드에서 멤버 노드로의 암호 없는 SSH 액세스를 사용해야 합니다. 리더 노드는 애플리케이션을 실행할 인스턴스입니다. 클러스터의 나머지 인스턴스는 멤버 노드입니다,

클러스터의 인스턴스 간에 암호 없는 SSH를 사용하려면
  1. 클러스터의 인스턴스 1개를 리더 노드로 선택하고 연결합니다.

  2. strictHostKeyChecking을 비활성화하고 리더 노드에서 ForwardAgent를 활성화합니다. 원하는 텍스트 편집기를 사용하여 ~/.ssh/config를 열고 다음을 추가합니다.

    Host * ForwardAgent yes Host * StrictHostKeyChecking no
  3. RSA 키 페어 생성:

    $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa

    키 페어는 $HOME/.ssh/ 디렉터리에 생성됩니다.

  4. 리더 노드에서 프라이빗 키의 사용 권한을 변경합니다.

    $ chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config
  5. 원하는 텍스트 편집기를 사용하여 ~/.ssh/id_rsa.pub를 열고 키를 추가합니다.

  6. 클러스터의 각 멤버 노드에 대해 다음을 수행합니다.

    1. 인스턴스에 연결합니다.

    2. 원하는 텍스트 편집기를 사용하여 ~/.ssh/authorized_keys를 열고 앞에서 복사한 퍼블릭 키를 추가합니다.

  7. 암호 없는 SSH가 예상대로 작동하는지 테스트하려면 리더 노드에 연결하고 다음 명령을 실행합니다.

    $ ssh member_node_private_ip

    키 또는 암호를 입력하라는 메시지가 표시되지 않은 상태에서 멤버 노드에 연결해야 합니다.