기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Pyxis를 사용하여 컨테이너화된 작업 실행
SLURM에서 컨테이너화된 작업을 관리하기 위한 SPANK 플러그인인 Pyxis를 사용하여 컨테이너화된 작업을 실행할 수 있는 클러스터를 생성하는 방법을 알아봅니다. Pyxis의 컨테이너는 기존 컨테이너/OS 이미지를 권한이 없는 샌드박스로 변환하는 도구인 Enroot에서 관리합니다. 자세한 내용은 NVIDIA Pyxis
참고
-
이 기능은 AWS ParallelCluster v3.11.1에서 사용할 수 있습니다.
-
이 자습서의 스크립트는 일부 파일을 이동(
mv
)하여 원래 위치에서 삭제합니다. 이러한 파일의 복사본을 원래 위치에 유지하려면 대신 copy(cp
) 명령을 사용하도록 스크립트를 변경합니다.
를 사용하는 경우 AWS ParallelCluster 이미지 및 클러스터를 생성하거나 업데이트할 때 생성된 AWS 리소스 AWS ParallelCluster에 대해서만 비용을 지불합니다. 자세한 내용은 AWS 에서 사용하는 서비스 AWS ParallelCluster 단원을 참조하십시오.
사전 조건:
-
AWS CLI 가 설치 및 구성되어 있습니다.
-
pcluster CLI를 실행하는 데 필요한 권한을 가진 IAM 역할.
클러스터 생성
AWS ParallelCluster 3.11.1부터 모든 공식 AMIs Pyxis 및 Enroot가 사전 설치되어 있습니다. 특히 SLURM은 Pyxis 지원으로 재컴파일되고 Enroot는 시스템에 바이너리로 설치됩니다. 그러나 특정 요구 사항에 따라 구성해야 합니다. Enroot 및 Pyxis에서 사용하는 폴더는 클러스터 성능에 중요한 영향을 미칩니다. 자세한 내용은 Pyxis 설명서
편의를 위해 /opt/parallelcluster/examples/
내에서 Pyxis, Enroot 및 SPANK 모두에 대한 샘플 구성을 찾을 수 있습니다.
제공된 샘플 구성을 사용하여 클러스터를 배포하려면 다음 자습서를 완료하세요.
샘플 구성을 사용하여 클러스터를 생성하려면
먼저 Enroot에 대한 영구 및 휘발성 디렉터리를 생성한 다음 Pyxis에 대한 런타임 디렉터리를 생성하고 마지막으로 전체 클러스터에서 Pyxis를 SPANK 플러그인으로 활성화하여 헤드 노드에 Pyxis 및 Enroot를 구성해야 합니다.
-
헤드 노드에서 아래 스크립트를 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
-
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'