기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
중단된 작업 감지
분산 Ray 훈련 작업은 오류를 발생시키지 않고 중단될 수 있습니다. 단일 작업자는 자동으로 실패하고 다른 모든 작업자는 다음 집합 작업에서 차단되어 무기한 대기합니다. GPUs 모델 가중치가 로드된 상태로 할당되지만 유용한 컴퓨팅은 생성되지 않습니다. 오류 메시지나 충돌이 없기 때문에 누군가가 작업 진행 상황을 수동으로 확인할 때까지 몇 시간 동안 스톨이 감지되지 않는 경우가 많습니다.
HyperPod 중단 작업 감지는 클러스터 전반의 GPU 사용률 패턴과 작업자 활동을 지속적으로 모니터링하여 앞으로의 진행이 중단된 작업을 식별합니다. 스톨이 감지되면 시스템은 몇 시간이 아닌 몇 분 내에 스톨을 표시하므로 작업을 복구하거나 다른 작업을 위한 용량을 확보할 수 있습니다.
작동 방식
기본적으로 HyperPod의 모든 Ray Train 작업자는 코드 변경 없이 플랫폼 기본값을 사용하여 모니터링됩니다. 플랫폼은 GPU 사용률 패턴을 훈련 작업자 출력 활동과 상호 연관시켜 지연된 작업과 I/O 또는 체크포인트를 수행하고 있는 작업 중 유휴 상태인 작업을 구분합니다. 스톨이 감지되면 HyperPod Observability Grafana 대시보드 및 CloudWatch에 알림이 전송됩니다. 자세한 내용은 감지 이벤트 보기 단원을 참조하십시오.
기본 작업은 알림입니다. HyperPod는 감지 이벤트를 로깅하지만 작업을 종료하지는 않습니다. 자동 복구를 활성화하려면 다음 섹션에 설명된 대로 cancel 작업을 사용하여 사용자 지정 규칙을 구성합니다.
사용자 지정 감지 규칙을 구성하면 해당 작업에 대한 기본 감지가 대체됩니다. 사용자 지정 구성에서 지정하는 작업은 사용자 지정 규칙의 모든 감지에 적용됩니다. 기본 감지는 사용자 지정 규칙을 구성하지 않는 모든 작업에 대해 계속 실행됩니다.
사용자 지정 감지 규칙 구성
탐지 동작을 더 잘 제어하기 위해 구성 가능한 제한 시간 및 작업을 사용하여 로그 패턴 규칙을 정의할 수 있습니다. 사용자 지정 규칙을 사용하면 도메인별 지연(예: 10분 동안 새 훈련 단계 로그 줄 없음) 또는 오류 조건(예: OOM)을 감지하고 HyperPod가 중단된 작업자를 알릴지 또는 자동으로 취소할지 선택할 수 있습니다.
다음 단계에 따라 사용자 지정 감지 규칙을 활성화합니다.
-
RayCluster 매니페스트에 호스트 IP 환경 변수 추가
workerGroupSpecsRayCluster YAML의headGroupSpec및 모두에 다음 환경 변수를 추가합니다. 이렇게 하면 훈련 컨테이너 내에서 실행되는 Python 라이브러리가 호스트의 작업 모니터링 서비스와 통신할 수 있습니다.spec: headGroupSpec: template: spec: containers: - name: ray-head env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIP workerGroupSpecs: - template: spec: containers: - name: ray-worker env: - name: HYPERPOD_JMA_HOST valueFrom: fieldRef: fieldPath: status.hostIP참고
이 환경 변수는 사용자 지정 감지 규칙에만 필요합니다. 기본 감지는 기본 감지 없이 작동합니다.
-
훈련 컨테이너 이미지에 도구 키트 라이브러리 설치
PyPI 웹 사이트의 toolkit-for-ray-on-sagemaker-ai
패키지를 훈련 컨테이너 이미지에 추가합니다. 라이브러리는 SageMaker Distribution 이미지에 사전 설치되어 있습니다. pip install toolkit-for-ray-on-sagemaker-ai -
훈련 함수에 모니터링 추가
의미 있는 작업을 수행하기 전에 훈련 함수
SageMakerLogMonitoring.start()내에서를 호출합니다. 이렇게 하면 훈련 시작부터 모니터링이 활성화되고 모델 로드 또는 첫 번째 순방향 패스 중에 발생하는 중단이 감지될 수 있습니다.from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) from ray.train import RunConfig, FailureConfig, ScalingConfig from ray.train.torch import TorchTrainer def train_func(): # Start monitoring BEFORE any meaningful work SageMakerLogMonitoring(config=LogMonitorConfig( enabled=True, rules=[ { "name": "training_progress", "type": "log_pattern", "enabled": True, "log_pattern": "(Epoch|Step|Iteration) \\d+", "timeout_minutes": 10, "start_timeout_minutes": 30, "stop_pattern": "Training complete", "fault_on_match": False, }, { "name": "oom_detection", "type": "log_pattern", "enabled": True, "log_pattern": "CUDA out of memory|OutOfMemoryError|OOM", "fault_on_match": True, }, ], action="cancel", )).start() # ... your training loop for epoch in range(num_epochs): print(f"Epoch {epoch}") # This output is what the rule monitors train_one_epoch(model, dataloader) print("Training complete") # Matches stop_pattern, deactivates the rule # Configure FailureConfig so Ray Train automatically restarts all workers # when the cancel action terminates a hung worker. trainer = TorchTrainer( train_func, scaling_config=ScalingConfig(num_workers=4, use_gpu=True), run_config=RunConfig( failure_config=FailureConfig(max_failures=3), ), )cancel작업이 중단된 작업자를 종료하면 Ray 설명서의 Ray Train의 FailureConfig가 작업자 장애를 감지하고 마지막 체크포인트에서 모든 작업자를 다시 시작합니다. 작업이 영구적으로 실패 max_failures하기 전에 원하는 자동 복구 시도 횟수로 설정합니다. 이 없으면 단일 작업자 종료FailureConfig가 전체 작업에 실패합니다.Ray Train은 다시 시작할 때 마지막으로 저장된 체크포인트에서 복원되므로 가장 최근 체크포인트 이후 작업 이상으로 훈련 진행 상황이 손실되지 않습니다. 훈련 코드가 체크포인트를 주기적으로 저장하는 경우(예: 각 에포크 경계) 작업은 마지막으로 저장된 상태에서 자동으로 재개됩니다.
규칙 필드
| Field | 유형 | 필수 | 설명 |
|---|---|---|---|
name |
문자열 | 예 | 규칙에 대한 사람이 읽을 수 있는 식별자입니다. |
type |
문자열 | 예 | 규칙 유형 . 로그 기반 감지log_pattern에 사용합니다. |
enabled |
bool | 아니요 | 이 규칙이 활성 상태인지 여부입니다. 기본값은 false입니다. |
log_pattern |
문자열 | 예 | 작업자 stdout에서 일치시킬 정규식 패턴(RE2 구문, 최대 256자). |
timeout_minutes |
실수 | 아니요 | 중단 선언 전 연속 패턴 일치 사이의 최대 분입니다. |
start_timeout_minutes |
실수 | 아니요 | 첫 번째 패턴 일치에 대한 작업 시작 후 최대 분입니다. 시작 시간(모델 로드, 데이터 다운로드)을 허용하는 데 유용합니다. 이 기간 내에 패턴이 나타나지 않으면 작업이 중단된 것으로 간주됩니다. |
stop_pattern |
문자열 | No | 일치 시이 규칙을 비활성화하는 정규식(예: "Training complete"). |
fault_on_match |
bool | 아니요 | 인 경우 true는 패턴이 일치할 때 즉시 중단을 선언합니다. OOM과 같은 오류 패턴에를 사용합니다. true인 경우 timeout_minutes는 필요하지 않습니다. |
metric_evaluation_data_points |
int | 아니요 | 중단을 선언하기 전에 조건을 확인해야 하는 연속 평가 주기 수입니다. 기본값은 1입니다. |
작업
| 작업 | 설명 |
|---|---|
notify |
CloudWatch 및 Grafana로 감지 이벤트를 내보내지만 자동 작업은 수행하지 않습니다. 기본값입니다. |
cancel |
중단된 작업자 프로세스를 종료합니다. Ray Train의 기본 제공은 마지막 체크포인트에서 모든 작업자를 FailureConfig 다시 시작합니다. 이 작업을 사용하려면에서 충분한 재시도FailureConfig로를 구성합니다RunConfig. |
감지 옵트아웃
기본 감지 및 사용자 지정 규칙을 포함하여 특정 작업에 대한 모든 중단된 작업 감지를 비활성화하려면:
from toolkit_for_ray_on_sagemaker_ai.log_monitoring import ( SageMakerLogMonitoring, LogMonitorConfig, ) def train_func(): SageMakerLogMonitoring(config=LogMonitorConfig(enabled=False)).start() # ... training continues with no monitoring
감지 이벤트 보기
중단된 작업이 감지되면 이벤트가 다음 위치에 나타납니다.
-
CloudWatch Logs: 로그 그룹
/aws/sagemaker/Clusters/, 로그 스트림cluster-name/cluster-idSageMakerHangJobDetectionEvents/. 를 검색instance-group-name/instance-idHANG_DETECTED하여 감지 이벤트를 찾습니다. -
Grafana: HyperPod Observability 추가 기능이 설치된 경우 Ray Train 대시보드의 중단 작업 감지 패널에 감지 이벤트가 표시됩니다. 자세한 내용은 관찰성 단원을 참조하십시오.
각 감지 이벤트에는 작업 ID, 감지를 트리거한 증거 및 수행된 작업(notify 또는 cancel)이 포함됩니다.