建立使用 Cloud RDMA 的執行個體

本頁說明如何使用支援 Cloud RDMA 的網路介面建立 HPC 執行個體。如需建立使用 RDMA 的 A4 或 A3 Ultra 加速器最佳化執行個體的操作說明,請參閱「建立 AI 適用的 A4 或 A3 Ultra 執行個體」。

如要建立使用遠端直接記憶體存取 (RDMA) 的運算執行個體,您必須在建立執行個體時設定至少兩個網路介面卡 (NIC)。其中一個 NIC 必須是 IRDMA NIC,並連結至具有 Falcon RDMA 網路設定檔的 VPC 網路,另一個 NIC 則必須使用 GVNIC

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  • 設定預設地區和區域
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

如要取得建立支援 Cloud RDMA 的執行個體所需的權限,請要求管理員授予您專案的「Compute 執行個體管理員 (v1) 」(roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備建立支援 Cloud RDMA 的執行個體所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要建立支援 Cloud RDMA 的執行個體,必須具備下列權限:

  • 專案的 compute.instances.create
  • 如要使用自訂映像檔建立 VM: compute.images.useReadOnly 在映像檔上
  • 如要使用快照建立 VM: compute.snapshots.useReadOnly 快照
  • 如要使用執行個體範本建立 VM,請按照下列步驟操作: compute.instanceTemplates.useReadOnly 在執行個體範本上
  • 如要為 VM 指定子網路,請在專案或所選子網路上授予 compute.subnetworks.use 權限。
  • 如要為 VM 指定靜態 IP 位址: 專案的 compute.addresses.use
  • 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM: compute.subnetworks.useExternalIp 專案或所選子網路的權限
  • 如要為 VM 設定 VM 執行個體中繼資料,請在專案中執行下列指令: compute.instances.setMetadata
  • 如要為 VM 設定標記,請按照下列步驟操作: compute.instances.setTags 在 VM 上
  • 如要為 VM 設定標籤,請按照下列步驟操作: compute.instances.setLabels 在 VM 上
  • 如要設定 VM 使用的服務帳戶,請按照下列步驟操作: compute.instances.setServiceAccount 在 VM 上
  • 為 VM 建立新磁碟: compute.disks.create 專案
  • 如要以唯讀或讀寫模式附加現有磁碟: 磁碟的 compute.disks.use
  • 如要以唯讀模式連接現有磁碟: compute.disks.useReadOnly 磁碟的權限

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

需求條件

請參閱下列規則,為執行個體設定網路介面:

  • 如要設定 IRDMA 網路介面,您必須先在與執行個體相同的區域和可用區中,建立具有 Falcon RDMA 網路設定檔的虛擬私有雲網路。
  • 如要使用 GVNIC 網路介面,必須使用一般 VPC。如果您未指定網路或子網路,Compute Engine 會使用預設虛擬私有雲網路,以及與執行個體位於相同區域的自動子網路。
  • 如果您指定子網路,但未指定網路,Compute Engine 會從指定的子網路推斷網路。
  • 如果您指定網路,則必須指定子網路,且子網路必須屬於同一網路。否則執行個體建立作業會失敗。

限制

  • 使用 Cloud RDMA 的 VM 無法進行即時遷移。您必須將執行個體設為在維護事件期間終止。
  • 您無法將 Cloud RDMA 與代管執行個體群組 (MIG) (代管或非代管) 搭配使用。
  • 啟用 Cloud RDMA 的執行個體只能使用 IPv4_ONLY 網路堆疊類型。
  • 您只能使用 H4D 機器系列建立使用 Cloud RDMA 的執行個體。

建立啟用 Cloud RDMA 的執行個體

啟用 Cloud RDMA 的執行個體至少需要兩個網路介面 (NIC):

  • NIC 類型 GVNIC:使用 gve 驅動程式處理 TCP/IP 和網際網路流量,用於一般 VM 對 VM 和 VM 對網際網路通訊
  • NIC 類型 IRDMA:使用 IDPF/iRDMA 驅動程式,在執行個體之間進行 RDMA 通訊

執行個體只能有一個 IRDMA 介面。每個執行個體可有 1 到 10 個網路介面。如要瞭解 Google Cloud中的多個網路介面,請參閱「多個網路介面」。

如要建立使用 IRDMA 的執行個體,請完成下列各節的步驟:

  1. 如果沒有合適的配置政策,請建立配置政策

  2. 建立新的虛擬私有雲網路,或使用現有的 Falcon 虛擬私有雲網路。

  3. 建立啟用 Cloud RDMA 的執行個體,該執行個體具有 IRDMA 網路介面、至少一個 GVNIC 網路介面,並使用密集配置政策。

為 Cloud RDMA 執行個體建立配置政策

使用 Cloud RDMA 通訊的執行個體必須位於單一可用區,更嚴格來說,必須位於單一叢集架構。您可以建立密集配置政策,並指定最大距離值,在可用區內設定最低密集度。指定最大距離值時,可指派緊湊型放置政策的執行個體數量有限,且限制會因您選擇的值而異。

  • 如要建立密集配置政策,以便搭配 Cloud RDMA 執行個體使用,請按照「建立密集配置政策」一文中的步驟操作,並指定最大距離值為 3 或更低。

建立虛擬私有雲網路

如要設定網路,您可以按照文件中的操作說明,或使用提供的指令碼。

操作指南

如要建立網路,請按照下列操作說明進行:

腳本

如要建立網路,可以使用下列指令碼。

  1. 選用:執行指令碼前,請列出 Falcon RDMA 網路設定檔,確認這些設定檔可用。

    gcloud compute network-profiles list --filter=falcon
    
  2. 複製下列程式碼,並在 Linux 殼層視窗中執行。

#!/bin/bash

# Create standard VPC (network and subnet) for the GVNIC interface
  gcloud compute networks create GVNIC_NAME_PREFIX-net-0 \
    --subnet-mode=custom

  gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --region=REGION \
    --range=10.0.0.0/16

  gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=10.0.0.0/8

# Create SSH firewall rules
gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=tcp:22 \
  --source-ranges=IP_RANGE

# Optional: Create an external IP for only the GVNIC interface
gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=icmp \
  --source-ranges=IP_RANGE

# Create network for Cloud RDMA over Falcon transport
gcloud compute networks create RDMA_NAME_PREFIX-irdma \
  --network-profile=ZONE-vpc-falcon \
  --subnet-mode custom

# Create subnet for Cloud RDMA
gcloud compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
    --network=RDMA_NAME_PREFIX-irdma \
    --region=REGION \
    --range=10.1.0.0/16  # offset to avoid overlap with GVNIC network

更改下列內容:

  • GVNIC_NAME_PREFIX:用於一般虛擬私有雲網路和子網路的名稱前置字元,這些網路和子網路使用 GVNIC NIC 類型。
  • RDMA_NAME_PREFIX:用於虛擬私有雲網路和子網路的名稱前置字元,這些網路和子網路使用 IRDMA NIC 類型。
  • ZONE:要建立網路和運算執行個體的可用區。使用 us-central1-aeurope-west4-b
  • REGION:要建立網路的區域。這必須與指定的時區相符。舉例來說,如果可用區是 europe-west4-b,則區域為 europe-west4
  • IP_RANGE:虛擬私有雲網路外部的 IP 位址範圍,用於 SSH 防火牆規則。最佳做法是指定您需要允許存取的特定 IP 位址範圍,而不是所有 IPv4 或 IPv6 來源。請勿使用 0.0.0.0/0::/0 做為來源範圍,因為這樣會允許來自所有 IPv4 或 IPv6 來源的流量,包括Google Cloud以外的來源。

建立啟用 Cloud RDMA 的執行個體

下列步驟說明如何建立執行個體,並將第一個網路介面設為 gVNIC 介面,第二個網路介面設為 IRDMA 網路介面:

控制台

  1. 前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「建立執行個體」

    如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。

    「建立執行個體」頁面隨即顯示,並顯示「機器設定」窗格。

  2. 在「機器設定」窗格中,執行下列操作:

    1. 在「Name」(名稱) 欄位中,指定執行個體的名稱。詳情請參閱資源命名慣例
    2. 選用:在「Zone」(區域) 欄位中,選取這個執行個體的區域。

      選擇您用來設定 Falcon 虛擬私有雲網路的可用區。

    3. 選擇「運算最佳化」機器家族。

    4. 在「系列」欄中,選取「H4D」機器系列。

    5. 在「Machine type」(機型) 部分中,選取執行個體的機型。

  3. 在左側導覽選單中,按一下「OS and Storage」(OS 和儲存空間)。在隨即顯示的「Operating system and storage」(作業系統和儲存空間) 窗格中,執行下列操作:

    1. 在「作業系統和儲存空間」專區底部,點選「變更」
    2. 在「Operating system」(作業系統) 和「Version」(版本) 清單中,選取支援 Cloud RDMA 的作業系統類型和版本。
    3. 確認「開機磁碟類型」已設為 Hyperdisk Balanced。
    4. 按一下窗格底部的「選取」,儲存變更。
  4. 在左側導覽選單中,按一下「Networking」(網路)。在隨即顯示的「Networking」(網路) 窗格中,執行下列操作:

    1. 前往「網路介面」部分。應該已經有一個網路介面,標示為 default
    2. 按一下「新增網路介面」。在隨即顯示的「New network interface」(新增網路介面) 專區中,執行下列操作:
      1. 在「網路介面卡」清單中,選取「IRDMA」。
      2. 在「Network」(網路) 欄位中,選取 Falcon 虛擬私有雲網路。
      3. 選用:在「Subnetwork」(子網路) 清單中,選取執行個體要使用的子網路。
      4. 在「IP stack type」(IP 堆疊類型) 欄位中,確認已設為「IPV4-only」(僅限 IPv4)
      5. 在「外部 IPv4 位址」清單中,選取「無」
      6. 如要確認網路介面詳細資料,請按一下「完成」
  5. 選用:指定執行個體的其他設定選項。詳情請參閱「執行個體建立期間的設定選項」。

  6. 如要建立並啟動執行個體,請按一下「建立」

gcloud

  1. 在 Google Cloud 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 使用 gcloud compute instances create 指令,並加上至少兩個 --network-interface 旗標,一個用於 GVNIC 介面,另一個用於 IRDMA 介面。您可以視需要自訂其餘指令選項。

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --create-disk=boot=yes, \
            image=projects/IMAGE_PROJECT/global/images/IMAGE, \
            size=SIZE \
        --maintenance-policy=TERMINATE \
        --network-interface \
            nic-type=GVNIC, \
            network=NETWORK_NAME,subnet=SUBNET_NAME, \
            stack-type=STACK_TYPE, \
            private-network-ip=INTERNAL_IPV4_ADDRESS, \
            address=EXTERNAL_IPV4_ADDRESS \
        --network-interface \
            nic-type=IRDMA, \
            network=RDMA_NETWORK_NAME,subnet=RDMA_SUBNET_NAME, \
            stack-type=IPV4_ONLY, \
            no-address \
    

    更改下列內容:

    • INSTANCE_NAME:運算執行個體的名稱
    • ZONE:建立執行個體的可用區,例如 europe-west1-b。執行個體的地區是從區域推測得出。
    • MACHINE_TYPE:選用:執行個體使用的機型。
    • IMAGE_PROJECT:選用:包含圖片的映像檔專案
    • IMAGE:選用:指定下列其中一項:
      • 特定版本的 OS 映像檔,例如 hpc-rocky-linux-8-v20250721
      • 映像檔系列,格式必須為 family/IMAGE_FAMILY。這樣一來,系統會使用未淘汰的最新作業系統映像檔建立執行個體。舉例來說,如果您指定 family/hpc-rocky-linux-8,Compute Engine 會使用 HPC Rocky Linux 8 映像檔系列中的最新版 OS 映像檔建立執行個體。如要進一步瞭解如何使用映像檔系列,請參閱映像檔系列最佳做法
    • SIZE:(選用) 新磁碟的大小。值必須是整數。預設測量單位為 GiB。
    • NETWORK_NAME:選用:網路名稱
    • SUBNET_NAME:用於網路介面的子網路名稱。如要查看網路中的子網路清單,請使用 gcloud compute networks subnets list 指令

      如果是 GVNIC 網路介面,您可以省略 networksubnet 標記,改用 default 網路。

    • STACK_TYPE:選用:GVNIC 網路介面的堆疊類型。STACK_TYPE 必須是下列其中一項:IPV4_ONLYIPV4_IPV6IPV6_ONLY。預設值為 IPV4_ONLY

    • INTERNAL_IPV4_ADDRESS:選用:要讓運算執行個體在目標子網路中使用的內部 IPv4 位址。如果不需要特定 IP 位址,請省略這個旗標。

      如要指定內部 IPv6 位址,請改用 --internal-ipv6-address 旗標。

    • EXTERNAL_IPV4_ADDRESS:選用:要與網路介面搭配使用的靜態外部 IPv4 位址。您必須先預留外部 IPv4 位址。執行下列其中一個步驟:

      • 從子網路指定有效的 IPv4 位址。
      • 如果不想讓網路介面擁有外部 IP 位址,請改用 no-address 旗標。
      • 如要讓介面接收臨時外部 IP 位址,請指定 address=''

      如要指定外部 IPv6 位址,請改用 --external-ipv6-address 標記。

    • RDMA_NETWORK_NAME:您使用 Falcon RDMA 網路設定檔建立的虛擬私有雲網路名稱。

    • RDMA_SUBNET_NAME:Falcon 虛擬私有雲網路中的子網路名稱。

REST

如要建立設定為使用 Cloud RDMA 的執行個體,請向 instances.insert 方法提出 POST 要求。加入 networkInterfaces 物件,其中至少包含兩個網路設定,一個用於 gVNIC 介面,另一個用於 IRDMA 介面。視需要自訂其餘執行個體屬性。

使用任何要求資料之前,請先修改下列項目的值:

  • PROJECT_ID:要在其中建立執行個體的專案 ID
  • ZONE:要在哪個可用區建立執行個體
  • MACHINE_TYPE:要使用的機型,例如 h4d-highmem-192-lssd
  • INSTANCE_NAME:新執行個體的名稱
  • IMAGE_PROJECT:選用:包含圖片的映像檔專案
  • IMAGE:選用:指定下列其中一項:

    • 特定版本的 OS 映像檔,例如 debian-12-bookworm-v20250415
    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。這樣一來,系統就會使用未淘汰的最新作業系統映像檔建立執行個體。舉例來說,如果您指定 family/debian-12,Compute Engine 會使用 Debian 12 映像檔系列中的最新版 OS 映像檔建立執行個體。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。
  • NETWORK_NAME:選用:要搭配 gVNIC 網路介面使用的網路名稱
  • SUBNET_NAME:要搭配 gVNIC 網路介面使用的子網路名稱

    如果是 GVNIC 網路介面,您可以省略 networksubnet 屬性,改用 default 網路。

  • INTERNAL_IPV4_ADDRESS: (選用) 要讓運算執行個體在目標子網路中使用的內部 IPv4 位址。如果不需要特定 IP 位址,請省略這個旗標。
  • EXTERNAL_IPV4_ADDRESS: 選用:要與網路介面搭配使用的靜態外部 IPv4 位址。您必須先預留外部 IPv4 位址
  • RDMA_NETWORK_NAME:您使用 RDMA 網路設定檔建立的網路名稱
  • RDMA_SUBNET_NAME:RDMA 網路中的子網路名稱

HTTP 方法和網址:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

JSON 要求主體:

{
    "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
    "name": "INSTANCE_NAME",
    "disks": [
      {
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        },
        "boot": true
      }
    ],
    "networkInterfaces": [
      {
        "network": "NETWORK_NAME",
        "subnetwork": "SUBNET_NAME",
        "networkIP": "INTERNAL_IPV4_ADDRESS",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External IP",
            "natIP": "EXTERNAL_IPV4_ADDRESS"
          }
        ],
        "stackType": "IPV4_ONLY",
        "nicType": "GVNIC",
      },
      {
        "network": "RDMA_NETWORK_NAME",
        "subnetwork": "RDMA_SUBNET_NAME",
        "stackType": "IPV4_ONLY",
        "nicType": "IRDMA",
      }
    ]
}

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

{
  "kind": "compute#operation",
  "id": "9216044482154695709",
  "name": "operation-1739207409646-62dccc7d7bc58-d1350b42-64fdb7f7",
  "zone": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`",
  "operationType": "insert",
  "targetLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/instances/`INSTANCE_NAME`",
  "targetId": "2679381553616227357",
  "status": "RUNNING",
  "user": "USER_ID",
  "progress": 0,
  "insertTime": "2025-02-10T09:10:10.551-08:00",
  "startTime": "2025-02-10T09:10:10.551-08:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38"
 "kind": "compute#operation"
}

後續步驟