建立使用 Cloud RDMA 的執行個體

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

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

事前準備

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

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

      gcloud init

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

    2. Set a default region and zone.

    REST

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

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

      gcloud init

      若您採用的是外部識別資訊提供者 (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 網路設定檔的 VPC 網路。
  • 如果您未指定網路或子網路,Compute Engine 會使用預設虛擬私有雲網路,以及與執行個體位於相同區域的自動子網路。
  • 如果您指定子網路,但未指定網路,Compute Engine 會從指定的子網路推斷網路。
  • 如果您指定網路,則必須指定子網路,且子網路必須屬於同一網路。否則執行個體建立作業會失敗。

限制

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

建立啟用 Cloud RDMA 的執行個體

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

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

執行個體只能有一個 IRDMA 介面。每個執行個體可有一到十個網路介面。

如要建立使用 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. 在「Network interface card」(網路介面卡) 清單中,選取「IRDMA」。
      2. 在「Network」(網路) 欄位中,選取 Falcon 虛擬私有雲網路。
      3. 選用:在「Subnetwork」(子網路) 清單中,選取執行個體要使用的子網路。
      4. 在「IP stack type」(IP 堆疊類型) 欄位中,確認已設為「IPV4-only」(僅限 IPv4)
      5. 在「外部 IPv4 位址」清單中,選取「無」
      6. 如要確認網路介面詳細資料,請按一下「完成」
  5. 選用:指定執行個體的其他設定選項。詳情請參閱「執行個體建立期間的設定選項」。

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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。這樣一來,系統會使用未淘汰的最新 OS 映像檔建立執行個體。舉例來說,如果您指定 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"
}

後續步驟