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

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

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

前提条件

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

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

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

  1. VPC ネットワークを作成する の手順に沿って、ネットワークとサブネットワークを作成します。

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

    ネットワークとサブネットワークを指定するには、 次の例に示すネットワーキング フラグを含めます。gcloud compute instances create コマンドを実行するときに

    gcloud compute instances create TPU_NAME \
        --machine-type=MACHINE_TYPE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --zone=ZONE \
        --maintenance-policy=TERMINATE \
        --network=NETWORK_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=STACK_TYPE \
        --private-network-ip=INTERNAL_IPV4_ADDRESS \
        --address=EXTERNAL_IPV4_ADDRESS
    

    各プレースホルダを次のように置き換えます。

    • TPU_NAME: TPU VM の名前。
    • MACHINE_TYPE:TPU VM のマシンタイプ (例: ct6e-standard-8t)。
    • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
    • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
    • ZONE: TPU VM のゾーンus-central1-b など)。
    • NETWORK_NAME: 省略可。ネットワークの名前。 ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。ネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
    • SUBNET_NAME: インスタンスで使用するサブネットの名前。

      ネットワーク内のサブネットの一覧を表示するには、gcloud compute networks subnets list コマンドを使用します。

    • STACK_TYPE:省略可。ネットワーク インターフェースのネットワーキング スタックタイプ 。STACK_TYPE は、IPV4_ONLYIPV4_IPV6、または IPV6_ONLYプレビュー版)のいずれかにする必要があります。 デフォルト値は IPV4_ONLY です。

    • INTERNAL_IPV4_ADDRESS:省略可。コンピューティング インスタンスがターゲット サブネットで使用する内部 IPv4 アドレス。特定の IP アドレスが不要な場合は、このフラグを省略します。

      内部 IPv6 アドレスを指定するには、代わりにフラグ --internal-ipv6-address を使用します。

    • EXTERNAL_IPV4_ADDRESS:省略可。ネットワーク インターフェースで使用する静的 外部 IPv4 アドレス。 EXTERNAL_IPV4_ADDRESS は、次のいずれかに置き換えます。

      VM に外部 IP アドレスを設定しない場合は、--address フラグを --no-address フラグに置き換えます。

      外部 IPv6 アドレスを指定するには、代わりにフラグ --external-ipv6-address を使用します。

外部 IP アドレスと内部 IP アドレスについて

TPU VM インスタンスを作成すると、常に内部 IP アドレスが設定されます。 gcloud CLI を使用して TPU インスタンスを作成すると、外部 IP アドレスがデフォルトで生成されます。Compute Engine REST API(compute.googleapis.com)を使用して作成した場合、デフォルトでは外部 IP アドレスは割り当てられません。どちらの場合もデフォルトの動作を変更できます。

TPU VM を内部 IP アドレスのみを使用するように制限する理由は次のとおりです。

  • セキュリティの強化: 内部 IP アドレスには、 同じ VPC ネットワーク内のリソースからのみアクセスできます。これにより、 TPU VM への外部アクセスを制限してセキュリティを強化できます。これは、センシティブ データを使用する場合や、TPU VM へのアクセスをネットワーク内の特定のユーザーまたはシステムに制限する場合に特に重要です。
  • 費用の削減: 内部 IP アドレスを使用すると、外部 IP アドレスに関連する費用を回避できます。多くの TPU VM を使用する場合、相当な費用になる可能性があります。
  • ネットワーク パフォーマンスの向上: 内部 IP アドレスを使用すると、トラフィックが Google のネットワーク内にとどまり、公共のインターネットを経由するルーティングのオーバーヘッドを回避できるため、 ネットワーク パフォーマンスが向上します。これは、TPU VM 間の高帯域幅通信が必要な大規模な ML ワークロードの場合は特に重要になります。

外部 IP アドレスのない TPU VM インスタンスを作成する

外部 IP アドレスのない TPU VM インスタンスを作成する場合は、--no-address フラグをgcloud compute instances createコマンドを実行するときに使用します。

gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --stack-type=STACK_TYPE \
    --private-network-ip=INTERNAL_IPV4_ADDRESS \
    --no-address

各プレースホルダを次のように置き換えます。

  • TPU_NAME: TPU VM の名前。
  • MACHINE_TYPE:TPU VM のマシンタイプ (例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。 TPU イメージの場合、これは ubuntu-os-accelerator-images です。
  • ZONE: TPU VM のゾーンus-central1-b など)。
  • NETWORK_NAME: 省略可。ネットワークの名前。 ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。ネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
  • SUBNET_NAME: インスタンスで使用するサブネットの名前 。

    ネットワーク内のサブネットの一覧を表示するには、 gcloud compute networks subnets list コマンドを使用します。

  • STACK_TYPE: 省略可。ネットワーク インターフェースのネットワーキング スタックタイプ。STACK_TYPE は、 IPV4_ONLYIPV4_IPV6IPV6_ONLYプレビュー版)のいずれかにする必要があります。 デフォルト値は IPV4_ONLY です。

  • INTERNAL_IPV4_ADDRESS: 省略可。コンピューティング インスタンスがターゲット サブネットで使用する内部 IPv4 アドレス。特定の IP アドレスが不要な場合は、このフラグを省略します。

    内部 IPv6 アドレスを指定するには、代わりにフラグ --internal-ipv6-address を使用します。

外部 IP アドレスを持つ TPU VM インスタンスを作成する

gcloud CLI を使用して TPU VM インスタンスを作成すると、インスタンスにはデフォルトでエフェメラル外部 IP アドレスが設定されます。

REST API を使用して外部 IP アドレスを持つ TPU VM を作成するには、 POST リクエストを instances.insert メソッドに送信し、リクエスト本文の networkInterfaces 配列に accessConfigs フィールドを含めます。リクエスト本文で accessConfigs フィールドが指定されていない場合、インスタンスは外部インターネットにアクセスできません。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
    "machineType":"zones/ZONE/machineTypes/MACHINE_TYPE",
    "name":"TPU_NAME",
    "disks":[
        {
            "initializeParams":{
                "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "boot":true
        }
    ],
    "networkInterfaces":[
        {
            "network":"global/networks/NETWORK_NAME",
            "subnetwork":"regions/REGION/subnetworks/SUBNET_NAME",
            "stackType":"STACK_TYPE",
            "accessConfigs":[
                {
                    "name": "external-nat",
                    "type": "ONE_TO_ONE_NAT"
                }
            ]
        }
    ],
    "scheduling": {
        "onHostMaintenance": "TERMINATE"
    }
}

各プレースホルダを次のように置き換えます。

  • PROJECT_ID: TPU VM を 作成するプロジェクトの ID。
  • ZONE: TPU VM のゾーンus-central1-b など)。
  • MACHINE_TYPE:TPU VM のマシンタイプ (例: ct6e-standard-8t)。
  • TPU_NAME: TPU VM の名前。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、 値全体を、イメージ バージョンの名前に 次の形式で置き換えます: projects/IMAGE_PROJECT/global/images/IMAGE_NAME"sourceImage"

    OS イメージの詳細については、OS イメージをご覧ください。

  • NETWORK_NAME: 省略可。ネットワークの名前。 ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。ネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。

  • REGION: サブネットワークのリージョン。

  • SUBNET_NAME: インスタンスで使用するサブネットの名前 。

    ネットワーク内のサブネットの一覧を表示するには、 gcloud compute networks subnets list コマンドを使用します。

  • STACK_TYPE: 省略可。ネットワーク インターフェースのスタックタイプ。STACK_TYPE は、IPV4_ONLYIPV4_IPV6IPV6_ONLYプレビュー版)のいずれかにする必要があります。デフォルト値は IPV4_ONLY です。

静的外部 IP アドレスをすでに予約している場合は、 静的 IP アドレスを指定した --address フラグまたは 詳細なネットワーク構成を設定する --network-interface フラグを使用して、 作成時にインスタンスに割り当てることができます。詳細については、静的外部 IP アドレスを構成するをご覧ください。

TPU VM インスタンスへの SSH アクセスを有効にする

TPU VM インスタンスへの SSH アクセスを有効にするには:

  • TPU インスタンスは、外部 IP アドレスまたはプライベート Google アクセスを使用して到達可能である必要があります。
    • gcloud CLI を使用して TPU インスタンスを作成すると、インスタンスにはデフォルトでエフェメラル外部 IP アドレスが設定されます。REST API を使用して TPU インスタンスを作成する場合は、インスタンスに外部 IP アドレスを設定する必要があることを指定する必要があります。詳細については、外部 IP アドレスを持つ TPU VM インスタンスを作成するをご覧ください。
    • TPU インスタンスに外部 IP アドレスがない場合は、プライベート Google アクセスを構成できます。詳細については、プライベート Google アクセスを有効にするをご覧ください。
  • TPU インスタンスが使用するネットワークで SSH トラフィックが許可されている必要があります。デフォルトのネットワークでは、SSH トラフィックが自動的に許可されます。カスタム ネットワークを使用している場合 や、デフォルトのネットワーク設定を変更する場合は、ネットワークで SSH を明示的に 有効にする 必要があります

プライベート Google アクセスを有効にする

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

プライベート Google アクセスを構成したら、SSH を使用して VM に接続します

ネットワークで SSH トラフィックを有効にする

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

gcloud compute firewall-rules create \
    --network=NETWORK allow-ssh \
    --allow=tcp:22

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

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

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

TPU VM インスタンスの作成時にカスタム サービス アカウントを指定するには、 gcloud compute instances create コマンドを使用し、サービス アカウントのメールアドレスと cloud-platform アクセス スコープを VM インスタンスに指定します。

gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=https://www.googleapis.com/auth/cloud-platform

次のように置き換えます。

  • TPU_NAME: TPU VM の名前。
  • MACHINE_TYPE:TPU VM のマシンタイプ (例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー 。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
  • ZONE:TPU VM のゾーン (例:us-central1-b)。
  • SERVICE_ACCOUNT_EMAIL:作成したサービス アカウントのメールアドレス。例: my-sa-123@my-project-123.iam.gserviceaccount.com。メールアドレスを表示するには、サービス アカウントの一覧取得をご覧ください。

TPU VM を作成するプロジェクトとは異なるプロジェクトでサービス アカウントを使用するには、プロジェクト間サービス アカウントを使用するの手順に沿って操作します。

VPC Service Controls と統合する

VPC Service Controls を使用して、TPU リソースのセキュリティ境界を定義し、その境界をまたがるデータの移動を制御します。詳細については、 VPC Service Controls の概要をご覧ください。VPC Service Controls とともに TPU を使用する際の制限事項については、 サポートされているプロダクトと 制限事項をご覧ください。