Conecta un nodo TPU a una red de VPC compartida
La forma de conectar un host de TPU a una VPC compartida depende de la arquitectura de TPU (VM de TPU o nodo TPU) que uses. Para obtener más información sobre las arquitecturas de TPU, consulta Arquitectura del sistema de TPU.
Conecta una VM de TPU a una red de VPC compartida
Configura un proyecto host de VPC
Cuando usas la arquitectura de VM de TPU, debes otorgar permisos a la cuenta de servicio de TPU en tu proyecto de servicio para administrar recursos en el proyecto host.
Para ello, usa la función “Agente de VPC compartida de TPU” (roles/tpu.xpnAgent
). Ejecuta los siguientes comandos de gcloud para otorgar esta vinculación de función.
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 de TPU conectada a una red de VPC compartida
Primero, determina qué tipos y aceleradores de aceleradores están disponibles en la zona
gcloud compute tpus accelerator-types list --zone zone
gcloud compute tpus versions list --zone zone
Conectarás una VM de TPU a una red de VPC compartida cuando crees tu TPU. Usa la etiqueta --network
para especificar la VPC compartida:
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
Puedes verificar que la VM de TPU esté conectada a la VPC compartida mediante el comando gcloud compute tpus tpu-vm describe
:
$ gcloud compute tpus tpu-vm describe tpu-name --zone zone
La respuesta incluye la red a la que está conectada la VM de 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
Borra la VM de TPU
Cuando termines de usar la VM de TPU, asegúrate de borrarla.
gcloud compute tpus tpu-vm delete tpu-name \ --zone zone \
Conecta un nodo TPU a una VPC compartida
Configura el acceso privado a los servicios
Antes de usar nodos TPU con VPC compartidas, debes establecer una conexión de acceso privado a servicios.
Habilita la API de Service Networking con el siguiente comando de Google Cloud CLI. Esto solo debe hacerse una vez por proyecto de Cloud Platform.
gcloud services enable servicenetworking.googleapis.com
Asigna un rango de direcciones reservado para que lo use Service Networking. El valor de
prefix-length
debe ser 24 o menos. Por ejemplo:gcloud compute addresses create sn-range-1 --global \ --addresses=10.110.0.0 \ --prefix-length=16 \ --purpose=VPC_PEERING \ --network=network-name
Establece una conexión de acceso a servicios privados
$ gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \ --ranges=sn-range-1 \ --network=network-name
Verifica que se haya creado el intercambio de tráfico de VPC. Con el siguiente comando, se enumeran todos los intercambios de tráfico de VPC para la red especificada.
gcloud services vpc-peerings list --network=network-name
Conecta un nodo TPU con una red de VPC compartida
Conectarás un nodo TPU a una red de VPC compartida cuando crees tu TPU. Usa la etiqueta --network
para especificar la VPC compartida:
$ 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
Recuperar información sobre un nodo TPU específico
$ gcloud compute tpus describe tpu-name --zone zone
La respuesta contiene la siguiente información:
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
Borra el nodo de TPU
Cuando termines de usar el nodo TPU, asegúrate de borrarlo.
$ gcloud compute tpus execution-groups delete tpu-name \
--zone=zone
### Borra el intercambio de tráfico de VPC
Se puede desconectar una conexión de intercambio de tráfico mediante la API de Compute Network.
Estas llamadas deben realizarse en proyectos host de VPC compartida.
1. Enumera todos los intercambios de tráfico de VPC para encontrar el nombre del intercambio de tráfico que se borrará.
$ gcloud compute networks peerings list --network=network-name
Borra un intercambio de tráfico de VPC.
$ gcloud compute networks peerings delete peering-name --network=network-name