Cloud TPU VM 사용자 가이드

이 가이드에서는 Cloud TPU VM을 사용하기 위해 Google Cloud Platform 프로젝트를 설정하는 방법을 설명합니다. 여기에서는 Cloud TPU VM을 사용하기 위한 명령어와 Cloud TPU VM을 처음 사용할 때 접할 수 있는 일반적인 문제에 대한 해결책을 설명합니다.

Cloud TPU VM은 TPU 호스트 머신(Cloud TPU 기기에 연결된 머신)에서 실행되며 TPU로 작업할 때 훨씬 더 우수한 성능과 사용성을 제공합니다.

Cloud TPU를 처음 사용한다면 TPU 초보자 가이드를 참조하세요.

Cloud TPU VM 미리보기에는 새로운 Cloud TPU 아키텍처가 도입되었습니다. 현재 출시된 아키텍처는 TPU 노드라고 합니다. Cloud TPU 노드 및 Cloud TPU VM 아키텍처에 대한 상세 설명은 시스템 아키텍처를 참조하세요.

GCP 프로젝트 설정

GCP 프로젝트 준비

Google 계정으로 로그인합니다. 아직 계정이 없으면 새 계정을 등록하세요. Google Cloud Console의 프로젝트 선택기 페이지에서 클라우드 프로젝트를 선택하거나 만듭니다. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. Cloud Shell에서 gcloud를 사용하여 프로젝트 ID를 설정합니다. 프로젝트 ID는 Cloud Console에 표시되는 프로젝트의 이름입니다.

$ gcloud config set project project-id

Cloud TPU API 사용 설정

Cloud Shell에서 다음 gcloud 명령어를 사용하여 Cloud TPU API를 사용 설정합니다. Google Cloud Console에서도 사용 설정할 수 있습니다.

$ gcloud services enable tpu.googleapis.com

gcloud 명령어 구성

다음 명령어를 실행하여 gcloud GCP 프로젝트를 사용하도록 구성하고 TPU VM 미리보기에 필요한 구성요소를 설치합니다.

$ gcloud config set account your-email-account
$ gcloud config set project your-project

TPU 관리

gcloud 또는 curl을 사용하여 Cloud TPU VM을 관리할 수 있습니다. 자세한 내용은 Cloud TPU 관리를 참조하세요.

gcloud를 사용하여 Cloud TPU VM 만들기

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

필수 입력란

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

curl을 사용하여 Cloud TPU VM 만들기

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" -d "{accelerator_type: 'v2-8', \
  runtime_version:'[runtime_version]', \
  network_config: {enable_external_ips: true}}" \
  https://tpu.googleapis.com/v2alpha1/projects/[project]/locations/[zone]/nodes?node_id=[node_name]

필수 입력란

runtime_version
사용하려는 런타임 버전입니다.
project
등록된 GCP 프로젝트의 이름입니다.
zone
Cloud TPU를 만들려는 영역입니다.
node_name
만들려는 TPU VM의 이름입니다.

Cloud TPU VM에 연결

  1. (선택 사항). SSH용 방화벽 설정

기본 네트워크는 모든 VM에 대한 SSH 액세스를 허용하도록 사전 구성되어 있습니다. 기본 네트워크를 사용하지 않거나 기본 네트워크 설정이 수정된 경우 방화벽 규칙을 추가하여 SSH 액세스를 명시적으로 사용 설정해야 할 수 있습니다.

$ gcloud compute firewall-rules create --network=network allow-ssh --allow=tcp:22
  1. TPU VM에 SSH를 통해 연결
$ gcloud alpha compute tpus tpu-vm ssh tpu-name --zone zone --project project-id

필수 입력란

tpu_name
연결하려는 TPU VM의 이름입니다.
zone
Cloud TPU를 만들려는 영역입니다. 현재 europe-west4-aus-central1-a가 지원됩니다.
project-id
GCP 프로젝트 ID입니다.

선택사항 입력란

user
TPU 이름에 $USER@ 프리픽스를 사용하여 SSH를 통해 Cloud TPU VM에 연결할 때 인증에 사용되는 사용자 이름을 선택할 수 있습니다(예: my-email-account@tpu-node-1).
worker
Cloud TPU Pod의 경우 SSH를 통해 연결할 작업자 VM을 선택할 수 있습니다. 기본값은 TPU Pod와 연결된 첫 번째 VM인 작업자 0입니다.
ssh-key-file
SSH 키 파일 경로입니다. 기본적으로 ~/.ssh/google_compute_engine입니다.
internal-ip
내부 IP 주소를 사용하여 TPU VM에 연결합니다. 이 연결이 작동하려면 연결하려는 TPU VM의 내부 IP 주소에 SSH로 연결할 수 있도록 네트워크와 방화벽을 구성해야 합니다.
command
TPU VM에서 실행할 명령어입니다. 명령어는 대상 TPU VM에서 실행된 후 종료됩니다.
tunnel-through-iap
TCP 전달을 위해 Cloud Identity-Aware Proxy를 통해 SSH 연결을 터널링합니다. 자세한 내용은 [TCP 전달 개요](https://cloud.google.com/iap/docs/tcp-forwarding-overview)를 참조하세요.

TPU Pod와 연결된 다른 TPU VM에 SSH를 연결하려면 명령어에 --worker ${WORKER_NUMBER}를 추가하세요. 여기서 WORKER_NUMBER는 0부터 시작하는 색인입니다.

Cloud TPU 리소스 나열

지정된 영역에서 모든 Cloud TPU를 나열할 수 있습니다.

$ gcloud alpha compute tpus tpu-vm list --zone=zone

필수 입력란

zone
Cloud TPU를 만들려는 영역입니다.

이 명령어는 지정된 영역의 Cloud TPU 리소스를 나열합니다. 현재 설정된 리소스가 없으면 출력에서 VM과 TPU가 대시(-)로만 표시됩니다.

Cloud TPU에 대한 정보 검색

다음 명령어를 사용하여 특정 Cloud TPU에 대한 정보를 검색할 수 있습니다.

$ gcloud alpha compute tpus tpu-vm describe tpu-name \
  --zone=zone

필수 입력란

tpu-name
생성할 Cloud TPU의 이름입니다.
zone
Cloud TPU가 생성된 영역입니다.

Cloud TPU 리소스 중지

다음 명령어를 사용하여 단일 Cloud TPU를 중지할 수 있습니다. TPU Pod는 중지할 수 없습니다.

$ gcloud alpha compute tpus tpu-vm stop tpu-name \
  --zone=zone

필수 입력란

tpu-name
생성할 Cloud TPU의 이름입니다.
zone
Cloud TPU를 만든 영역입니다.

Cloud TPU 리소스 시작

Cloud TPU가 중지된 경우 다음 명령어를 사용하여 다시 시작할 수 있습니다.

$ gcloud alpha compute tpus tpu-vm start tpu-name --zone  zone

명령어 플래그 설명

tpu-name
시작할 Cloud TPU의 이름입니다.
zone
Cloud TPU가 생성된 영역입니다.

VM 및 Cloud TPU 리소스 삭제

사용을 완료한 후 Cloud TPU를 삭제할 수 있습니다.

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

필수 입력란

zone
Cloud TPU가 생성된 영역입니다.

성능 측정항목 캡처

명령줄 스크립트 또는 텐서보드를 사용하여 성능 프로필을 캡처할 수 있습니다. 텐서보드 설치에 관한 안내는 텐서보드 설정을 참조하세요.

TensorFlow 모델의 경우 표준 TensorFlow 프로파일링 콜백 메서드를 사용하여 프로필 데이터를 자동으로 캡처할 수 있습니다.

TensorFlow 모델의 프로필 데이터를 수동으로 캡처하려면 TPU VM에서 다음 명령어를 사용하세요.

$ python3 -c "import tensorflow as tf; tf.profiler.experimental.client.trace('grpc://localhost:port', 'gs://model-dir', 1000)"

명령줄을 사용하여 PyTorch 모델의 프로필 데이터를 캡처하려면 TPU VM에서 다음 명령어를 사용합니다.

$ python3 -c "import torch_xla.debug.profiler as xp; xp.trace('localhost:port', '/tmp/tb', 1000)"

JAX 모델의 프로필 데이터를 캡처하는 방법은 JAX 프로그램 프로파일링을 참조하세요.

프로필 데이터 보기

  1. Cloud Shell을 엽니다.
  2. 텐서보드가 설치되어 있는지 확인합니다.
  3. 텐서보드를 실행합니다.
  4. Cloud Shell에서 웹 미리보기 버튼을 클릭하고 포트 변경을 선택한 다음 6006을 입력합니다.
  5. 프로필을 클릭하면 개요 페이지가 표시됩니다.
  6. 도구에서 trace 뷰어로 이동합니다.

TPU 할당량 추가 요청

Cloud TPU는 프로젝트에 기본 TPU 할당량을 배정합니다. 더 필요한 경우 추가 할당량 요청을 참조하세요.

프로필 정보 생성 및 보기

프로필 정보를 생성하고 텐서보드를 사용하여 학습 측정항목을 시각화할 수 있습니다.

gcloud 설정 문제 해결

문제

gcloud components update에 다음 오류 메시지가 표시됩니다.

ERROR: (gcloud.components.update)
You cannot perform this action because the Cloud SDK component manager
is disabled for this installation.
해결책

TPU VM에서 gcloud를 사용하려면 패키지 관리자를 통해 관리되지 않는 gcloud 설치를 사용해야 합니다. 소스 코드에서 gcloud를 설치하려면 다음 단계를 따르세요.

sudo apt-get remove google-cloud-sdk
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-311.0.0-linux-x86_64.tar.gz
tar -xzf google-cloud-sdk-311.0.0-linux-x86_64.tar.gz
./google-cloud-sdk/install.sh
source ~/.bashrc
문제

gcloud alpha compute tpus tpu-vm으로 시작하는 명령어를 실행하면 다음 정보가 표시됩니다.

ERROR: (gcloud.alpha.compute.tpus) Invalid choice: 'tpu-vm'.
해결책

구성요소 저장소가 제대로 설치되지 않은 경우 발생하는 문제입니다. 이를 확인하려면 gcloud --version을 실행하세요. 출력의 첫 번째 줄이 'Google Cloud SDK HEAD'여야 합니다. 이 출력과 다르면 업데이트가 실행되지 않은 것입니다. 문제를 해결하려면 위의 'TPU 설정' 섹션의 명령어를 다시 실행하여 오류가 발생하지 않게 하세요.

문제

gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME} --zone ${ZONE} 명령어가 다음 오류 메시지를 표시합니다.

Waiting for SSH key to propagate.
ssh: connect to host 34.91.136.59 port 22: Connection timed out
ssh: connect to host 34.91.136.59 port 22: Connection timed out
ssh: connect to host 34.91.136.59 port 22: Connection timed out
ERROR: (gcloud.alpha.compute.tpus.tpu-vm.ssh) Could not SSH into the instance.  It is possible that your SSH key has not propagated to the instance yet. Try running this command again.  If you still cannot connect, verify that the firewall and instance are set to accept ssh traffic.
해결책

SSH 키 전파에 문제가 있을 수 있습니다. 자동 생성된 키를 백업 위치로 이동하여 gcloud에서 키를 다시 만들게 강제합니다.

mv ~/.ssh/google_compute_engine ~/.ssh/old-google_compute_engine
mv ~/.ssh/google_compute_engine.pub ~/.ssh/old-google_compute_engine.pub

FAQ

V1Alpha1 및 V1 API를 사용하여 Cloud TPU VM을 관리할 수 있나요?
Get/List는 허용되지만 V2Alpha1 API 버전에서만 변형을 사용할 수 있습니다.
TPU가 Cloud TPU VM을 사용하고 있는지 어떻게 알 수 있나요?
TPU에서 GetNode를 호출하고 APIVersion 필드를 V2_ALPHA1로 설정하세요.