Job Failover 사용하기
Job Failover는 On-Demand Training으로 학습을 진행하는 도중 GPU 등 하드웨어 장애가 발생하더라도 학습이 중단되지 않도록 정상 자원으로 자동 재배치하여 학습을 이어가는 기능입니다. Job Failover 기능을 사용하면 시스템 오류 및 하드웨어 장애 감지 시 사용자가 직접 장애를 확인하고 Job을 다시 생성할 필요 없이 학습의 연속성을 확보할 수 있습니다.
Job Failover 개요
Training Job 실행 중에는 학습이 배치된 노드에서 GPU 오류, 노드 장애 등 다양한 하드웨어 이상이 발생할 수 있습니다.
Job Failover 기능을 사용하면 이러한 하드웨어 장애가 감지되었을 때 시스템이 장애 노드를 회피하여 정상 자원으로 Training Job을 자동 재배치하고 학습을 재개합니다.
Job Failover의 주요 동작은 다음과 같습니다.
- 장애 감지: 학습이 실행 중인 노드의 GPU 및 하드웨어 상태를 지속적으로 점검하여 이상을 감지합니다.
- 자동 재배치: 하드웨어 장애로 판단되면 장애 노드를 제외하고 정상 노드로 Training Job을 재배치하여 학습을 다시 시작합니다.
- 불필요한 재배치 방지: 하드웨어 장애가 아닌 사용자 코드 오류, 설정 오류 등은 Failover 대상에서 제외됩니다.
- 재시도 횟수 제한: Failover는 정해진 최대 횟수(3회) 내에서만 수행되며, 이를 초과하면 학습이 실패로 종료됩니다.
- Job Failover는 Training Job 생성 시 학습 형태를 On-Demand Training 타입으로 선택한 경우에만 사용할 수 있습니다. Spot Training 사용 시에는 Job Failover를 사용할 수 없습니다.
- Job Failover 기능의 사용 여부는 Training Job 생성 시 서비스 정보 입력 영역의 Job Failover 항목에서 선택할 수 있습니다. 생성 이후에는 Training Job 상세 페이지의 상세 정보 탭에서 사용 여부를 확인할 수 있습니다.
- Failover로 학습이 다른 자원에 재배치되면 학습이 중단된 시점의 메모리 상태는 유지되지 않습니다. 학습을 이어서 진행하려면 공유 스토리지(File Storage, Object Storage)에 체크포인트를 저장하도록 학습 스크립트를 구성하는 것을 권장합니다.
- Failover가 항상 즉시 실행을 보장하지는 않습니다.
- Failover로 재배치되는 Job은 우선 순위가 높게 설정되어 대기 중인 다른 Job 보다 먼저 자원을 할당받아 실행됩니다.
- 단, 재배치 시점에 이미 대기열에 들어와 있던 Job의 우선순위와 대기 순서에 따라 재배치되는 Job이 해당 Job들 보다 늦게 실행될 수 있습니다.
- Job의 재배치 여부를 결정하기 위해 노드 상태를 점검하는 동안(최대 5분) Job이 Pending - failoverinprogress 상태에 머무를 수 있습니다.
오류 원인 점검
시스템은 학습 중단이 발생하면 노드의 GPU 및 하드웨어 상태를 점검하여, 그 원인이 하드웨어 장애인지 아니면 사용자 애플리케이션, 설정과 같은 하드웨어 이외의 문제인지 판단합니다.
Failover 수행 여부는 이 판단 결과에 따라 결정됩니다.
하드웨어 장애로 판단되는 경우
GPU를 정상적으로 사용할 수 없는 물리적, 하드웨어 수준의 오류가 감지되면 하드웨어 장애로 판단하여 Failover를 수행합니다.
이러한 오류는 해당 노드에서 학습을 계속할 수 없으므로 장애 노드를 제외하고 정상 자원으로 재배치하여 학습을 재개합니다.
하드웨어 장애로 판단되는 오류 예시는 다음과 같습니다.
| XID 코드 | 오류 | 설명 |
|---|---|---|
| 48 | GPU 메모리(HBM) 복구 불가능 오류 (Uncorrectable Double Bit ECC) |
|
| 79 | GPU가 시스템에서 분리됨 (GPU fallen off the bus) |
|
| 94, 95 | GPU 내부 메모리(SRAM) 복구 불가능 오류 |
|
| - | GPU 과열, 전원 공급 장치(PSU), PCIe 등 하드웨어 구성 요소 장애 |
|
내부 오류로 판단되는 경우
학습 중단의 원인이 하드웨어 장애가 아니라 사용자 애플리케이션 코드나 설정 문제로 판단되면, 재배치를 하더라도 동일한 문제가 반복될 가능성이 높으므로 Failover를 거부하고 internalerror 상태로 종료합니다. 내부 오류로 판단되는 오류 예시는 다음과 같습니다.
| XID 코드 | 오류 | 설명 |
|---|---|---|
| - | 메모리 부족으로 인한 강제 종료 (Out Of Memory) |
|
| 31 | GPU 메모리 페이지 폴트 |
|
| 43 | GPU 처리 중단 |
|
| 13 | 그래픽·컴퓨트 엔진 예외 |
|
| - | GPU 설정 경고, 소프트웨어 오류 등 |
|
- XID 코드: NVIDIA GPU 드라이버가 오류 종류를 구분하기 위해 부여하는 번호로써, GPU 로그에서 오류 원인을 파악하는 데 참고할 수 있습니다.
- 이 경우에는 학습 스크립트와 실행 Command, 입력 데이터, 리소스 설정 등을 점검하세요. 로그 확인 방법에 대한 자세한 내용은 Job Failover 로그 확인하기를 참고하세요.
Job Failover 상태 확인하기
- 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
- Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
- Training Job 목록 페이지에서 Job의 상태를 확인하세요.
- Failover 사용 여부와 하드웨어 장애 판단 결과에 따른 상태 흐름은 다음과 같습니다.
구분 상세 설명 Failover 성공 하드웨어 장애가 감지되어 정상 자원으로 재배치가 완료된 상태 - Running → Pending - failoverinprogress → Running 순서로 상태가 변경되면 Failover가 정상적으로 수행되어 학습 재개 완료
Failover 거부 학습이 중단되었으나 하드웨어 장애 신호가 확인되지 않아 재배치 대상이 아니라고 판단된 상태 - Running → Pending - failoverinprogress → Pending - internalerror 순서로 상태가 변경되면 Failover가 거부
- 사용자 코드 오류와 같이 하드웨어 이외의 원인일 수 있으므로 로그 확인 필요
Failover 미설정 Job Failover를 사용하지 않도록 설정한 상태 - 학습 중단이 발생하면 재배치를 시도하지 않고 Running → Failed 순서로 학습을 종료
표. Job Failover에 따른 상태 흐름 - Failover 진행 중 표시되는 주요 상태값은 다음과 같습니다.
상태 상세 설명 Pending - failoverinprogress 하드웨어 장애를 감지하고 Failover 가능 여부를 판단하거나 정상 자원으로 재배치를 진행 중인 상태 Pending - maxretriesexceeded Failover 최대 시도 횟수를 초과하여 더 이상 재배치를 수행하지 않는 상태 Pending - imagepullbackoff 컨테이너 이미지를 불러오지 못해 학습을 시작할 수 없는 상태(이미지 URL 및 인증 정보 확인 필요) Pending - internalerror 하드웨어 장애 신호가 확인되지 않는 등 Failover 대상이 아니라고 판단되어 재배치가 거부된 상태 표. Job Failover 진행 중 주요 상태값
- Failover 사용 여부와 하드웨어 장애 판단 결과에 따른 상태 흐름은 다음과 같습니다.
Job Failover 로그 확인하기
Failover가 발생한 경우, 장애로 중단된 이전 학습의 로그와 재배치 후에 재개된 학습의 로그를 하나의 로그 스트림에서 함께 확인할 수 있습니다.
Training Job 로그를 확인하는 방법은 Training Job 로그 확인하기를 참고하세요.
- 모든 서비스 > AI/ML > Simple AI Training 메뉴를 클릭하세요. Simple AI Training의 Service Home 페이지로 이동합니다.
- Service Home 페이지에서 Training Job 메뉴를 클릭하세요. Training Job 목록 페이지로 이동합니다.
- Training Job 목록 페이지에서 로그를 확인할 자원을 선택하세요. Training Job 상세 페이지로 이동합니다.
- Training Job 상세 페이지에서 로그 탭을 클릭하세요. 해당 Job의 로그 정보가 표시됩니다.
- 로그 정보의 Training Job명 하단의 이름을 클릭하세요. ServiceWatch의 로그 그룹 상세 페이지로 이동합니다.
- 로그 그룹 상세 페이지에서 로그 스트림 탭을 클릭하세요. 로그 스트림 목록이 표시됩니다.
- 확인할 로그 스트림 이름(예시: master)을 클릭하세요. 해당 스트림의 로그가 시간순으로 표시됩니다.
- Failover가 발생한 경우, 장애로 중단되었던 학습의 로그와 재배치 후 다시 시작된 학습의 로그가 하나의 스트림에 함께 기록됩니다.
- 학습 시작 시 출력되는 초기화 로그(예시: Starting dataset initialization)가 두 번 이상 표시되면, 학습이 재배치되어 다시 시작되었음을 확인할 수 있습니다.