設定網路連線和 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}
詳情請參閱「建立及管理虛擬私有雲網路」。
建立符合下列有效格式之一的子網路:
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}
詳情請參閱「建立及管理虛擬私有雲網路」。
建立 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 位址
建立 TPU VM 時,系統一律會自動提供內部 IP 位址。如果是透過 gcloud CLI 建立 TPU VM,系統會根據預設產生外部 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,這可限制外部存取 TPU VM,進而提升安全性。處理機密資料,或是想限制網路中特定使用者或系統的 TPU 存取權時,這點尤其重要。
節省成本:使用內部 IP 位址可避免產生外部 IP 位址相關費用,這對大量 TPU VM 來說可能相當可觀。
改善網路效能:內部 IP 可提升網路效能,因為流量會留在 Google 的網路中,避免透過公開網際網路轉送的額外負擔。這項功能特別適用於需要在 TPU VM 之間進行高頻寬通訊的大規模機器學習工作負載。
啟用自訂 SSH 方法
如要使用 SSH 連線至 TPU,您必須為 TPU 啟用外部 IP 位址,或是為 TPU VM 連線的子網路啟用私人 Google 存取權。
啟用 Private Google Access
沒有外部 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 的自訂服務帳戶必須具備 TPU 檢視器角色,才能呼叫 Cloud TPU API。如果在 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 方法
預設網路允許透過 SSH 存取所有 TPU VM。如果您使用預設網路以外的網路,或變更預設網路設定,則必須新增防火牆規則,明確啟用 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 的限制,請參閱支援的產品和限制。