HPC 환경에서 배치 작업을 위한 테스트 환경을 Raspberry Pi 클러스터로 생성

이 기사는 Advent Calendar 2021(Raspberry Pi) 참가 기사입니다.
HPC 환경에서 배치 작업을 위한 테스트 환경을 Raspberry Pi 클러스터로 생성

일반적인 HPC(고급 컴퓨터) 환경을 사용하는 경우 여러 컴퓨터 노드에 대해 배치 작업 스크립트를 실행해야 합니다.

HPC 환경에서 실행되는 프로그램은 이른바 비즈니스 시스템과 달리 일반적으로 일괄 처리 작업이다.이때 사용하는 작업 관리 소프트웨어도 HPC 환경을 대상으로 합니다.
예를 들어 슈퍼컴퓨터'부악'은 후지통회사 Fujitsu Software Technical Computing Suite의 pjsub/pjdel/pjstat/pjcancel 명령을 사용한다.
HPC 환경 배치 프로그램은 임무 관리 소프트웨어에 따라 형식을 정합니다.작업 조작 명령의 옵션 지정은 좀 복잡합니다. 매번 지정하는 것은 매우 번거롭기 때문에, 첫머리의 케이스 스크립트 주석부에는 일반적으로 파라미터를 설명하는 방법이 있습니다.

HPC 환경에서 프로그램을 실행하려면 프로그램 주체뿐만 아니라 일괄 처리 프로그램도 기술해야 한다.
하지만 국내 슈퍼컴퓨터가 민간에 개방되면 기본적으로 유상이고 이용 가능한 컴퓨팅 자원에도 한계가 있다.
따라서 숙련된 개발자가 슈퍼컴퓨터를 사용하지 않으면 여러 번 시도하고 반복해야 하지만 슈퍼컴퓨터는 사용자에게 결코 온화한 환경(하드웨어, 소프트웨어와 지원대의 냉도)이 아니다.비즈니스 클라우드와 같은 지원도 받지 않는 경우도 있다.
이렇게 되면 각자 자신의 환경에서 어느 정도 처리가 필요하지만 여러 개의 계산 노드를 준비한 테스트를 하려면 그에 상응하는 돈이 필요하다.
그러자 최근 몇 년 새 버전이 속속 등장해 느낌이 좋지 않은 래스퍼리 피3B+(1GB 메모리)를 여러 묶음으로 묶어 슈퍼컴퓨터로 만들었다.
구체적인 제작 방법(설치 절차)은 다음과 같은 GiitHub 창고로 요약되었으니 참고하시기 바랍니다.
  • 가난뱅이
  • 빈학(pugaku: Pi Cluster for Proreetariat)은 푸오름에서 테스트를 진행하기 전에 미리 개발, 테스트를 위해 개발한 래스퍼러리 피 클러스터 환경이다. Spack 구축 베이스 환경 및 Slurm 작업 스크립트의 개발 및 테스트에 사용할 수 있습니다. 푸악은 pjusub에서 임무를 수행하는 후지통회사에서 생산한 작업 관리 소프트웨어로 관리되며, 슬럼프의 대량 스크립트는 푸악 환경과 유사하여 어느 정도 테스트에 사용할 수 있다. 하드웨어 구성 수중에 랩베리 Pi4 1대, 랩베리 Pi3B+ 3대가 있기 때문에 4를 로그인 노드로, 3B+를 계산 노드로 한다.

  • 로그인 노드/NFS 서버/NIS 마스터/Slurm 마스터/NTP 클라이언트
  • Raspberry Pi 4/2GB x 1
  • 32GB SD-Card x 1
  • AC 어댑터 x1
  • LAN 케이블 x1

  • 계산 노드/NFS 클라이언트/NIS 클라이언트/Slurm work/NTP 클라이언트
  • Raspberry Pi 3B+/1GB x 3
  • 32GB SD-Card x 3
  • AC 어댑터 x3
  • LAN 케이블 x3
  • 네트워크 구성
    랩베리 Pi3B+/4에는 와이파이와 유선LAN 두 가지 NIC가 준비돼 있어 작업 수행과 HPC 환경 내 작업에서 유선 활용 시스템 LAN을 구축했다.NIS와 NFS 등의 프로토콜도 이쪽으로 통신을 했습니다.
    또한 작업 투입과 OS와 파이썬 등의 포장 관리에서 와이파이를 통해 인터넷에 연결될 수 있도록 서비스 시스템인 LAN을 구성했다.
  • 운용 시스템(10.0.0/8)
  • 5포트 HUB를 사용한 유선 LAN 연결
  • NFS/NIS/Slurm
  • 서비스 시스템(192.168.XX.20/24)
  • 인터넷에 연결할 수 있는 와이파이 공유기와 연결
  • apt/pip/ssh/scp/ntp
  • 소프트웨어 구성
    HPC 환경이므로 모든 노드에서 동일한 OS를 사용합니다.이번에는 랩베리 피 OS Buster Lite를 사용했다.
    Raspberry PiOS는 이미 다음 버전이 있는데, 가져오기 시기의 최신 버전이 Buster이기 때문이다.
    방금 소개한 GiitHub 창고의 설치 절차는 Buster 표준에 따릅니다.
    Buster Python 3.7.x 계열이고 Bulseye는 Python 3.9입니다.x로 업데이트하는 등 간단하게 업그레이드할 수 없는 이유가 있습니다.
    로그인 노드는 NFC 서버로 사용되며 모든 노드에서 다음 디렉토리를 공유합니다.따라서 시작할 때 먼저, 정지할 때, 마지막으로 로그인 노드를 닫아야 한다.
  • /home
  • /opt/share
  • 또한 로그인 노드는 NIS 마스터 사이트의 역할도 담당합니다.종속이 없다.
    HPC 환경용 작업 관리 소프트웨어는 OSS의 Slurm Workload Manager를 사용합니다.
  • Slurm Workload Manager 공식 문서(영어)
  • 배치 작업 파일의 형식은 대상의 슈퍼컴퓨터 환경과 다를 수 있지만 HPC 작업 스케줄러는 대부분 슬럼의 작업 작업과 비슷하기 때문에 너무 휴대성이 필요하지 않습니다.아래 링크 등을 참조하여 사용하십시오.
  • 슬럼프 저가 의자
  • 운영 환경
    가장 번거로운 것은 실행 환경이다.최근 들어 OSS를 활용한 과학기술 컴퓨팅이 늘었지만, HPC 환경은 학자적 기질을 뒷받침하는 사람이 많아 부드럽게 대처하는 사람이 드물다.
    따라서 일반 사용자의 홈 디렉터리에서 OSS 바이너리를 컴파일하고 설치하는 OSS 환경을 스스로 구축해야 한다.
    OSS가 밝은 사람이라면 그렇게 고통스럽지 않을 수도 있지만 HPC 환경에서는 단독 공급업체가 제공하는 컴파일러를 많이 사용하고 병행 처리용 컴파일러의 옵션은 이른바 gcc 등에 비해 복잡하다.
    이처럼 복잡한 HPC 개별 환경에 대응하는 컴파일링과 바이너리를 제공하기 위해 최근 Spack이 많이 사용되고 있다.
  • Spack 공식 문서(일본어)
  • 기본적으로git와 Python 3이 사용할 수 있는 환경이라면 스팩은 즉시 사용할 수 있습니다.
    cd ${HOME}
    git clone https://github.com/spack/spack
    . ${HOME}/spack/share/spack/setup-env.sh
    spack compilers
    spack find
    
    각 슈퍼컴퓨터 관리자들은 때때로 고유의 창고를 제공하는데, 이를 이용하여 spack에 복잡한 옵션을 지정할 수 있다.
    하지만 창고 정비를 제대로 하는 HPC 환경은 그리 많지 않다.결국 각자 창고를 키워야 한다.
    그때는 스팩으로 쓰러뜨려야 돼.튜토리얼도 제공했지만 일본어 버전이 없어서 대충 번역했어요.스스로 창고를 세우고 싶은 사람은 우선 이 강좌를 모두 실행해야 한다.
  • Spack v0.16.2 자습서
  • 최후
    사실 나 자신도 고장을 반복하고 있는데 OSS 환경의 구축은 항상 순조롭지 못하다.
    Spack을 사용하면 appt/yum/pip의 소중함을 다시 알 수 있습니다.
    다음은 참고로 제공할 뿐입니다.
  • 부악의 사용법~ 부악에서 기계학습
  • 좋은 웹페이지 즐겨찾기