配置网络连接和 Cloud TPU 访问权限
本页介绍了如何为 Cloud TPU 设置自定义网络和访问权限配置,包括:
- 指定自定义网络和子网
- 指定外部和内部 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 虚拟机,并指定自定义网络和子网:
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 地址
创建 TPU 虚拟机时,系统会自动为其分配内部 IP 地址。如果通过 gcloud CLI 创建 TPU 虚拟机,系统会默认生成外部 IP 地址。如果是通过 Cloud TPU REST API (tpu.googleapis.com) 创建的,则默认不会分配外部 IP 地址。在这两种情况下,您都可以更改默认行为。
外部 IP 地址
使用 gcloud
创建 TPU 时,系统会默认为每个 TPU 虚拟机创建外部 IP 地址。如果您想创建没有外部 IP 地址的 TPU 虚拟机,请在创建 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.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 虚拟机,请将请求中的 networkconfig.enable_external_ips
字段设置为 true
。
内部 IP 地址
TPU 虚拟机始终具有内部 IP 地址。Cloud TPU 用户可能希望将其 TPU 虚拟机仅限于使用内部 IP 地址,原因主要有以下几点:
增强安全性:内部 IP 只能由同一 VPC 网络中的资源访问,这可以通过限制对 TPU 虚拟机的外部访问来提高安全性。在处理敏感数据或希望将对 TPU 的访问权限限制为网络中的特定用户或系统时,这一点尤为重要。
节省开支:使用内部 IP 地址可以避免与外部 IP 地址相关的费用,对于大量 TPU 虚拟机,这些费用可能非常高。
网络性能更出色:由于流量会保留在 Google 的网络中,避免了通过公共互联网路由的开销,因此内部 IP 地址可以提升网络性能。这对于需要在 TPU 虚拟机之间进行高带宽通信的大规模机器学习工作负载尤为重要。
启用自定义 SSH 方法
如需使用 SSH 连接到 TPU,您需要为 TPU 启用外部 IP 地址,或者为 TPU 虚拟机连接到的子网启用专用 Google 访问通道。
启用专用 Google 访问通道
没有外部 IP 地址的 TPU 可以使用专用 Google 访问通道访问 Google API 和服务。如需详细了解如何启用专用 Google 访问通道,请参阅配置专用 Google 访问通道。
配置专用 Google 访问通道后,使用 SSH 连接到虚拟机。
关联自定义服务账号
每个 TPU 虚拟机都有一个关联的服务账号,用于代表您发出 API 请求。TPU VM 使用此服务账号调用 Cloud TPU API 并访问 Cloud Storage 和其他服务。默认情况下,您的 TPU VM 使用默认的 Compute Engine 服务账号。
服务账号必须在您创建 TPU VM 的 Google Cloud 同一项目中定义。用于 TPU 虚拟机的自定义服务账号必须具有 TPU 查看器角色,才能调用 Cloud TPU API。如果 TPU 虚拟机中运行的代码调用其他 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 方法
默认网络允许通过 SSH 访问所有 TPU 虚拟机。如果您使用的是默认网络以外的网络,或者更改了默认网络设置,则需要通过添加防火墙规则来明确启用 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 概览。如需详细了解将 Cloud TPU 与 VPC Service Controls 结合使用的限制,请参阅支持的产品和限制。