공유 VPC 네트워크에 TPU 연결

TPU 호스트를 공유 VPC에 연결하는 방법은 사용 중인 TPU 아키텍처(TPU VM 또는 TPU 노드)에 따라 달라집니다. TPU 아키텍처에 대한 자세한 내용은 TPU 시스템 아키텍처를 참조하세요.

TPU VM을 공유 VPC 네트워크에 연결

VPC 호스트 프로젝트 구성

TPU VM 아키텍처를 사용하는 경우 서비스 프로젝트의 TPU 서비스 계정에 호스트 프로젝트의 리소스를 관리할 수 있는 권한을 부여해야 합니다. 'TPU 공유 VPC 에이전트'(roles/tpu.xpnAgent) 역할을 사용하여 이 작업을 수행합니다. 이 역할 바인딩을 부여하려면 다음 gcloud 명령어를 실행합니다.

gcloud projects add-iam-policy-binding host-project-id \
--member=serviceAccount:service-your-service-project-number@gcp-sa-tpu.iam.gserviceaccount.com \
--role=roles/tpu.xpnAgent

공유 VPC 네트워크에 연결된 TPU VM 만들기

먼저 영역에서 사용할 수 있는 가속기 유형 및 버전 결정

gcloud compute tpus accelerator-types list --zone zone
gcloud compute tpus versions list --zone zone

TPU를 만들 때 공유 VPC 네트워크에 TPU VM을 연결합니다. --network 태그를 사용하여 공유 VPC를 지정합니다.

gcloud compute tpus tpu-vm create tpu-name \
--zone zone \
--accelerator-type accelerator-type \
--network projects/host-project-id/global/networks/host-network \
--version runtime-version \
--project your-service-project-id

gcloud compute tpus tpu-vm describe 명령어를 사용하여 TPU VM이 공유 VPC에 연결되어 있는지 확인할 수 있습니다.

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

응답에는 TPU VM이 연결된 네트워크가 포함됩니다.

acceleratorType: v3-8
apiVersion: V2
cidrBlock: 10.128.0.0/20
createTime: '2022-06-17T21:32:13.859274143Z'
health: HEALTHY
id: '0000000000000000000'
name: projects/my-project/locations/us-central1-b/nodes/my-tpu
networkConfig:
  enableExternalIps: true
  network: projects/my-project/global/networks/default
  subnetwork: projects/my-project/regions/us-central1/subnetworks/default
networkEndpoints:
- accessConfig:
    externalIp: 000.000.000.000
  ipAddress: 10.128.0.104
  port: 8470
runtimeVersion: tpu-vm-tf-2.8.0
schedulingConfig: {}
serviceAccount:
  email: 00000000000-compute@developer.gserviceaccount.com
  scope:
  - https://www.googleapis.com/auth/devstorage.read_write
  - https://www.googleapis.com/auth/logging.write
  - https://www.googleapis.com/auth/service.management
  - https://www.googleapis.com/auth/servicecontrol
  - https://www.googleapis.com/auth/cloud-platform
  - https://www.googleapis.com/auth/pubsub
shieldedInstanceConfig: {}
state: READY

TPU VM 삭제

TPU VM 사용을 마쳤으면 이를 삭제해야 합니다.

gcloud compute tpus tpu-vm delete tpu-name \
--zone zone \

공유 VPC에 TPU 노드 연결

비공개 서비스 액세스 구성

공유 VPC와 함께 TPU 노드를 사용하려면 먼저 비공개 서비스 액세스 연결을 설정해야 합니다.

  1. 다음 Google Cloud CLI 명령어를 사용하여 Service Networking API를 사용 설정합니다. 이 작업을 Cloud Platform 프로젝트마다 한 번만 수행해야 합니다.

    gcloud services enable servicenetworking.googleapis.com
  2. 서비스 네트워킹에서 사용할 예약된 IP 주소 범위를 할당합니다. prefix-length는 24 이하여야 합니다. 예를 들면 다음과 같습니다.

    gcloud compute addresses create sn-range-1 --global \
    --addresses=10.110.0.0 \
    --prefix-length=16 \
    --purpose=VPC_PEERING \
    --network=network-name
  3. 비공개 서비스 액세스 연결을 구축합니다.

    $ gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \
    --ranges=sn-range-1 \
    --network=network-name
  4. VPC 피어링이 생성되었는지 확인합니다. 다음 명령어는 지정된 네트워크의 모든 VPC 피어링을 나열합니다.

    gcloud services vpc-peerings list --network=network-name

TPU 노드를 공유 VPC 네트워크에 연결

TPU를 만들 때 TPU 노드를 공유 VPC 네트워크에 연결합니다. --network 태그를 사용하여 공유 VPC를 지정합니다.

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

특정 TPU 노드에 대한 정보 검색

$ gcloud compute tpus describe tpu-name --zone zone

응답에는 다음 정보가 포함됩니다.

acceleratorType: v3-8
apiVersion: V1
cidrBlock: 00.0.000.000/29
createTime: '2022-11-30T18:59:20.655858097Z'
health: HEALTHY
ipAddress: 00.000.0.000
name: projects/ml-writers/locations/us-central1-a/nodes/mikegre-vcp
network: global/networks/mikegre-vpc
networkEndpoints:
- ipAddress: 00.0.000.000
  port: 8470
port: '8470'
schedulingConfig: {}
serviceAccount: service-00000000000@cloud-tpu.iam.gserviceaccount.com
state: READY
tensorflowVersion: 2.10.0

TPU 노드 삭제

TPU 노드 작업을 마쳤으면 이를 삭제해야 합니다.

$ gcloud compute tpus execution-groups delete tpu-name \
  --zone=zone
### VPC 피어링 삭제 컴퓨팅 네트워킹 API를 사용하여 피어링 연결을 해제할 수 있습니다. 이러한 호출은 공유 VPC 호스트 프로젝트에서 수행되어야 합니다. 1. 모든 VPC 피어링을 나열하여 삭제할 피어링 이름을 찾습니다.
   $ gcloud compute networks peerings list --network=network-name
   
  1. VPC 피어링을 삭제합니다.

    $ gcloud compute networks peerings delete peering-name --network=network-name