Connecter un TPU à un réseau VPC partagé

La manière dont vous connectez un hôte TPU à un VPC partagé dépend de l'architecture TPU (VM TPU ou nœud TPU) que vous utilisez. Pour en savoir plus sur les architectures TPU, consultez la page Architecture du système TPU.

Connecter une VM TPU à un réseau VPC partagé

Configurer un projet hôte de VPC

Lorsque vous utilisez l'architecture de VM TPU, vous devez accorder au compte de service TPU de votre projet de service des autorisations pour gérer les ressources du projet hôte. Pour ce faire, utilisez le rôle "Agent VPC partagé TPU" (roles/tpu.xpnAgent). Exécutez les commandes gcloud suivantes pour accorder cette liaison de rôle.

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

Créer une VM TPU connectée à un réseau VPC partagé

Commencez par déterminer les types et versions d'accélérateurs disponibles dans la zone.

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

Vous connectez une VM TPU à un réseau VPC partagé lorsque vous créez votre TPU. Spécifiez votre VPC partagé à l'aide du 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

Vous pouvez vérifier que votre VM TPU est connectée à votre VPC partagé à l'aide de la commande gcloud compute tpus tpu-vm describe:

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

La réponse inclut le réseau auquel votre VM TPU est associée:

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

Supprimer la VM TPU

Lorsque vous n'avez plus besoin de la VM TPU, veillez à la supprimer.

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

Connecter un nœud TPU à un VPC partagé

Configurer l'accès aux services privés

Avant d'utiliser des nœuds TPU avec des VPC partagés, vous devez établir une connexion d'accès privée aux services.

  1. Activez l'API Service Networking à l'aide de la commande Google Cloud CLI suivante. Cette opération ne doit être effectuée qu'une seule fois par projet Cloud Platform.

    gcloud services enable servicenetworking.googleapis.com
    
  2. Allouez une plage d'adresses réservée à utiliser par Service Networking. La valeur de prefix-length doit être inférieure ou égale à 24. Exemple :

    gcloud compute addresses create sn-range-1 --global \
    --addresses=10.110.0.0 \
    --prefix-length=16 \
    --purpose=VPC_PEERING \
    --network=network-name
  3. Établissez une connexion d'accès aux services privés.

    $ gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \
    --ranges=sn-range-1 \
    --network=network-name
    
  4. Vérifiez que l'appairage de VPC a bien été créé. La commande suivante répertorie tous les appairages de VPC pour le réseau spécifié.

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

Connecter un nœud TPU à un réseau VPC partagé

Vous connectez un nœud TPU à un réseau VPC partagé lorsque vous créez votre TPU. Spécifiez votre VPC partagé à l'aide du 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

Récupérer des informations sur un nœud TPU spécifique

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

La réponse contient les informations suivantes:

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

Supprimer le nœud TPU

Lorsque vous n'avez plus besoin du nœud TPU, veillez à le supprimer.

$ gcloud compute tpus execution-groups delete tpu-name \
  --zone=zone
### Supprimez l'appairage de VPC Une connexion d'appairage peut être déconnectée à l'aide de l'API Compute Network. Ces appels doivent être effectués dans des projets hôtes de VPC partagé. 1. Répertoriez tous les appairages VPC pour trouver le nom de l'appairage à supprimer.
   $ gcloud compute networks peerings list --network=network-name
   
  1. Supprimez un appairage de VPC.

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