Cloud TPU에서 소프트웨어 버전 전환

개요

TPU에서 실행 중인 프레임워크의 소프트웨어 버전이 로컬 VM에서 실행 중인 버전과 일치해야 합니다. 이제 TPU를 삭제했다가 다시 만들지 않고도 실행 중인 Cloud TPU에서 이 소프트웨어 버전을 전환할 수 있습니다. 또한 특정 나이틀리 버전의 소프트웨어 프레임워크로 Cloud TPU를 구성할 수 있지만 이러한 프레임워크의 지원되는 버전을 선택하는 것이 좋습니다.

용도

버전을 전환하려면 cloud-tpu-client Python 라이브러리를 사용하는 것이 좋습니다.

TensorFlow 사용 예시

from cloud_tpu_client import Client
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--tpu-name',
                    type=str,
                    required=True,
                    help='Name of the TPU Instance')
parser.add_argument('--target-version',
                    type=str,
                    required=True,
                    help='target TPU Runtime version')

args = parser.parse_args()

c = Client(args.tpu_name)
c.configure_tpu_version(args.target_version, restart_type='ifNeeded')
c.wait_for_healthy()

이렇게 하면 로컬 VM에서 실행되는 TensorFlow 버전과 일치하도록 Cloud TPU가 구성됩니다. 여기에는 공식 출시 버전과 날짜가 지정된 나이틀리 빌드도 포함됩니다.

configure_tpu_version API의 restart_type 매개변수는 버전을 전환할 때 TPU 재시작 동작을 정의합니다. 옵션은 'always'(기본값)와 'ifNeeded'입니다.

  • 'always'를 사용하여 UNHEALTHY_TENSORFLOW 상태가 발생하거나 이전 실행의 리소스 유출로 인해 메모리 부족(OOM) 오류가 반환되는 등의 TPU 문제를 해결할 수 있습니다. 이 옵션을 설정하면 새 프레임워크 버전이 설치되지 않더라도 TPU가 다시 시작됩니다.

  • 'ifneeded'를 사용하면 런타임 버전이 이미 올바른 경우 런타임을 다시 시작하지 않으므로 학습 스크립트에 상당한 시작 시간이 추가되지 않아서 유용할 수 있습니다. 이 옵션을 설정하면 TPU가 올바른 프레임워크 버전이 설치되지 않은 경우에만 다시 시작됩니다.

라이브러리가 Cloud TPU와 직접 통신하므로 이 코드를 동일한 네트워크의 VM에서 실행해야 합니다. 모델의 나머지 부분을 위해 코드 내에서 이 값을 실행하는 것이 좋습니다.

추가 소프트웨어 옵션

TensorFlow에는 올바른 버전을 구성하기 위한 가장 간단한 방법인 tf.__version__ 문자열이 포함됩니다. 기타 소프트웨어 옵션은 다음과 같습니다.

  • PyTorch - pytorch-1.13, pytorch-nightly-dev20220930, pytorch-nightly
  • Jax - tpu_driver, tpu_driver0.1-dev20200320, tpu_driver_nightly

예를 들어 PyTorch의 최신 나이틀리 빌드로 실행되도록 TPU를 구성합니다.

from cloud_tpu_client import Client
c = Client()
c.configure_tpu_version('pytorch-nightly', restart_type='ifNeeded')
c.wait_for_healthy()