공유 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 노드를 사용하려면 먼저 비공개 서비스 액세스 연결을 설정해야 합니다.
다음 Google Cloud CLI 명령어를 사용하여 Service Networking API를 사용 설정합니다. 이 작업을 Cloud Platform 프로젝트마다 한 번만 수행해야 합니다.
gcloud services enable servicenetworking.googleapis.com
서비스 네트워킹에서 사용할 예약된 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
비공개 서비스 액세스 연결을 구축합니다.
$ gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \ --ranges=sn-range-1 \ --network=network-name
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
VPC 피어링을 삭제합니다.
$ gcloud compute networks peerings delete peering-name --network=network-name