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 ノードを使用する前に、限定公開サービス アクセス接続を確立する必要があります。
次の Google Cloud CLI コマンドを使用して、Service Networking API を有効にします。この作業は Cloud Platform プロジェクトごとに 1 回だけ行う必要があります。
gcloud services enable servicenetworking.googleapis.com
サービス ネットワーキングが使用する予約済みのアドレス範囲を割り当てます。
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
$ gcloud compute networks peerings list --network=network-name
VPC ピアリングを削除します。
$ gcloud compute networks peerings delete peering-name --network=network-name