Pyxis를 사용하여 컨테이너화된 작업 실행 - AWS ParallelCluster

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Pyxis를 사용하여 컨테이너화된 작업 실행

SLURM에서 컨테이너화된 작업을 관리하기 위한 SPANK 플러그인인 Pyxis를 사용하여 컨테이너화된 작업을 실행할 수 있는 클러스터를 생성하는 방법을 알아봅니다. Pyxis의 컨테이너는 기존 컨테이너/OS 이미지를 권한이 없는 샌드박스로 변환하는 도구인 Enroot에서 관리합니다. 자세한 내용은 NVIDIA PyxisNVIDIA Enroot를 참조하세요.

참고
  • 이 기능은 AWS ParallelCluster v3.11.1에서 사용할 수 있습니다.

  • 이 자습서의 스크립트는 일부 파일을 이동(mv)하여 원래 위치에서 삭제합니다. 이러한 파일의 복사본을 원래 위치에 유지하려면 대신 copy(cp) 명령을 사용하도록 스크립트를 변경합니다.

를 사용하는 경우 AWS ParallelCluster 이미지 및 클러스터를 생성하거나 업데이트할 때 생성된 AWS 리소스 AWS ParallelCluster에 대해서만 비용을 지불합니다. 자세한 내용은 AWS 에서 사용하는 서비스 AWS ParallelCluster 단원을 참조하십시오.

사전 조건:

클러스터 생성

AWS ParallelCluster 3.11.1부터 모든 공식 AMIs Pyxis 및 Enroot가 사전 설치되어 있습니다. 특히 SLURM은 Pyxis 지원으로 재컴파일되고 Enroot는 시스템에 바이너리로 설치됩니다. 그러나 특정 요구 사항에 따라 구성해야 합니다. Enroot 및 Pyxis에서 사용하는 폴더는 클러스터 성능에 중요한 영향을 미칩니다. 자세한 내용은 Pyxis 설명서Enroot 설명서를 참조하세요.

편의를 위해 /opt/parallelcluster/examples/ 내에서 Pyxis, Enroot 및 SPANK 모두에 대한 샘플 구성을 찾을 수 있습니다.

제공된 샘플 구성을 사용하여 클러스터를 배포하려면 다음 자습서를 완료하세요.

샘플 구성을 사용하여 클러스터를 생성하려면

먼저 Enroot에 대한 영구 및 휘발성 디렉터리를 생성한 다음 Pyxis에 대한 런타임 디렉터리를 생성하고 마지막으로 전체 클러스터에서 Pyxis를 SPANK 플러그인으로 활성화하여 헤드 노드에 Pyxis 및 Enroot를 구성해야 합니다.

  1. 헤드 노드에서 아래 스크립트를 OnNodeConfigured 사용자 지정 작업으로 실행하여 헤드 노드에서 Pyxis 및 Enroot를 구성합니다.

    #!/bin/bash set -e echo "Executing $0" # Configure Enroot ENROOT_PERSISTENT_DIR="/var/enroot" ENROOT_VOLATILE_DIR="/run/enroot" sudo mkdir -p $ENROOT_PERSISTENT_DIR sudo chmod 1777 $ENROOT_PERSISTENT_DIR sudo mkdir -p $ENROOT_VOLATILE_DIR sudo chmod 1777 $ENROOT_VOLATILE_DIR sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf sudo chmod 0644 /etc/enroot/enroot.conf # Configure Pyxis PYXIS_RUNTIME_DIR="/run/pyxis" sudo mkdir -p $PYXIS_RUNTIME_DIR sudo chmod 1777 $PYXIS_RUNTIME_DIR sudo mkdir -p /opt/slurm/etc/plugstack.conf.d/ sudo mv /opt/parallelcluster/examples/spank/plugstack.conf /opt/slurm/etc/ sudo mv /opt/parallelcluster/examples/pyxis/pyxis.conf /opt/slurm/etc/plugstack.conf.d/ sudo -i scontrol reconfigure
  2. Pyxis 및 Enroot는 Enroot용 영구 및 휘발성 디렉터리와 Pyxis용 런타임 디렉터리를 생성하여 컴퓨팅 플릿에 구성해야 합니다. 컴퓨팅 노드에서 아래 스크립트를 OnNodeStart 사용자 지정 작업으로 실행하여 컴퓨팅 플릿에서 Pyxis 및 Enroot를 구성합니다.

    #!/bin/bash set -e echo "Executing $0" # Configure Enroot ENROOT_PERSISTENT_DIR="/var/enroot" ENROOT_VOLATILE_DIR="/run/enroot" ENROOT_CONF_DIR="/etc/enroot" sudo mkdir -p $ENROOT_PERSISTENT_DIR sudo chmod 1777 $ENROOT_PERSISTENT_DIR sudo mkdir -p $ENROOT_VOLATILE_DIR sudo chmod 1777 $ENROOT_VOLATILE_DIR sudo mkdir -p $ENROOT_CONF_DIR sudo chmod 1777 $ENROOT_CONF_DIR sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf sudo chmod 0644 /etc/enroot/enroot.conf # Configure Pyxis PYXIS_RUNTIME_DIR="/run/pyxis" sudo mkdir -p $PYXIS_RUNTIME_DIR sudo chmod 1777 $PYXIS_RUNTIME_DIR # In Ubuntu24.04 Apparmor blocks the creation of unprivileged user namespaces, # which is required by Enroot. So to run Enroot, it is required to disable this restriction. # See https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces source /etc/os-release if [ "${ID}${VERSION_ID}" == "ubuntu24.04" ]; then echo "kernel.apparmor_restrict_unprivileged_userns = 0" | sudo tee /etc/sysctl.d/99-pcluster-disable-apparmor-restrict-unprivileged-userns.conf sudo sysctl --system fi

작업 제출

이제 Pyxis가 클러스터에 구성되었으므로 sbatch and srun 명령을 사용하여 컨테이너화된 작업을 제출할 수 있습니다. 이제 컨테이너별 옵션이 풍부해집니다.

# Submitting an interactive job srun -N 2 --container-image docker://ubuntu:22.04 hostname # Submitting a batch job sbatch -N 2 --wrap='srun --container-image docker://ubuntu:22.04 hostname'