PyTorch를 사용하여 Cloud TPU VM에서 계산 실행
이 빠른 시작에서는 Cloud TPU를 만들고 PyTorch를 설치하고 Cloud TPU에서 간단한 계산을 실행하는 방법을 보여줍니다. Cloud TPU에서 모델을 학습시키는 방법을 보여주는 자세한 튜토리얼은 Cloud TPU PyTorch 튜토리얼 중 하나를 참조하세요.
시작하기 전에
이 빠른 시작을 수행하기 전에 Google Cloud Platform 계정을 만들고 Google Cloud CLI를 설치하고 gcloud
명령어를 구성해야 합니다.
자세한 내용은 계정 및 Cloud TPU 프로젝트 설정을 참조하세요.
gcloud
로 Cloud TPU 만들기
Compute Engine VM 및 Cloud TPU를 실행하려면 gcloud
명령어를 사용합니다. 사용하는 명령어는 TPU VM과 TPU 노드 중 무엇을 사용하는지에 따라 다릅니다. 두 가지 VM 아키텍처에 관한 자세한 내용은 시스템 아키텍처를 참조하세요. gcloud
명령어에 대한 자세한 내용은 gcloud 참조를 확인하세요.
TPU VM
기본 사용자 프로젝트에서 TPU VM을 만들려면 네트워크 및 컴퓨팅/영역을 실행합니다.
$ gcloud compute tpus tpu-vm create tpu-name \
--zone=us-central1-b \
--accelerator-type=v3-8 \
--version=tpu-vm-pt-1.11
TPU를 만드는 동안 기본 네트워크 및 서브네트워크를 지정하려면 추가로 --network
및 --subnetwork
플래그를 전달할 수 있습니다.
기본 네트워크를 사용하지 않으려면 --network
플래그를 전달해야 합니다.
--subnetwork
플래그는 선택사항이며 사용 중인 네트워크(기본 또는 사용자 지정)에 대한 기본 서브네트워크를 지정하는 데 사용할 수 있습니다.
이러한 플래그에 대한 자세한 내용은 gcloud
API 참조 페이지를 참조하세요.
TPU 노드
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
다음으로 TPU 인스턴스를 만듭니다.
gcloud compute tpus create tpu-name \ --zone=us-central1-b \ --network=default \ --version=pytorch-1.11 \ --accelerator-type=v3-8
Cloud TPU VM에 연결
TPU VM
$ gcloud 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 노드
TPU 노드의 IP 주소를 찾습니다.
(vm)$ gcloud compute tpus describe tpu-name --zone=us-central1-b
Torch-XLA 환경을 구성합니다. 반드시 your-tpu-ip-address를 TPU의 IP 주소로 바꾸세요.
(vm)$ conda activate torch-xla-1.11 (vm)$ export TPU_IP_ADDRESS=your-tpu-ip-address (vm)$ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
간단한 계산 수행:
현재 디렉터리에
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)
스크립트를 실행합니다.
(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')
OpKernel ('op: "TPURoundRobin" device_type: "CPU"') for unknown op: TPURoundRobin OpKernel ('op: "TpuHandleToProtoKey" device_type: "CPU"') for unknown op: TpuHandleToProtoKey
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
Compute Engine 인스턴스에서 연결을 해제합니다.
(vm)$ exit
프롬프트가
username@projectname
으로 바뀌면 Cloud Shell에 있는 것입니다.Cloud TPU를 삭제합니다.
TPU VM
$ gcloud 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에 대해 자세히 알아보기