유지보수 이벤트 준비

TPU VM은 TPU 하드웨어가 연결된 Compute Engine VM의 인스턴스입니다. Compute Engine VM은 Compute Engine VM 유지보수 이벤트를 따릅니다. 각 TPU가 Compute Engine VM에 연결되므로 TPU 슬라이스에서와 같이 TPU를 더 많이 사용하면 VM 중 하나에서 유지보수 이벤트가 발생할 가능성이 증가합니다.

이 문서에서는 Cloud TPU에서 장기 실행 학습 작업의 유지보수 이벤트를 처리하는 방법을 설명합니다. Google Kubernetes Engine(GKE)에서 TPU 유지보수 이벤트를 처리하는 방법은 GPU 및 TPU에서 GKE 노드 중단 관리를 참조하세요.

예정된 유지보수 알림 보기

예정된 호스트 유지보수 이벤트에 대한 알림을 확인할 수 있습니다. 인스턴스의 예약된 유지보수 기간을 모니터링하면 중단을 최소화하면서 예정된 유지보수를 처리할 수 있도록 워크로드를 사전에 준비할 수 있습니다. 자세한 내용은 유지보수 알림 보기를 참조하세요.

체크포인트를 사용하여 유지보수 이벤트에서 빠르게 복구

체크포인트는 유지보수 이벤트를 빠르게 복구하는 데 핵심적인 역할을 하므로, 자주 저장해야 합니다. 일반적인 권장 기준은 약 1시간마다 한 번씩 체크포인트를 저장하는 것입니다. 체크포인트가 없는 경우 유지보수 이벤트나 기타 학습 중단으로 인해 학습 과정이 상당수 손실될 수 있습니다.

체크포인트는 일반적으로 학습에 사용된 모든 저장된 매개변수(예: 모델 가중치)를 나타냅니다. 체크포인트를 저장하는 데 걸리는 시간은 초 단위부터 분 단위까지 다양합니다.

TPU는 대부분의 유지보수 이벤트로부터 자동으로 복구되며, 학습 작업도 수동 개입 없이 계속 진행됩니다. 하지만 드물게 학습 작업이 자동으로 재시작되지 않는 예외적인 경우가 발생할 수 있습니다. 이 경우 TPU 리소스를 삭제하여 다시 만들고 저장된 체크포인트에서 학습 작업을 다시 시작해야 합니다. 자동 복구 실패를 감지하고 복구하는 방법에 대한 자세한 내용은 TPU 실패 감지 및 복구를 참조하세요.

ML 프레임워크마다 체크포인트를 저장하고 불러오는 방식이 다릅니다. 지원되는 Cloud TPU 모델은 일반적으로 체크포인트가 내장되어 있습니다. 체크포인트에 대한 자세한 내용은 TensorFlow 2.x, PyTorch, JAX/flax를 참조하세요.

자동 체크포인트 사용

자동 체크포인트 기능을 사용하면 유지보수 이벤트가 발생할 때 예약되지 않은 체크포인트를 저장하도록 코드를 구성하여 학습 진행 상태를 보존할 수 있습니다. 자동 체크포인트에 대한 자세한 내용은 Cloud TPU 자동 체크포인트를 참조하세요.

학습 스크립트 재시도

학습 스크립트는 중단 이벤트의 결과로 중지될 수 있습니다. bash 스크립트를 사용하여 학습이 완료될 때까지 학습 스크립트를 계속 재시도할 수 있습니다. 예를 들면 다음과 같습니다.

while ! gcloud compute tpus tpu-vm ssh ${TPU_NAME} --command "python3 TRAINING_COMMAND"; do sleep 1; done

각 재시도는 최근 체크포인트부터 계속되므로, 항상 체크포인트와 함께 재시도 스크립트를 사용해야 합니다.

프로덕션에 즉시 사용 가능한 학습 파이프라인은 Google Kubernetes Engine(GKE)과 같은 리소스 관리 시스템을 사용해야 합니다. TPU VM과 함께 Google Kubernetes Engine을 사용하는 방법에 대한 자세한 내용은 TPU 워크로드 배포를 참조하세요.

TPU 실패 감지 및 복구

TPU가 유지보수 이벤트에서 복구되지 않는 경우 복구 스크립트를 사용하여 TPU 상태를 감지하고 TPU를 삭제하고 다시 만들 수 있습니다. 복구 스크립트 예시는 retry.sh를 참조하세요. 학습 스크립트를 실행하는 프로세스가 다운될 경우 학습 스크립트를 실행을 재시도하도록 복구 스크립트를 수정할 수 있습니다.

TPU를 수동으로 삭제하고 다시 생성하는 방법은 TPU 리소스 관리를 참조하세요.

컬렉션 스케줄링 사용

Cloud TPU에는 컬렉션 스케줄링이라는 개념이 있으며, 사용자는 이를 통해 학습 워크로드 또는 서빙 및 추론 워크로드에 맞는 두 가지 컬렉션 유형 중 하나를 선택해 사용할 수 있습니다. 이 기능을 사용해 Cloud TPU 인스턴스를 배포할 경우 Google Cloud 는 애플리케이션에 가장 적합한 고유한 유지보수 일정을 적용합니다. 각 컬렉션 유형에서 예상할 수 있는 동작은 다음과 같습니다.

  • 학습(기본값): 이 컬렉션 유형은 일반적인 학습 워크로드에 적합하며, 유지보수 이벤트 발생 시 모든 인스턴스의 다운타임을 최소화하고 예기치 않은 중단을 줄여, 서비스를 빠르게 복원할 수 있도록 지원합니다. 학습 컬렉션 유형은 인스턴스 그룹에 대한 유지보수 이벤트를 병렬로 스케줄링하고 실행합니다.

  • 서빙(--workload-type=AVAILABILITY_OPTIMIZED를 통해 사용 가능): 이 컬렉션 유형은 대부분의 서빙 또는 추론 워크로드에 적합하며, 유지보수 이벤트 중에도 서비스 연속성을 보장해야 하는 경우 일부 인스턴스(복제본)의 다운타임을 최소화할 수 있도록 지원합니다. 서빙 컬렉션 유형은 인스턴스 그룹에 대한 유지보수 이벤트를 순차적으로 스케줄링하고 실행합니다. 서빙 컬렉션은 TPU v6e에서만 지정할 수 있습니다.

컬렉션 스케줄링에 대한 자세한 내용은 추론 워크로드를 위한 TPU 컬렉션 스케줄링을 참조하세요.

유지보수 이벤트 감지

다음 gcloud compute tpus tpu-vm describe 명령어를 사용해서 TPU에서 유지보수 이벤트가 발생했는지 여부 및 시간을 감지할 수 있습니다.

$ gcloud compute tpus tpu-vm describe tpu-name --zone=zone  | grep 'health'

이 명령어의 출력에는 TPU의 현재 상태와 최근 유지보수 이벤트에 대한 설명이 표시됩니다. 출력은 다음과 비슷하게 표시됩니다.

health: HEALTHY
healthDescription: The TPU had a maintenance event at 2022-01-26T03:44:36.265703305Z

유지보수 이벤트 로그 보기

TPU의 유지보수 이벤트 로그 기록은 시스템 이벤트 감사 로그에서 확인할 수 있습니다.

  1. Google Cloud 콘솔 탐색 메뉴에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

  2. 종료되었거나 다시 시작된 TPU를 보려면 다음 검색어를 사용하세요.

    "tpu.nodes.terminate" OR "tpu.nodes.restart"

    검색 기간 내에 TPU 워커의 중단 및 수리에 대한 로그가 결과에 표시됩니다. 로그에는 다음이 포함됩니다.

    • 이벤트 날짜 및 시간
    • 이벤트 유형
    • "종료" 이벤트의 경우 protoPayload.metadata.terminateReason 필드에 종료 이유가 표시됩니다.

다음 단계