TPU 리소스 관리

이 페이지에서는 다음을 사용하여 Cloud TPU 리소스를 관리하는 방법을 설명합니다.

Cloud TPU에는 TPU 노드와 TPU VM의 두 가지 VM 아키텍처가 있습니다. 두 VM 아키텍처는 시스템 아키텍처에 설명되어 있습니다. 이 문서에서 설명하는 gcloud 명령어를 두 TPU 구성 모두에 사용할 수 있습니다. 사용하는 gcloud 명령어는 사용 중인 TPU 구성에 따라 다릅니다. 각 gcloud 명령어는 탭으로 구분된 섹션에 표시됩니다. 사용하려는 TPU 구성 탭을 선택합니다. 그러면 웹페이지에 적절한 gcloud 명령어가 표시됩니다. TPU 노드를 사용해야 하는 경우가 아니라면 TPU VM을 사용하는 것이 좋습니다. Cloud TPU v4 이상에서는 TPU VM 아키텍처만 지원됩니다.

기본 요건

이 절차를 실행하기 전에 Google Cloud CLI를 설치하고, Google Cloud 프로젝트를 만들고, Cloud TPU API를 사용 설정해야 합니다. 자세한 내용은 프로젝트 설정 및 Cloud TPU API 사용 설정을 참조하세요.

Google Cloud CLI를 사용하는 경우 Compute Engine VM인 Google Cloud Shell을 사용하거나 로컬에서 Google Cloud CLI를 설치하면 됩니다. Google Cloud Shell을 사용하면 소프트웨어를 설치하지 않고도 Cloud TPU와 상호작용할 수 있습니다. 일정 기간 활동이 없으면 Google Cloud Shell 연결이 해제될 수 있습니다. 장기 실행 명령어를 실행하는 경우 로컬 머신에 Google Cloud CLI를 설치하는 것이 좋습니다. Google Cloud CLI에 대한 자세한 내용은 gcloud 참조를 확인하세요.

Cloud TPU 프로비저닝

gcloud, Google Cloud 콘솔 또는 Cloud TPU API를 사용하여 Cloud TPU를 프로비저닝할 수 있습니다.

gcloud를 사용하여 TPU를 프로비저닝하는 방법에는 두 가지가 있습니다.

  1. 큐에 추가된 리소스 사용: gcloud alpha compute tpus queued-resources create
  2. Create Node API 사용: gcloud compute tpus tpu-vm create

권장사항은 큐에 추가된 리소스로 프로비저닝하는 것입니다. 큐에 추가된 리소스를 요청하면 요청이 Cloud TPU 서비스에서 유지보수하는 큐에 추가됩니다. 요청된 리소스를 사용할 수 있게 되면 즉시 독점으로 사용 가능하도록 Google Cloud 프로젝트에 할당됩니다.

큐에 추가된 리소스를 사용하여 TPU를 만들려면 큐에 추가된 리소스를 참조하세요.

멀티슬라이스를 사용할 경우 자세한 내용은 멀티슬라이스 소개를 참조하세요.

멀티슬라이스를 사용할 때는 큐에 추가된 리소스를 요청할 때 다음 추가 매개변수를 지정합니다.

export NODE_COUNT=node_count
export NODE_PREFIX=your_tpu_prefix # Optional

Create Node API를 사용하여 Cloud TPU 만들기

Create Node API를 사용하여 TPU를 만들려면 gcloud compute tpus tpu-vm create 명령어를 실행합니다.

TPU VM

TensorCore 또는 TPU 칩을 기준으로 TPU 구성을 지정할 수 있습니다. 자세한 내용은 시스템 아키텍처에서 사용 중인 TPU 버전 섹션을 참조하세요.

다음 명령어는 TensorCore 기반 구성을 사용합니다.

$ gcloud compute tpus tpu-vm create tpu-name \
  --zone=us-central2-b \
  --accelerator-type=v4-8 \
  --version=tpu-software-version

명령어 플래그 설명

zone
Cloud TPU를 만들려는 영역입니다.
accelerator-type
가속기 유형은 만들려는 Cloud TPU의 버전과 크기를 지정합니다. 각 TPU 버전에서 지원되는 가속기 유형에 대한 자세한 내용은 TPU 버전을 참조하세요.
version
TPU 소프트웨어 버전입니다.
shielded-secure-boot(선택사항)
보안 부팅이 사용 설정된 상태로 TPU 인스턴스가 생성되도록 지정합니다. 그러면 보안 VM 인스턴스가 암시적으로 생성됩니다. 보안 VM이란 무엇인가요? 를 참조하세요.

다음 명령어는 특정 토폴로지로 TPU를 만듭니다.

  $ gcloud compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --type=v4 \
    --topology=2x2x1 \
    --version=tpu-software-version

필수 플래그

tpu-name
만들려는 TPU VM의 이름입니다.
zone
Cloud TPU를 만들려는 영역입니다.
type
생성할 Cloud TPU의 버전입니다. TPU 버전에 대한 자세한 내용은 TPU 버전을 참조하세요.
topology
지원되는 토폴로지는 토폴로지 섹션을 참조하세요.
version
사용할 TPU 소프트웨어 버전입니다. 자세한 내용은 TPU 소프트웨어 버전을 참조하세요.

지원되는 TPU 유형 및 토폴로지에 대한 자세한 내용은 TPU 버전을 참조하세요.

TPU 노드

$ gcloud compute tpus execution-groups create --name=tpu-name \
  --zone=us-central1-a \
  --tf-version=2.12.0 \
  --machine-type=n1-standard-1 \
  --accelerator-type=v3-8

명령어 플래그 설명

zone
Cloud TPU를 생성하려는 영역입니다.

tf-version
gcloud 명령어가 VM에 설치하는 TensorFlow 버전입니다.

machine-type
생성할 Compute Engine VM의 머신 유형입니다.

accelerator-type
가속기 유형은 만들려는 Cloud TPU의 버전과 크기를 지정합니다. 각 TPU 버전에서 지원되는 가속기 유형에 대한 자세한 내용은 TPU 버전을 참조하세요.

Google Cloud 콘솔에서 Cloud TPU 만들기

  1. Google Cloud 콘솔로 이동합니다.
  2. 왼쪽 탐색 메뉴에서 Compute Engine > TPU를 선택합니다.
  3. TPU 노드 만들기를 클릭합니다.
  4. 이름 상자에 TPU 인스턴스 이름을 입력합니다.
  5. 영역 상자에서 TPU를 만들 영역을 선택합니다.
  6. TPU 설정에서 TPU VM 아키텍처 또는 TPU 노드 아키텍처를 선택합니다. TPU 구성은 TPU를 TPU VM 또는 TPU 노드로 만들지를 결정합니다. 자세한 내용은 시스템 아키텍처를 참조하세요.
  7. TPU 유형에서 만들려는 TPU 유형을 선택합니다.
  8. TPU 소프트웨어 버전에서 소프트웨어 버전을 선택합니다. Cloud TPU VM을 만들 때 TPU 소프트웨어 버전은 설치할 TPU 런타임 버전을 지정합니다. Cloud TPU 노드를 만들 때 TPU 소프트웨어 버전을 사용하면 노드의 VM에 설치된 ML 프레임워크를 선택할 수 있습니다. 다른 설정은 필요하지 않습니다. 자세한 내용은 지원되는 모델을 참조하세요.
  9. 만들기를 클릭하여 리소스를 만듭니다.

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

다음 명령어는 curl을 사용하여 TPU를 만듭니다.

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

필수 입력란

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

시작 스크립트 실행

TPU VM을 만들 때 --metadata startup-script 매개변수를 지정하여 각 TPU VM에서 시작 스크립트를 실행할 수 있습니다. 다음 명령어는 시작 스크립트를 사용하여 TPU VM을 만듭니다.

$ gcloud compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --metadata startup-script='#! /bin/bash
      pip3 install numpy
      EOF'

Cloud TPU에 연결

SSH를 사용하여 TPU에 연결할 수 있습니다.

TPU VM

TPU VM을 사용할 때 SSH를 사용하여 TPU VM에 명시적으로 연결해야 합니다.

  • gcloud compute tpus tpu-vm ssh 명령어를 사용하여 SSH를 통해 TPU VM에 연결합니다.

    칩이 4개를 초과하는 슬라이스를 요청하면 Cloud TPU는 4개의 칩이 포함된 각 그룹에 대해 TPU VM을 만듭니다.

    바이너리를 설치하거나 코드를 실행하려면 tpu-vm ssh command를 사용하여 각 TPU VM에 연결합니다.

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}
    

    특정 TPU VM에 액세스하거나 SSH를 사용하여 각 TPU VM에 바이너리를 설치하려면 0부터 시작하는 색인을 따르는 --worker 플래그를 사용합니다.

    gcloud compute tpus tpu-vm ssh ${TPU_NAME} --worker=1
    

    TPU VM이 2개 이상 있으면 --worker=all 플래그와 --command 플래그를 사용하여 모든 TPU VM에서 동시에 명령어를 실행합니다. 예를 들면 다음과 같습니다.

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}  --project ${PROJECT_ID} \
    --zone  ${ZONE} \
    --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'
    

    멀티슬라이스의 경우 열거형 tpu-name을 사용하여 단일 VM에서 명령어를 실행하거나 --node=all, --worker=all, --command 플래그를 사용할 수 있습니다. 선택사항인 --batch-size 필드를 사용하여 멀티슬라이스의 모든 슬라이스의 모든 TPU VM에서 명령어를 실행합니다.

    gcloud compute tpus queued-resources ssh ${QUEUED_RESOURCE_ID} \
    --project ${PROJECT_ID} --zone ${ZONE} --node=all --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html' --batch-size=4
    
    $ gcloud compute tpus tpu-vm ssh tpu-name --zone=zone
  • 다음을 수행하여 브라우저에서 SSH를 통해 연결합니다.

    1. Google Cloud 콘솔에서 TPU 페이지로 이동합니다.

      TPU로 이동

    2. TPU VM 목록에서 연결할 TPU VM의 행에 있는 SSH를 클릭합니다.

TPU 노드

기본적으로 TPU 노드를 만드는 데 사용하는 gcloud 명령어는 자동으로 TPU 노드에서 SSH를 통해 연결하려고 합니다. TPU 노드를 사용 중이고 gcloud 명령어를 사용하여 Compute Engine 인스턴스에 연결되지 않은 경우에는 다음 명령어를 실행하여 연결할 수 있습니다.

$ gcloud compute ssh tpu-name \
  --zone=zone

TPU VM이 생성된 후 SSH를 사용하여 TPU VM에 연결하고 다음 명령어를 실행하여 시작 스크립트에서 로그를 볼 수 있습니다.

$ cat /var/log/syslog | grep startup-script

Cloud TPU 리소스 나열

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

gcloud를 사용하여 Cloud TPU 리소스 나열

사용하는 명령어는 TPU VM 또는 TPU 노드를 사용하는지에 따라 다릅니다. 자세한 내용은 시스템 아키텍처를 참조하세요.

TPU VM

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

TPU 노드

$ gcloud compute tpus execution-groups list --zone=zone

이 명령어는 지정된 영역의 Cloud TPU 리소스를 나열합니다. 현재 설정된 리소스가 없으면 출력에서 VM과 TPU가 대시(-)로만 표시됩니다. 하나의 리소스는 활성 상태이고 다른 리소스는 활성 상태가 아닌 경우 상태가 비정상이라는 메시지가 표시됩니다. 이러한 경우 실행 중이 아닌 리소스를 시작하거나 다시 시작해야 합니다.

Google Cloud 콘솔에서 Cloud TPU 리소스 나열

  1. Google Cloud 콘솔로 이동합니다.

  2. 왼쪽 탐색 메뉴에서 Compute Engine > TPU를 선택합니다. 콘솔에 TPU 페이지가 표시됩니다.

Cloud TPU에 대한 정보 검색

지정된 Cloud TPU에 대한 정보를 검색할 수 있습니다.

gcloud를 사용하여 Cloud TPU에 대한 정보 검색

사용하는 명령어는 TPU VM 또는 TPU 노드를 사용하는지에 따라 다릅니다. 자세한 내용은 시스템 아키텍처를 참조하세요.

TPU VM

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

TPU 노드

$ gcloud compute tpus execution-groups describe tpu-name \
  --zone=zone

Google Cloud 콘솔에서 Cloud TPU에 대한 정보 검색

  1. Google Cloud 콘솔로 이동합니다.
  2. 왼쪽 탐색 메뉴에서 Compute Engine > TPU를 선택합니다. 콘솔에 TPU 페이지가 표시됩니다.
  3. Cloud TPU 이름을 클릭하면 Cloud TPU 세부정보 페이지가 표시됩니다.

Cloud TPU 리소스 중지

VM 구성과 소프트웨어의 손실 없이 단일 Cloud TPU를 중지하여 요금 청구를 중지할 수 있습니다. 대기열에 추가된 리소스 API를 통해 할당된 TPU Pod 또는 TPU 중지는 지원되지 않습니다. 대기열에 추가된 리소스 API를 통해 할당된 TPU에 대한 요금이 청구되지 않도록 하려면 TPU를 삭제해야 합니다.

gcloud를 사용하여 Cloud TPU 중지

Cloud TPU 중지에 사용하는 명령어는 TPU VM 또는 TPU 노드를 사용하고 있는지에 따라 다릅니다. 자세한 내용은 시스템 아키텍처를 참조하세요.

TPU VM

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

TPU 노드

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

Google Cloud 콘솔에서 Cloud TPU 중지

  1. Google Cloud 콘솔로 이동합니다.

  2. 왼쪽 탐색 메뉴에서 Compute Engine > TPU를 선택합니다. 콘솔에 TPU 페이지가 표시됩니다.

  3. Cloud TPU 옆에 있는 체크박스를 선택하고 중지를 클릭합니다.

Cloud TPU 리소스 시작

중지된 Cloud TPU를 시작할 수 있습니다.

gcloud를 사용하여 Cloud TPU 시작

중지된 Cloud TPU를 시작하여 사용을 재개할 수 있습니다.

중지된 Cloud TPU를 시작하는 데 사용하는 명령어는 TPU VM 또는 TPU 노드를 사용하고 있는지에 따라 다릅니다. 자세한 내용은 시스템 아키텍처를 참조하세요.

TPU VM

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

TPU 노드

$ gcloud compute tpus start tpu-name --zone=zone

Google Cloud 콘솔에서 Cloud TPU 시작

  1. Google Cloud 콘솔로 이동합니다.

  2. 왼쪽 탐색 메뉴에서 Compute Engine > TPU를 선택합니다. 콘솔에 TPU 페이지가 표시됩니다.

  3. Cloud TPU 옆에 있는 체크박스를 선택하고 시작을 클릭합니다.

TPU VM 삭제

사용하는 명령어는 TPU VM과 TPU 노드 중 무엇을 사용하는지에 따라 다릅니다. 자세한 내용은 시스템 아키텍처를 참조하세요.

TPU VM

세션이 끝나면 TPU VM 슬라이스를 삭제합니다.

 gcloud compute tpus tpu-vm delete ${TPU_NAME} --project=${PROJECT_ID}
 --zone=${ZONE} --quiet

명령어 플래그 설명

zone
Cloud TPU를 삭제하려는 영역입니다.

TPU 노드

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

명령어 플래그 설명

zone
Cloud TPU를 삭제하려는 영역입니다.

Google Cloud 콘솔에서 Cloud TPU 삭제

  1. Google Cloud 콘솔로 이동합니다.

  2. 왼쪽 탐색 메뉴에서 Compute Engine > TPU를 선택합니다. 콘솔에 TPU 페이지가 표시됩니다.

  3. Cloud TPU 옆에 있는 체크박스를 선택하고 삭제를 클릭합니다.

고급 구성

커스텀 네트워크 리소스

TPU를 만들 때 네트워크 또는 서브네트워크를 지정할 수 있습니다. gcloud 명령어 또는 curl 호출을 제출하여 이 작업을 수행할 수 있습니다.

gcloud CLI에서 네트워크 또는 서브네트워크를 지정하려면 다음을 사용하세요.

--network [NETWORK] --subnetwork [SUBNETWORK]

curl 호출에서 네트워크 또는 서브네트워크를 지정하려면 다음을 사용하세요.

network_config: {network: '[NETWORK]', subnet: '[SUBNETWORK]', enable_external_ips: true}

네트워크

원하는 경우 TPU에 사용할 네트워크를 지정할 수 있습니다. 입력하지 않으면 default 네트워크가 사용됩니다.

유효한 네트워크 형식:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-##}/global/networks/{network}
projects/{proj-id}/global/networks/{network}
projects/{proj-##}/global/networks/{network}
global/networks/{network}
{network}

서브네트워크

특정 서브네트워크를 사용하도록 서브네트워크를 지정할 수 있습니다. 지정된 서브네트워크는 TPU가 실행되는 영역과 동일한 리전에 있어야 합니다.

올바른 형식:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
regions/{region}/subnetworks/{subnetwork}
{subnetwork}

비공개 Google 액세스

TPU VM에 SSH로 연결하려면 TPU VM에 대한 액세스 구성을 추가하거나 TPU VM이 연결된 서브네트워크에 비공개 Google 액세스를 사용 설정해야 합니다.

액세스 구성을 추가하려면 enable_external_ips를 설정해야 합니다. TPU를 만들enable_external_ips가 기본적으로 설정됩니다. 선택 해제하려면 다음 명령어를 지정하세요.

--internal-ips

또는 curl 호출을 사용합니다.

network_config: {enable_external_ips: true}

비공개 Google 액세스를 구성한 후 SSH를 통해 VM에 연결합니다.

커스텀 서비스 계정

각 TPU VM에는 사용자를 대신하여 API 요청을 수행하는 데 사용되는 서비스 계정이 연결되어 있습니다. TPU VM은 이 서비스 계정을 사용하여 Cloud TPU API를 호출하고 Cloud Storage 및 기타 서비스에 액세스합니다. 기본적으로 TPU VM은 기본 Compute Engine 서비스 계정을 사용합니다.

TPU VM을 만들 때 --service-account 플래그를 사용하여 커스텀 서비스 계정을 지정할 수 있습니다. 서비스 계정은 TPU VM을 만드는 동일한 Google Cloud 프로젝트에 정의되어야 합니다. TPU VM에 사용되는 커스텀 서비스 계정에는 Cloud TPU API를 호출하기 위한 TPU 뷰어 역할이 있어야 합니다. TPU VM에서 실행 중인 코드가 다른 Google Cloud 서비스를 호출하는 경우 해당 서비스에 액세스하는 데 필요한 역할이 있어야 합니다.

TPU를 만들 때는 --service-account 플래그를 사용하여 커스텀 서비스 계정을 지정하도록 선택할 수 있습니다. 서비스 계정에 대한 자세한 내용은 서비스 계정을 참조하세요.

커스텀 서비스 계정을 지정하려면 다음 명령어를 사용합니다.

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

$ gcloud compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --service-account=your-service-account

curl를 사용하여 TPU VM 만들기

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  service_account: {email: 'your-service-account'} \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

커스텀 서비스 계정을 사용하려면 Google Cloud Storage 버킷에 대한 서비스 계정을 승인해야 합니다. 자세한 내용은 Cloud Storage 버킷에 연결을 참조하세요.

커스텀 VM SSH 메서드

  1. SSH용 방화벽을 설정합니다.

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

    $ gcloud CLI compute firewall-rules create \
    --network=network allow-ssh \
    --allow=tcp:22
    
  2. SSH를 통해 TPU VM에 연결합니다.

    $ gcloud compute tpus tpu-vm ssh tpu-name \
    --zone=us-central2-b \
    --project=project-id
    

    필수 입력란

    • tpu-name: TPU 노드의 이름입니다.
    • zone: TPU 노드의 위치입니다. 현재 us-central2-b만 지원됩니다.
    • project-id: 위에서 만든 프로젝트입니다.

    필드 선택 사항 목록은 gcloud API 문서를 참조하세요.