TPU を共有 VPC ネットワークに接続する

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 を作成するときに、TPU VM を共有 VPC ネットワークに接続します。--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 \

TPU ノードを共有 VPC に接続する

プライベート サービス アクセスを構成する

共有 VPC で TPU ノードを使用する前に、限定公開サービス アクセス接続を確立する必要があります。

  1. 次の Google Cloud CLI コマンドを使用して、Service Networking API を有効にします。この作業は Cloud Platform プロジェクトごとに 1 回だけ行う必要があります。

    gcloud services enable servicenetworking.googleapis.com
    
  2. サービス ネットワーキングが使用する予約済みのアドレス範囲を割り当てます。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 ピアリングを削除する compute networking API を使用してピアリング接続を切断できます。これらの呼び出しは、共有 VPC ホスト プロジェクトで実行する必要があります。1. すべての VPC ピアリングを一覧表示して、削除するピアリングの名前を確認します。
   $ gcloud compute networks peerings list --network=network-name
   
  1. VPC ピアリングを削除します。

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