Cloud TPU のネットワーキングとアクセスを構成する
このページでは、Cloud TPU のカスタム ネットワークとアクセス構成を設定する方法について説明します。以下の内容が含まれます。
- カスタム ネットワークとサブネットワークの指定
- 外部 IP アドレスと内部 IP アドレスの指定
- TPU への SSH アクセスの有効化
- カスタム サービス アカウントの TPU への接続
- カスタム SSH メソッドの有効化
- VPC Service Controls の使用
前提条件
これらの手順を実行する前に、Google Cloud CLI をインストールし、 Google Cloud プロジェクトを作成して、Cloud TPU API を有効にする必要があります。手順については、Cloud TPU 環境を設定するをご覧ください。
カスタム ネットワークとサブネットワークを指定する
必要に応じて、TPU に使用するネットワークとサブネットワークを指定できます。ネットワークが指定されていない場合、TPU は default
ネットワークに配置されます。サブネットワークは、TPU を実行するゾーンと同じリージョンに存在する必要があります。
次のいずれかの有効な形式に一致するネットワークを作成します。
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 ネットワークの作成と管理をご覧ください。
次の有効な形式のいずれかに一致するサブネットワークを作成します。
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 ネットワークの作成と管理をご覧ください。
カスタム ネットワークとサブネットワークを指定して TPU VM を作成します。
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.17.1-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 アドレスと内部 IP アドレスについて
TPU VM を作成するときに、内部 IP アドレスが自動的に付与されます。TPU VM を gcloud CLI で作成する場合、外部 IP アドレスはデフォルトで生成されます。Cloud TPU REST API(tpu.googleapis.com)を使用して作成した場合、デフォルトでは外部 IP アドレスは割り当てられません。どちらの場合もデフォルトの動作を変更できます。
外部 IP アドレス
gcloud
を使用して TPU を作成すると、TPU VM ごとにデフォルトで外部 IP アドレスが作成されます。外部 IP のない TPU VM を作成する場合は、TPU VM の作成時に次の例に示す --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.17.1-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
REST API(tpu.googleapis.com
)を使用して外部 IP アドレスを持つ TPU VM を作成するには、リクエストの networkconfig.enable_external_ips
フィールドを true
に設定します。
内部 IP アドレス
TPU VM には常に内部 IP アドレスがあります。Cloud TPU ユーザーは、次の主な理由から TPU VM を内部 IP アドレスのみに制限する場合があります。
セキュリティの強化: 内部 IP には、同じ VPC ネットワーク内のリソースからのみアクセスできます。これにより、TPU VM への外部アクセスを制限してセキュリティを強化できます。これは、機密データを使用する場合や、TPU へのアクセスをネットワーク内の特定のユーザーまたはシステムに制限する場合に特に重要です。
費用の削減: 内部 IP アドレスを使用すると、外部 IP アドレスに関連する費用を回避できます。多くの TPU VM を使用する場合、相当な費用になる可能性があります。
ネットワーク パフォーマンスの向上: 内部 IP を使用すると、トラフィックが Google のネットワーク内にとどまり、公共のインターネットを経由するルーティングのオーバーヘッドを回避できるため、ネットワーク パフォーマンスが向上します。これは、TPU VM 間の高帯域幅通信が必要な大規模な ML ワークロードの場合は特に重要になります。
カスタム 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.17.1-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.17.1-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 firewall-rules create \ --network=NETWORK allow-ssh \ --allow=tcp:22
VPC Service Controls と統合する
Cloud TPU の VPC Service Controls を使用して、Cloud TPU リソースのセキュリティ境界を定義し、その境界をまたがるデータの移動を制御できます。VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。VPC Service Controls とともに Cloud TPU を使用する際の制限事項については、サポートされているプロダクトと制限事項をご覧ください。