設定網路和 TPU 執行個體的存取權
本頁說明如何為 TPU 執行個體設定自訂網路和存取權設定,包括:
- 指定自訂網路和子網路
- 指定外部和內部 IP 位址
- 啟用 TPU 的 SSH 存取權
- 將自訂服務帳戶附加至 TPU
- 啟用自訂 SSH 方法
- 使用 VPC Service Controls
必要條件
執行這些程序前,請先安裝 Google Cloud CLI、建立 Google Cloud 專案,並啟用 Compute Engine API。如需操作說明,請參閱「為 TPU 設定專案 Google Cloud 」。
指定自訂網路和子網路
建立 TPU VM 執行個體或執行個體範本時,您可以選擇指定 TPU 要使用的網路和子網路。如未指定網路,TPU 會位於 default 網路。子網路必須與 TPU 執行的區域位於相同地區。
按照建立虛擬私有雲網路的操作說明,建立網路和子網路。
建立 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 版本,請使用
--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_ONLY、IPV4_IPV6或IPV6_ONLY(預覽版)。預設值為IPV4_ONLY。INTERNAL_IPV4_ADDRESS:選用:您希望運算執行個體在目標子網路中使用的內部 IPv4 位址。如果不需要特定 IP 位址,請略過這個旗標。
如要指定內部 IPv6 位址,請改用
--internal-ipv6-address旗標。EXTERNAL_IPV4_ADDRESS:選用:要與網路介面搭配使用的靜態外部 IPv4 位址。將 EXTERNAL_IPV4_ADDRESS 替換為下列其中一個值:
- 指定子網路的有效 IPv4 位址。您必須先預留外部 IPv4 位址。
''(空字串) 即可使用臨時外部 IP 位址。
如果不想讓 VM 擁有外部 IP 位址,請將
--address旗標替換為--no-address旗標。如要指定外部 IPv6 位址,請改用
--external-ipv6-address標記。
瞭解外部和內部 IP 位址
建立 TPU VM 執行個體時,系統一律會指派內部 IP 位址。如果您使用 gcloud CLI 建立 TPU 執行個體,系統預設會產生外部 IP 位址。如果您透過 Compute Engine REST API (compute.googleapis.com) 建立執行個體,系統預設不會指派外部 IP 位址。在這兩種情況下,您都可以變更預設行為。
以下是限制 TPU VM 只能使用內部 IP 位址的幾個原因:
- 提升安全性:內部 IP 位址只能由相同虛擬私有雲網路中的資源存取,因此可限制外部存取 TPU VM,進而提升安全性。如果您要處理敏感資料,或是想限制網路中特定使用者或系統存取 TPU VM,這點就格外重要。
- 節省費用:使用內部 IP 位址可避免外部 IP 位址相關費用,這對於大量 TPU VM 而言相當可觀。
- 提升網路效能:內部 IP 位址可提升網路效能,因為流量會留在 Google 的網路中,避免透過公開網際網路轉送流量時產生額外負擔。對於需要 TPU VM 之間高頻寬通訊的大規模機器學習工作負載,這點尤其重要。
建立沒有外部 IP 位址的 TPU VM 執行個體
如要建立沒有外部 IP 位址的 TPU VM 執行個體,請在執行 gcloud compute instances create 指令時使用 --no-address 標記:
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 版本,請使用
--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_ONLY、IPV4_IPV6或IPV6_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,請對 instances.insert 方法提出 POST 要求,並在要求內文的 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 版本,請將整個
"sourceImage"值替換為映像檔版本名稱,格式如下:projects/IMAGE_PROJECT/global/images/IMAGE_NAME。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
NETWORK_NAME:選用:網路名稱。 如果您指定網路,就必須指定子網路,且子網路必須屬於同一個網路。如果您未指定網路,Compute Engine 會從指定的子網路推斷網路。
REGION:子網路的區域。
SUBNET_NAME:要與執行個體搭配使用的子網路名稱。
如要查看網路中的子網路清單,請使用
gcloud compute networks subnets list指令。STACK_TYPE:選用:網路介面的堆疊類型。
STACK_TYPE必須是下列其中一個值:IPV4_ONLY、IPV4_IPV6或IPV6_ONLY(預覽版)。預設值為IPV4_ONLY。
如果您已保留靜態外部 IP 位址,可以在建立執行個體時,使用 --address 標記搭配靜態 IP 位址,或使用 --network-interface 標記設定詳細的網路設定,將該位址指派給執行個體。詳情請參閱「設定靜態外部 IP 位址」。
啟用 TPU VM 執行個體的 SSH 存取權
如要啟用 TPU VM 執行個體的 SSH 存取權,請按照下列步驟操作:
- TPU 執行個體必須可透過外部 IP 位址或 Private Google Access 連線。
- 如果您使用 gcloud CLI 建立 TPU 執行個體,執行個體預設會取得臨時外部 IP 位址。如果使用 REST API 建立 TPU 執行個體,您必須指定執行個體應具有外部 IP 位址。詳情請參閱「建立具有外部 IP 位址的 TPU VM 執行個體」。
- 如果 TPU 執行個體沒有外部 IP 位址,可以設定 Private Google Access。詳情請參閱「啟用 Private Google Access」。
- TPU 執行個體使用的網路必須允許 SSH 流量。預設網路會自動允許 SSH 流量。如果您使用自訂網路或變更預設網路設定,則必須明確在網路上啟用 SSH。
啟用 Private Google Access
沒有外部 IP 位址的 TPU 可以使用 Private Google Access 存取 Google API 和服務。如要進一步瞭解如何啟用 Private Google Access,請參閱「設定 Private Google Access」。
設定 Private Google Access 後,請使用 SSH 連線至 VM。
在網路上啟用 SSH 流量
預設網路允許透過 SSH 存取所有 TPU VM。如果您使用自訂網路或變更預設網路設定,則必須新增防火牆規則,明確啟用 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 指令,並提供服務帳戶電子郵件地址和 VM 執行個體的 cloud-platform 存取權範圍:
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 版本,請使用
--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 總覽」。如要瞭解搭配 TPU 使用 VPC Service Controls 的限制,請參閱「支援的產品和限制」一文。