Cloud TPU PyTorch 빠른 시작

이 빠른 시작에서는 Cloud TPU를 만들고 PyTorch를 설치하고 Cloud TPU에서 간단한 계산을 실행하는 방법을 보여줍니다. Cloud TPU에서 모델을 학습시키는 방법을 보여주는 자세한 튜토리얼은 Cloud TPU PyTorch 튜토리얼 중 하나를 참조하세요.

시작하기 전에

이 빠른 시작을 수행하기 전에 Google Cloud Platform 계정을 만들고 Google Cloud Platform SDK를 설치하고 gcloud 명령어를 구성해야 합니다. 자세한 내용은 계정 및 Cloud TPU 프로젝트 설정을 참조하세요.

gcloud로 Cloud TPU 만들기

Compute Engine VM 및 Cloud TPU를 실행하려면 gcloud 명령어를 사용합니다. 사용하는 명령어는 TPU VM과 TPU 노드 중 무엇을 사용하는지에 따라 다릅니다. 두 가지 VM 아키텍처에 관한 자세한 내용은 시스템 아키텍처를 참조하세요. gcloud 명령어에 대한 자세한 내용은 gcloud 참조를 확인하세요.

TPU VM

$ gcloud alpha compute tpus tpu-vm create tpu-name \
--zone=us-central1-b \
--accelerator-type=v3-8 \
--version=v2-alpha

명령어 플래그 설명

zone
Cloud TPU를 생성하려는 영역입니다.
accelerator-type
생성할 Cloud TPU의 유형입니다.
version
Cloud TPU 런타임 버전입니다.

TPU 노드

  1. PyTorch용 TPU 노드를 만들려면 먼저 Compute Engine VM 인스턴스를 만듭니다.

    gcloud compute instances create tpu-name \
    --zone=us-central1-b  \
    --machine-type=n1-standard-16  \
    --image-family=torch-xla \
    --image-project=ml-images  \
    --boot-disk-size=200GB \
    --scopes=https://www.googleapis.com/auth/cloud-platform

    명령어 플래그 설명

    project
    GCP 프로젝트 ID
    name
    생성할 Cloud TPU의 이름입니다.
    zone
    Cloud TPU를 만들려는 영역입니다.
    disk-size
    gcloud 명령어로 만든 VM의 하드 디스크 크기(GB)입니다.
    machine-type
    생성할 Compute Engine VM의 머신 유형입니다.
    tf-version
    Tensorflow gcloud 버전이 VM에 설치됩니다.
    accelerator-type
    생성할 Cloud TPU의 유형입니다.
  2. 다음으로 TPU 인스턴스를 만듭니다.

    gcloud compute tpus create tpu-name \
    --zone=us-central1-b \
    --network=default \
    --version=pytorch-1.9 \
    --accelerator-type=v3-8

    명령어 플래그 설명

    name
    생성할 Cloud TPU의 이름입니다.
    zone
    Cloud TPU를 생성하려는 영역입니다.
    network
    TPU가 연결된 네트워크입니다.
    version
    PyTorch gcloud 버전이 VM에 설치됩니다.
    accelerator-type
    생성할 Cloud TPU의 유형입니다.

Cloud TPU VM에 연결

TPU VM

$ gcloud alpha compute tpus tpu-vm ssh tpu-name \
  --zone us-central1-b

TPU 노드

gcloud compute ssh tpu-name --zone=us-central1-b

XRT TPU 기기 구성 설정

TPU VM

Torch-XLA 환경을 구성합니다.

(vm)$ export XRT_TPU_CONFIG="localservice;0;localhost:51011"

TPU 노드

  1. TPU 노드의 IP 주소를 찾습니다.

    (vm)$ gcloud compute tpus describe tpu-name --zone=us-central1-b
  2. Torch-XLA 환경을 구성합니다. 반드시 your-tpu-ip-address를 TPU의 IP 주소로 바꾸세요.

    (vm)$ conda activate torch-xla-1.9
    (vm)$ export TPU_IP_ADDRESS=your-tpu-ip-address
    (vm)$ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"

간단한 계산 수행:

  1. 현재 디렉터리에 tpu-test.py이라는 파일을 만들고 이 파일에 다음 스크립트를 복사하여 붙여넣습니다.

    import torch
    import torch_xla.core.xla_model as xm
    
    dev = xm.xla_device()
    t1 = torch.randn(3,3,device=dev)
    t2 = torch.randn(3,3,device=dev)
    print(t1 + t2)
    
  2. 스크립트를 실행합니다.

      (vm)$ python3 tpu-test.py

    스크립트의 출력에 계산 결과가 표시됩니다.

    tensor([[-0.2121,  1.5589, -0.6951],
            [-0.7886, -0.2022,  0.9242],
            [ 0.8555, -1.8698,  1.4333]], device='xla:1')</span></pre>
    
    OpKernel ('op: "TPURoundRobin" device_type: "CPU"') for unknown op: TPURoundRobin
    OpKernel ('op: "TpuHandleToProtoKey" device_type: "CPU"') for unknown op: TpuHandleToProtoKey
    

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

  1. Compute Engine 인스턴스에서 연결을 해제합니다.

    (vm)$ exit
    

    프롬프트가 username@projectname으로 바뀌면 Cloud Shell에 있는 것입니다.

  2. Cloud TPU를 삭제합니다.

    TPU VM

    $ gcloud alpha compute tpus tpu-vm delete tpu-name \
    --zone=us-central1-b

    TPU 노드

    $ gcloud compute tpus execution-groups delete tpu-name \
    --zone=us-central1-b

    이 명령어의 출력에서 TPU가 삭제되었는지 확인할 수 있습니다.

다음 단계

Cloud TPU VM에 대해 자세히 알아보기