Cloud TPU へのネットワーキングとアクセスを構成する

このページでは、Cloud TPU のカスタム ネットワークとアクセス構成を設定する方法について説明します。以下の内容が含まれます。

  • カスタム ネットワークとサブネットワークの指定
  • 内部 IP アドレスの指定
  • TPU への SSH アクセスの有効化
  • カスタム サービス アカウントの TPU への接続
  • カスタム SSH メソッドの有効化

前提条件

これらの手順を実行する前に、Google Cloud CLI をインストールし、Google Cloud プロジェクトを作成して、Cloud TPU API を有効にする必要があります。手順については、Cloud TPU 環境を設定するをご覧ください。

カスタム ネットワークとサブネットワークを指定する

必要に応じて、TPU に使用するネットワークとサブネットワークを指定できます。ネットワークが指定されていない場合、TPU は default ネットワークに配置されます。サブネットワークは、TPU を実行するゾーンと同じリージョンに存在する必要があります。

  1. 次のいずれかの有効な形式に一致するネットワークを作成します。

    • https://www.googleapis.com/compute/{version}/projects/{proj-id}/global/networks/{network}
    • compute/{version}/projects/{proj-id}/global/networks/{network}
    • compute/{version}/projects/{proj-##}/global/networks/{network}
    • projects/{proj-id}/global/networks/{network}
    • projects/{proj-##}/global/networks/{network}
    • global/networks/{network}
    • {network}

    詳細については、VPC ネットワークの作成と管理をご覧ください。

  2. 次のいずれかの有効な形式に一致するサブネットワークを作成します。

    • https://www.googleapis.com/compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
    • projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
    • projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
    • regions/{region}/subnetworks/{subnetwork}
    • {subnetwork}

    詳細については、VPC ネットワークの作成と管理をご覧ください。

  3. カスタム ネットワークとサブネットワークを指定して TPU を作成します。

    gcloud

    gcloud CLI を使用してネットワークとサブネットワークを指定するには、作成リクエストに --network フラグと --subnetwork フラグを追加します。

        $ gcloud compute tpus tpu-vm create TPU_NAME \
            --zone=us-central2-b \
            --accelerator-type=v4-8 \
            --version=TPU_SOFTWARE_VERSION
            --network=NETWORK
            --subnetwork=SUBNETWORK

    curl

    curl 呼び出しでネットワークとサブネットワークを指定するには、network フィールドと subnetwork フィールドをリクエスト本文に追加します。

        $ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
            runtime_version:'tpu-vm-tf-2.18.0-pjrt', \
            network_config: {network: 'NETWORK', subnetwork: 'SUBNETWORK', enable_external_ips: true}, \
            shielded_instance_config: { enable_secure_boot: true }}" \
            https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

内部 IP アドレスを有効にする

TPU を作成すると、デフォルトで TPU VM ごとに外部 IP アドレスが作成されます。

代わりに TPU VM の内部 IP アドレスを作成する場合は、TPU の作成時に --internal-ips フラグを使用します。

gcloud

キューに入れられたリソースを使用している場合:

gcloud compute tpus queued-resources create your-queued-resource-id \
  --node-id your-node-id \
  --project your-project \
  --zone us-central2-b \
  --accelerator-type v4-8 \
  --runtime-version tpu_software_version \
  --internal-ips

Create Node API を使用している場合:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --zone=us-central2-b \
    --accelerator-type=v4-8 \
    --version=tpu_software_version \
    --internal-ips

curl

リクエスト本文で enable_external_ips フィールドを false に設定します。

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
    runtime_version:'tpu-vm-tf-2.18.0-pjrt', \
    network_config: {enable_external_ips: false}, \
    shielded_instance_config: { enable_secure_boot: true }}" \
    https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

カスタム SSH メソッドを有効にする

SSH を使用して TPU に接続するには、TPU の外部 IP アドレスを有効にするか、TPU VM が接続されているサブネットワークの限定公開の Google アクセスを有効にする必要があります。

限定公開の Google アクセスを有効にする

外部 IP アドレスのない TPU は、限定公開の Google アクセスを使用して Google API とサービスにアクセスできます。限定公開の Google アクセスを有効にする方法について詳しくは、限定公開の Google アクセスを構成するをご覧ください。

限定公開の Google アクセスを構成したら、SSH を使用して VM に接続します。

カスタム サービス アカウントを接続する

各 TPU VM には、ユーザーに代わって API リクエストを行うために使用するサービス アカウントが関連付けられています。TPU VM は、このサービス アカウントを使用して Cloud TPU API を呼び出し、Cloud Storage やその他のサービスにアクセスします。デフォルトでは、TPU VM はデフォルトの Compute Engine サービス アカウントを使用します。

サービス アカウントは、TPU VM を作成する Google Cloud プロジェクトと同じプロジェクトで定義する必要があります。TPU VM に使用されるカスタム サービス アカウントには、Cloud TPU API を呼び出すための TPU 閲覧者のロールが必要です。TPU VM で実行されるコードが他の Google Cloud サービスを呼び出す場合は、これらのサービスにアクセスするために必要なロールが必要です。

サービス アカウントの詳細については、サービス アカウントをご覧ください。

次のコマンドを使用して、カスタム サービス アカウントを指定します。

gcloud

TPU を作成する場合は、--service-account フラグを使用します。

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --zone=us-central2-b \
    --accelerator-type=TPU_TYPE \
    --version=tpu-vm-tf-2.18.0-pjrt \
    --service-account=SERVICE_ACCOUNT

curl

リクエスト本文で service_account フィールドを設定します。

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
    runtime_version:'tpu-vm-tf-2.18.0-pjrt', \
    network_config: {enable_external_ips: true}, \
    shielded_instance_config: { enable_secure_boot: true }}" \
    service_account: {email: 'SERVICE_ACCOUNT'} \
    https://tpu.googleapis.com/v2/projects/PROJECT_ID/locations/us-central2-b/nodes?node_id=TPU_NAME

カスタム SSH メソッドを有効にする

デフォルトのネットワークでは、すべての TPU VM への SSH アクセスが許可されます。デフォルト以外のネットワークを使用する場合や、デフォルトのネットワーク設定を変更する場合は、ファイアウォール ルールを追加して SSH アクセスを明示的に有効にする必要があります。

$ gcloud compute tpus tpu-vm compute firewall-rules create \
    --network=NETWORK allow-ssh \
    --allow=tcp:22