設定網路和 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 執行的區域位於相同地區。

  1. 建立符合下列其中一種有效格式的網路:

    • 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}

    詳情請參閱「建立及管理虛擬私有雲網路」。

  2. 建立符合下列其中一種有效格式的子網路:

    • 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}

    詳情請參閱「建立及管理虛擬私有雲網路」。

  3. 建立 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 呼叫中指定網路和子網路,請將 networksubnetwork 欄位新增至要求主體:

        $ 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 和服務。如要進一步瞭解如何啟用 Private Google Access,請參閱「設定 Private Google Access」。

設定私人 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 的限制,請參閱支援的產品和限制一文。