Azure에서 MS-MPI 시작하기

라이언블로그3
출시된 지 약 XNUMX년 반이 지났습니다. 재사용 가능한 Azure 클라우드 서비스 HPC 팩을 설치하지 않고도 간단한 Windows MS-MPI 클러스터를 프로비저닝할 수 있습니다. Azure는 그 이후로 많은 변화를 겪었으며 클라우드에서 Windows MPI 애플리케이션을 실행하는 현재 환경이 어떤지 확인하기 위해 이 주제를 다시 검토할 가치가 있다고 생각했습니다.
첫째, 클라우드 서비스와 소위 "IaaS v1 가상 머신"은 Azure Portal에서 "클래식" 상태로 강등되었습니다. 이제 Microsoft에서는 모든 새로운 배포에 ARM(Azure Resource Manager)을 사용할 것을 권장합니다. Azure Resource Manager를 사용하면 클라이언트는 애플리케이션이나 클러스터의 일부로 생성해야 하는 VM, 부하 분산 장치, 네트워크 인터페이스 등 모든 클라우드 리소스를 정의하는 json으로 작성된 선언적 템플릿을 제출할 수 있습니다. 리소스 간에 종속성을 정의할 수 있으며 Resource Manager는 가능한 경우 리소스 배포를 병렬화할 만큼 똑똑합니다. 이를 통해 새 클러스터나 애플리케이션을 이전 모델보다 훨씬 빠르게 배포할 수 있습니다. Azure Resource Manager는 본질적으로 AWS의 CloudFormation과 동일합니다. 여기에는 템플릿에서 루프를 지정할 수 있는 것과 같은 몇 가지 추가 기능이 있습니다. 그러나 조건부 리소스 배포를 처리하는 것은 CloudFormation보다 ARM 템플릿에서 더 까다롭습니다. 두 서비스 모두 json 내에서 프로그래밍 논리를 지원하려고 시도하는 데 어려움을 겪습니다. 그러나 전반적으로 ARM 배포는 클래식 배포보다 관리하기가 훨씬 쉽습니다.
XNUMXD덴탈의 Azure 빠른 시작 템플릿 Github의 프로젝트는 ARM 템플릿을 찾는 데 유용한 리소스입니다. 애플리케이션 배포는 말 그대로 Azure에 배포 단추를 클릭하고 몇 가지 템플릿 매개 변수 값을 입력하는 것만큼 간단합니다. HPC 전면에는 편리한 HPC 팩 예 스케줄러를 프로비저닝하고 설정하는 데 사용할 수 있습니다.
그러나 원래 블로그 게시물에서 언급했듯이 MPI를 시작하고 단순히 새 MPI 클러스터를 가동하고 애플리케이션을 테스트한 다음 모든 것을 다시 종료하려는 경우 HPC 팩을 사용하는 것이 최선의 선택이 아닐 수 있습니다. . HPC 팩은 완전한 HPC 스케줄러 기능을 제공하지만 이 추가 기능은 제출 노드(Active Directory 설정, SQL Server 설치 등)에서 일부 리소스 오버헤드를 희생하면서 발생합니다. MPI 애플리케이션을 실행하기 위해 일회용 클러스터를 원하는 경우 이는 과잉일 수 있습니다.
클라우드에서 Windows MPI 애플리케이션을 실행하기 위한 또 다른 잠재적으로 가벼운 옵션은 Azure Batch 서비스입니다. 최근에, 마이크로소프트가 지원을 발표했다 VM 풀에서 다중 인스턴스 MPI 작업을 실행하기 위한 것입니다. 이는 MPI 작업 실행 자동화에 관심이 있는 사람들에게 유용한 옵션으로 보이지만 MPI 작업을 실행하기 전에 서비스에 익숙해지려면 개발자 리소스에 대한 일부 투자가 필요합니다.
1) HPC 팩의 오버헤드 없이 기본 Windows MPI 클러스터를 시작하고 2) 모든 운영 체제의 명령줄 또는 배치 스크립트에서 MPI 작업을 실행할 수 있도록 하는 Azure Resource Manager 템플릿에 대한 여지가 여전히 있다고 생각합니다. 체계.
위의 두 번째 지점에서 원래 게시물 이후 또 다른 흥미로운 발전은 Microsoft가 다음과 같이 결정했다는 것입니다. 공식적으로 SSH를 지원합니다 원격 액세스용. 그 발표 이후, 코드의 시험판 버전 GitHub에서 사용할 수 있게 되었습니다.
따라서 이러한 부분을 고려하여 우리는 두 가지 목표를 모두 달성하기 위해 간단한 ARM 템플릿을 구성하기로 결정했습니다. MS-MPI를 시작하는 사람에게는 이것이 Azure의 Windows 클러스터에서 코드를 실행하는 데 있어 더 간단한 옵션이라고 생각합니다.
기본적인 사용 예는 다음과 같습니다.

  1. Azure에 배포 버튼을 클릭하세요. Github 프로젝트. 템플릿 매개변수를 입력합니다. 여기서는 2노드 Standard_D2 클러스터가 프로비저닝됩니다.

    라이언
  2. 배포가 완료되면 클러스터에 할당된 공용 IP 주소를 기록해 둡니다.
  3. 템플릿은 모든 노드에서 SSH 및 SFTP를 활성화합니다. 클러스터의 첫 번째 VM(N0)에 애플리케이션을 업로드합니다.  여기서는 hello world 애플리케이션을 사용하고 있습니다. 이 블로그 게시물.
    $ sftp ryan@40.76.38.78 ryan@40.76.38.78의 비밀번호 : 40.76.38.78에 연결되었습니다. sftp> put MPIHelloworld.exe MPIHelloworld.exe를 C:/Users/ryan/MPIHelloworld.exe에 업로드하는 중 MPIHelloworld.exe 100% 8192 8.0KB/s 00:00 sftp> 안녕
    
  4.  SSH를 N0에 연결하고 MPI 바이너리를 공유 SMB 디렉터리(C:\shared)에 복사한 후 실행합니다. 비밀번호를 다음과 같이 입력하세요.
    -pwd 스위치에 대한 인수(아래 수정됨) -savecreds 명령줄 인수는 자격 증명을 안전하게 저장합니다.
    향후 mpiexec 호출에서 비밀번호를 지정할 필요가 없도록 컴퓨팅 노드를 사용하세요. 보다
    여기에서 지금 확인해 보세요. 자세한 내용은.

     

    $ ssh ryan@40.76.38.78 ryan@40.76.38.78의 비밀번호: Microsoft Windows [버전 6.3.9600] (c) 2013 Microsoft Corporation. 판권 소유. ryan@N0 C:\Users\ryan>copy MPIHelloworld.exe C:\shared 1개 파일이 복사되었습니다. ryan@N0 C:\Users\ryan>cd C:\shared ryan@N0 C:\shared>mpiexec -hosts 2 n0 1 n1 1 -pwd ****** -savecreds MPIHelloworld.exe 순위 1 수신 문자열 Hello World 랭크 0부터
    

그리고 그게 다야! GUI를 선호하는 경우 RDP는 MPI 클러스터의 모든 인스턴스에도 개방됩니다. 으로 향하세요 Github 프로젝트 페이지 자세한 내용은.

비슷한 게시물