기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자동 노드 복구 및 자동 재개
참고
2025년 9월 11일부터 Slurm 오케스트레이션을 사용하는 HyperPod는 이제 상태 모니터링 에이전트를 지원합니다. 이 기능을 사용하려면 UpdateClusterSoftware를 실행하고 최신 버전의 AMI로 업데이트합니다.
이 섹션에서는 Amazon SageMaker HyperPod의 두 가지 보완적인 복원력 기능인 수동 개입 없이 장애가 있는 인프라를 대체하는 자동 노드 복구와 하드웨어 장애 후 마지막 체크포인트에서 훈련 작업을 다시 시작하는 자동 재개 기능에 대해 설명합니다.
자동 노드 복구 작동 방식
클러스터 생성 또는 업데이트 중에 클러스터 관리자 사용자는 클러스터 수준의 Automatic(권장) 및 None 사이에서 노드(인스턴스) 복구 옵션을 선택할 수 있습니다. Automatic로 설정하면 SageMaker HyperPod가 자동으로 재부팅되거나 결함이 있는 노드를 교체합니다.
중요
Automatic 옵션을 설정하는 것이 좋습니다. 기본적으로 클러스터는 자동 노드 복구로 설정됩니다.
자동 노드 복구는 상태 모니터링 에이전트, 기본 상태 확인 및 심층 상태 확인에서 문제가 발견될 때 실행됩니다. None로 설정하면 상태 모니터링 에이전트는 오류가 감지될 때 인스턴스에 레이블을 지정하지만 영향을 받는 노드에서 복구 작업을 자동으로 시작하지는 않습니다. 이 옵션은 권장하지 않습니다.
Amazon SageMaker HyperPod 자동 재개 기능을 사용하여 훈련 작업 실행
이 섹션에서는 하드웨어 장애가 발생할 경우 마지막으로 저장된 체크포인트에서 훈련 작업을 자동으로 복구할 수 있는 제로 터치 복원력 인프라를 제공하는 SageMaker HyperPod 자동 재개 기능을 사용하여 훈련 작업을 실행하는 방법을 설명합니다.
자동 재개 기능을 사용하면 하드웨어 장애 또는 훈련 간 일시적인 문제로 인해 작업이 실패하는 경우 SageMaker HyperPod 자동 재개는 노드 교체 워크플로를 시작하고 결함이 있는 노드를 교체한 후 작업을 다시 시작합니다. 자동 재개를 사용하는 동안 작업이 실패할 때마다 다음 하드웨어 검사가 실행됩니다.
| 카테고리 | 유틸리티 이름 | 인스턴스 유형 호환성 | 설명 |
|---|---|---|---|
| 액셀러레이터 | NVIDIA SMI | GPU | nvidia-sminvidia-smi의 출력을 구문 분석하여 인스턴스의 상태를 확인합니다. |
| 액셀러레이터 | Neuron sysfs | Trainium | Trainium 기반 인스턴스의 경우 Neuron 드라이버가 직접 전파하는 Neuron sysfs |
| Network | EFA | GPU 및 Trainium | EFA(Elastic Fabric Adaptor) 디바이스의 진단을 돕기 위해 EFA 상태 확인기는 인스턴스 내에서 사용 가능한 모든 EFA 카드를 사용하여 일련의 연결 테스트를 실행합니다. |
참고
일반 리소스(GRES)
Slurm에서 SageMaker HyperPod 자동 재개 기능 사용
SageMaker HyperPod 자동 재개를 Slurm과 함께 사용하는 경우 salloc 또는 sbatch를 사용하여 획득한 독점 할당 내에서 작업을 실행해야 합니다. 어떤 경우든 작업을 재개할 때 모든 설정 단계가 단일 srun 명령으로 실행되도록 하려면 진입점 스크립트를 수정해야 합니다. 진입점 스크립트를 통해 작업 단계가 중지되기 전에 실행 중이었던 환경과 일치하도록 교체된 노드의 환경을 설정하는 것이 중요합니다. 다음 절차에서는 환경을 일관되게 유지하고 단일 srun 명령으로 실행하도록 진입점 스크립트를 준비하는 방법을 보여줍니다.
작은 정보
sbatch를 사용하는 경우 환경을 설정하고 단일 srun 명령을 사용하여 별도의 스크립트를 생성하여 배치 스크립트를 간단하게 유지할 수 있습니다.
-
다음 코드 예제를 사용하여 스크립트를 생성하고
train_auto_resume.sh로 저장합니다. 이 스크립트는 이전에 교체된 노드에 대해 수행된 수동 구성이 없다고 가정하여 훈련 환경 설정을 배포합니다. 이렇게 하면 환경이 노드에 구애받지 않으므로 노드를 교체할 때 작업을 재개하기 전에 노드에서 동일한 환경이 프로비저닝됩니다.참고
다음 코드 예제는 작업과 연결된 Slurm 노드 목록을 검색하는 방법을 보여줍니다. SageMaker HyperPod가 작업을 자동 재개한 후 값이 오래되었을 수 있으므로 Slurm에서 제공하는
$SLURM_JOB_NODELIST환경 변수를 사용하지 마세요. 다음 코드 예제에서는SLURM_JOB_NODELIST를 대체할 새NODE_LIST변수를 정의한 다음NODE_LIST변수에서MASTER_NODE및MASTER_ADDR변수를 설정하는 방법을 보여줍니다.#!/bin/bash # Filename: train_auto_resume.sh # Sample containerized script to launch a training job with a single srun which can be auto-resumed. # Place your training environment setup here. # Example: Install conda, docker, activate virtual env, etc. # Get the list of nodes for a given job NODE_LIST=$(scontrol show jobid=$SLURM_JOBID | \ # Show details of the SLURM job awk -F= '/NodeList=/{print $2}' | \ # Extract NodeList field grep -v Exc) # Exclude nodes marked as excluded # Determine the master node from the node list MASTER_NODE=$(scontrol show hostname $NODE_LIST | \ # Convert node list to hostnames head -n 1) # Select the first hostname as master node # Get the master node address MASTER_ADDR=$(scontrol show node=$MASTER_NODE | \ # Show node information awk -F= '/NodeAddr=/{print $2}' | \ # Extract NodeAddr awk '{print $1}') # Print the first part of NodeAddr # Torchrun command to launch the training job torchrun_cmd="torchrun --nnodes=$SLURM_NNODES \ --nproc_per_node=1 \ --node_rank=$SLURM_NODE \ --master-addr=$MASTER_ADDR \ --master_port=1234\<your_training_script.py>" # Execute the torchrun command in the 'pytorch' Conda environment, # streaming output live /opt/conda/bin/conda run --live-stream -n pytorch $torchrun_cmd작은 정보
위의 스크립트를 사용하여 작업에 대한 추가 종속성을 설치하기 위한 명령을 더 추가할 수 있습니다. 그러나 클러스터 생성 중에 사용되는 수명 주기 스크립트 세트에 종속성 설치 스크립트를 보관하는 것이 좋습니다. 공유 디렉터리에서 호스팅되는 가상 환경을 사용하는 경우 이 스크립트를 사용하여 가상 환경을 활성화할 수도 있습니다.
-
하드웨어 실패 시
srun명령을 자동으로 재시도해야 함을 나타내는--auto-resume=1플래그를 추가하여 SageMaker HyperPod 자동 재개가 활성화된 작업을 시작합니다.참고
sbatch또는salloc를 사용하여 리소스 할당을 설정한 경우 할당 내에서 여러srun명령을 실행할 수 있습니다. 장애가 발생할 경우 SageMaker HyperPod 자동 재개 기능은 플래그--auto-resume=1가 있는srun명령의 현재 작업 단계에서만 작동합니다. 즉, srun명령에서 자동 재개를 활성화하는 것은 리소스 할당 세션 내에서 시작된 다른srun명령에는 적용되지 않습니다.다음은
auto-resume이 사용 설정된srun명령의 예입니다.sbatch 사용
환경을 설정하기 위한 대부분의 로직은 이미
train_auto_resume.sh에 있으므로 배치 스크립트는 간단하고 다음 코드 예제와 유사해야 합니다. 다음 배치 스크립트가batch.sh로 저장된다고 가정합니다.#!/bin/bash #SBATCH --nodes 2 #SBATCH --exclusive srun --auto-resume=1train_auto_resume.sh다음 명령을 사용하여 앞의 배치 스크립트를 실행하세요.
sbatchbatch.shsalloc 사용
먼저 독점 할당을 획득하고
--auto-resume플래그와 진입점 스크립트로srun명령을 실행합니다.salloc -N 2 --exclusive srun --auto-resume=1train_auto_resume.sh
자동 노드 복구와 자동 재개가 함께 작동하는 방식
자동 노드 복구 시스템과 자동 재개 시스템이 모두 활성화되면 장애 처리에 대한 조정된 접근 방식을 따릅니다. HMA가 하드웨어 장애를 감지하면 작업 수준 상태에 관계없이 노드가 드레이닝 대상으로 표시됩니다. 노드 자동 복구를 활성화하면 노드에서 실행 중인 모든 작업이 종료되면 노드가 자동으로 교체됩니다. 이 시나리오에서 자동 재개가 활성화된 작업의 경우 단계에서 종료 상태가 0이 아닌 경우 자동 재개가 시작됩니다(노드가 교체되면 작업이 재개됨). 자동 재개가 활성화되지 않은 작업은 간단히 종료되므로 관리자 또는 사용자가 수동으로 다시 제출해야 합니다.
참고
자동 재개를 사용하는 경우 하드웨어 장애가 감지되면 노드가 항상 교체됩니다(재부팅되지 않음).