Connetti una TPU a una rete VPC condivisa

La modalità di connessione di un host TPU a un VPC condiviso dipende dall'architettura TPU (VM TPU o nodo TPU) utilizzata. Per ulteriori informazioni sulle architetture TPU, consulta Architettura del sistema TPU.

Connetti una VM TPU a una rete VPC condivisa

Configura un progetto host VPC

Quando utilizzi l'architettura della VM TPU, devi concedere all'account di servizio TPU nel progetto di servizio le autorizzazioni per gestire le risorse nel progetto host. A tale scopo, devi utilizzare il ruolo "Agente VPC condiviso TPU" (roles/tpu.xpnAgent). Esegui i seguenti comandi gcloud per concedere l'associazione di questo ruolo.

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

Crea una VM TPU connessa a una rete VPC condivisa

Determina prima di tutto quali tipi e versioni di acceleratori sono disponibili nella zona

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

Quando crei la TPU, connetti una VM TPU a una rete VPC condivisa. Specifica il VPC condiviso utilizzando il tag --network:

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

Puoi verificare che la VM TPU sia connessa al VPC condiviso utilizzando il comando gcloud compute tpus tpu-vm describe:

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

La risposta include la rete a cui è collegata la VM TPU:

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

Elimina la VM TPU

Al termine dell'operazione, assicurati di eliminare la VM TPU.

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

Connessione di un nodo TPU a un VPC condiviso

Configura l'accesso privato ai servizi

Prima di utilizzare i nodi TPU con i VPC condivisi, devi stabilire una connessione di accesso privato ai servizi.

  1. Abilita l'API Service Networking utilizzando il seguente comando Google Cloud CLI. Questa operazione deve essere eseguita una sola volta per ogni progetto della piattaforma Cloud.

    gcloud services enable servicenetworking.googleapis.com
    
  2. Assegna un intervallo di indirizzi riservati per l'utilizzo da parte di Service Networking. Il valore prefix-length deve essere massimo 24. Ad esempio:

    gcloud compute addresses create sn-range-1 --global \
    --addresses=10.110.0.0 \
    --prefix-length=16 \
    --purpose=VPC_PEERING \
    --network=network-name
  3. Stabilisci una connessione di accesso privato ai servizi.

    $ gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \
    --ranges=sn-range-1 \
    --network=network-name
    
  4. Verifica che il peering VPC sia stato creato. Il seguente comando elenca tutti i peering VPC per la rete specificata.

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

Connetti un nodo TPU a una rete VPC condivisa

Quando crei la TPU, connetti un nodo TPU a una rete VPC condivisa. Specifica il VPC condiviso utilizzando il tag --network:

$ 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

Recuperare informazioni su uno specifico nodo TPU

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

La risposta contiene le seguenti informazioni:

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

Elimina il nodo TPU

Al termine, assicurati di eliminare il nodo TPU.

$ gcloud compute tpus execution-groups delete tpu-name \
  --zone=zone
### Elimina il peering VPC Una connessione in peering può essere disconnessa utilizzando l'API Compute Network. Queste chiamate devono essere effettuate nei progetti host del VPC condiviso. 1. Elenca tutti i peering VPC per trovare il nome del peering da eliminare.
   $ gcloud compute networks peerings list --network=network-name
   
  1. Elimina un peering VPC.

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