커스텀 학습 서비스 이해

이 페이지에서는 학습 작업의 수명 주기를 통한 학습 클러스터의 상태 및 Vertex AI가 학습 오류를 처리하는 방법을 설명합니다. 이 정보를 사용하여 학습 코드를 적절히 조정할 수 있습니다.

학습 작업의 수명 주기

이 섹션에서는 Vertex AI가 학습 작업의 수명 주기를 통해 작업자 VM을 처리하는 방법을 설명합니다.

새 작업 큐에 추가

CustomJob 또는 HyperparameterTuningJob을 만들면 작업이 Vertex AI에서 실행되기 전에 일정 시간 동안 JOB_STATE_QUEUED 상태로 유지될 수 있습니다. 일반적으로 이 시간은 길지 않지만 Google Cloud 프로젝트에 작업에 대한 커스텀 학습 할당량이 부족한 경우 Vertex AI는 할당량이 충분히 확보될 때까지 작업을 큐에 유지합니다.

동시에 작업자 시작

학습 작업이 시작되면 Vertex AI는 짧은 시간 내에 최대한 많은 작업자를 예약합니다. 따라서 작업자가 순차적으로 시작되는 대신 병렬로 시작될 수 있습니다. 시작 지연 시간을 줄이기 위해 Vertex AI는 각 작업자가 사용 가능해지는 즉시 각 작업자에 코드를 실행합니다. 모든 작업자를 사용할 수 있는 경우 Vertex AI는 작업 상태를 JOB_STATE_RUNNING으로 설정합니다.

대부분의 경우 머신러닝 프레임워크는 병렬로 시작되는 작업자를 자동으로 처리합니다. 학습 코드에서 배포 전략을 사용하는 경우 병렬로 시작되는 작업자를 처리하도록 수동으로 조정해야 할 수 있습니다. TensorFlowPyTorch의 배포 전략에 대해 자세히 알아보세요.

학습 작업 중에 작업자 다시 시작

학습 작업 중에 Vertex AI는 호스트 이름이 동일한 작업자 풀에서 작업자를 다시 시작할 수 있습니다. 이는 다음과 같은 경우에 발생할 수 있습니다.

  • VM 유지보수: 작업자를 실행하는 VM에 VM 유지보수가 적용되는 경우 Vertex AI는 다른 VM에서 작업자를 다시 시작합니다. VM 유지보수를 위한 라이브 마이그레이션을 자세히 알아보세요.
  • 0이 아닌 종료: 0이 아닌 종료 코드로 작업자가 종료되면 Vertex AI가 해당 작업자를 동일한 VM에서 즉시 다시 시작합니다.

    • 작업자가 일반적인 오류로 인해 실패하면 영구 오류로 취급되고 Vertex AI는 전체 작업을 종료합니다. Vertex AI가 전체 작업을 종료하기 전에 컨테이너가 다시 시작되면 이러한 컨테이너가 Cloud Logging에 로그를 생성할 수 있습니다.
    • 비영구적 오류(일반적인 오류에 나열되지 않은 오류)로 인해 작업자가 실패하면 Vertex AI에서 다시 시작된 작업자가 작업자당 최대 5번까지 계속 실행됩니다. 5번을 다시 시작한 후 작업자가 다시 실패하면 Vertex AI에서 전체 작업이 실패하기 전에 전체 작업을 3회까지 다시 시도합니다.

학습 코드에서 작업자 재시작을 처리하려면 작업자가 다시 시작될 때 체크포인트로부터 복원할 수 있도록 학습 중에 정기적으로 체크포인트를 저장합니다. 학습이 4시간 넘게 걸릴 것으로 예상되면 최소 4시간마다 한 번씩 체크포인트를 저장하는 것이 좋습니다. TensorFlowPyTorch에서 학습 체크포인트 사용 방법에 대해 알아보세요.

성공적으로 작업 완료

기본 복제본이 종료 코드 0으로 종료되면 학습 작업이 성공적으로 완료됩니다. 이 시점에 Vertex AI는 다른 모든 실행 작업자를 종료합니다.

Vertex AI가 학습 작업 오류를 처리하는 방법

이 섹션에서는 Vertex AI가 일반적인 학습 작업 오류 및 내부 오류를 처리하는 방법을 설명합니다.

작업이 종료되고 약 1분 후 Vertex AI는 종료 코드를 기준으로 학습 작업 객체에 오류 코드를 설정합니다.

일반적인 오류 처리

다음과 같은 문제가 발생하면 Vertex AI가 모든 작업자를 종료합니다.

오류 유형 오류 메시지/로그 참고
사용자 코드 예외 복제본 REPLICA_NAME이 0이 아닌 EXIT_CODE 상태로 종료되었습니다. 종료 원인은 REASON입니다. 작업이 일시적일 수 있는 종료 코드가 발생하면 Vertex AI는 최대 3회까지 작업을 다시 시작하려고 시도합니다. Vertex AI에서 작업을 다시 시도하라고 알리는 일시적인 오류 코드에는 다음이 포함됩니다.
  • SIGABRT
    • ExitCode 6
    • ExitCode 134(커스텀 컨테이너)
  • SIGSEGV
    • ExitCode 11
    • ExitCode 139(커스텀 컨테이너)
메모리 부족 복제본 REPLICA_NAME의 메모리가 부족하여 0이 아닌 EXIT_CODE 상태로 종료되었습니다. GKE는 Vertex AI 노드에 메모리를 예약합니다. 최소 머신 유형(예: n1-standard-4)에서 Vertex AI 시스템 에이전트는 총 메모리의 최대 40%를 사용할 수 있습니다. 더 큰 VM의 경우 오버헤드가 비교적 작습니다. n1-standard 머신 유형에 할당 가능한 메모리를 비교합니다.
리전의 용량 부족(Compute Engine 재고 부족) REGION_NAME 리전의 리소스가 부족합니다. 다른 리전을 사용하거나 다른 가속기를 사용해 보세요. 재고 부족은 리전의 선택한 CPU 또는 GPU에 대해 Compute Engine 용량이 부족한 경우 발생합니다. 프로젝트 할당량과는 관련이 없습니다. 이 경우 Vertex AI가 작업을 최대 3회까지 다시 시작하려고 시도합니다.

A2 및 A3 VM에서 실행되는 작업의 경우 동적 워크로드 스케줄러를 사용하면 재고 부족 오류로 실패하지 않고 요청된 GPU 리소스가 제공될 때 실행되는 작업을 예약할 수 있습니다. 자세한 내용은 리소스 가용성 기반의 학습 작업 예약을 참고하세요.

내부 오류 처리

Vertex AI에 내부 오류가 있으면 Vertex AI는 작업을 2회 다시 시작하려고 시도합니다(총 3회). 재시작도 실패하면 Vertex AI는 Internal error occurred for the current attempt 메시지와 함께 내부 오류를 반환합니다.