Cloud RDMA を使用するインスタンスを作成する


このページでは、RDMA 対応のネットワーク インターフェースを使用して HPC インスタンスを作成する方法について説明します。RDMA を使用する A4 または A3 Ultra アクセラレータ最適化インスタンスを作成する手順については、A4 または A3 Ultra を使用して AI 最適化インスタンスを作成するをご覧ください。

リモート ダイレクト メモリ アクセス(RDMA)を使用するコンピューティング インスタンスを作成するには、インスタンスの作成時に少なくとも 2 つのネットワーク インターフェース(NIC)を構成する必要があります。1 つの NIC は RDMA ネットワーク プロファイルを持つ VPC ネットワークに接続する IRDMA NIC で、もう 1 つの NIC は GVNIC を使用する必要があります。

マシンシリーズの比較の表を使用して、RDMA ネットワーク インターフェースをサポートするマシンシリーズを特定します。

始める前に

  • まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して 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

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    2. Set a default region and zone.

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

RDMA 通信をサポートするインスタンスを作成するために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1) roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、RDMA 通信をサポートするインスタンスの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

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
  • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
  • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
  • VM にタグを設定する: VM に対する compute.instances.setTags
  • VM にラベルを設定する: VM に対する compute.instances.setLabels
  • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
  • VM 用の新しいディスクを作成する: プロジェクトに対する compute.disks.create
  • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
  • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

要件

インスタンスのネットワーク インターフェースを構成する際の次のルールを確認します。

  • 各ネットワーク インターフェースは、それぞれ異なる Virtual Private Cloud ネットワークに接続する必要があります。
  • IRDMA ネットワーク インターフェースを構成するには、まずインスタンスと同じリージョンとゾーンに Falcon RDMA ネットワーク プロファイルを使用して VPC ネットワークを作成する必要があります。
  • ネットワークまたはサブネットを指定しない場合、Compute Engine はデフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットを使用します。
  • サブネットを指定してもネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
  • ネットワークを指定する場合は、サブネットを指定する必要があります。また、サブネットは同じネットワークに属している必要があります。そうしなければ、インスタンスの作成は失敗します。

制限事項

  • 内部 IP 通信用の Tier_1 ネットワーキングは、gVNIC 仮想ネットワーク ドライバを実行している VM とのみ互換性があります。
  • RDMA を使用する VM ではライブ マイグレーションを使用できません。メンテナンス イベント中に終了するようにインスタンスを構成する必要があります。
  • マネージド インスタンス グループ(MIG)(マネージドまたは非マネージド)で RDMA を使用することはできません。
  • RDMA 対応インスタンスで使用できるネットワーク スタック タイプは IPv4_ONLY のみです。
  • Cloud RDMA を使用するインスタンスを作成できるのは、H4D マシンシリーズのみです。

Cloud RDMA 対応インスタンスを作成する

Cloud RDMA 対応インスタンスには、少なくとも 2 つのネットワーク インターフェース(NIC)が必要です。

  • NIC タイプ GVNIC: 通常の VM-VM 間通信と VM-インターネット間通信の TCP/IP トラフィックとインターネット トラフィックに gve ドライバを使用します。
  • NIC タイプ IRDMA: インスタンス間の RDMA ベースの通信に IDPF/iRDMA ドライバを使用します

インスタンスに設定できる IRDMA インターフェースは 1 つだけです。各インスタンスには 1 ~ 10 個のネットワーク インターフェースを設定できます。

IRDMA を使用するインスタンスを作成するには、次のセクションの手順を完了します。

  1. 適切なプレースメント ポリシーが存在しない場合は、プレースメント ポリシーを作成します。

  2. 新しい VPC ネットワークを作成するか、既存の RDMA 対応 VPC ネットワークを使用します。

  3. IRDMA ネットワーク インターフェースと少なくとも 1 つの GVNIC ネットワーク インターフェースを備え、コンパクト プレースメント ポリシーを使用する RDMA 対応インスタンスを作成します。

RDMA インスタンスのプレースメント ポリシーを作成する

RDMA を使用して通信するインスタンスは、単一のゾーンに配置する必要があります。より厳密には、単一のクラスタ ファブリック内に配置する必要があります。コンパクト プレースメント ポリシーを作成し、最大距離値を指定して、ゾーン内の最小コンパクトさを設定できます。最大距離値を指定する場合、コンパクト プレースメント ポリシーを割り当てることができるインスタンスの数には上限があり、選択する値によって上限が異なります。

Virtual Private Cloud ネットワークを作成する

ネットワークを設定するには、ドキュメントに記載されている手順に沿って操作するか、提供されたスクリプトを使用します。

手順ガイド

ネットワークを作成するには、次の操作を行います。

スクリプト

ネットワークを作成するには、次のスクリプトを使用します。

  1. 省略可: スクリプトを実行する前に、RDMA ネットワーク プロファイルの一覧を取得して、使用可能であることを確認します。

    gcloud beta compute network-profiles list
    
  2. 次のコードをコピーして、Linux シェル ウィンドウで実行します。

#!/bin/bash

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

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

  gcloud beta 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 beta 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 beta 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 RDMA over Falcon transport
gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \
  --network-profile=ZONE-vpc-falcon \
  --subnet-mode custom

# Create subnet for RDMA
gcloud beta 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 タイプを使用する標準の Virtual Private Cloud ネットワークとサブネットに使用する名前の接頭辞。
  • RDMA_NAME_PREFIX: IRDMA NIC タイプを使用する Virtual Private Cloud ネットワークとサブネットに使用する名前の接頭辞。
  • ZONE: ネットワークとコンピューティング インスタンスを作成するゾーンus-central1-a または europe-west4-b を使用します。
  • REGION: ネットワークを作成するリージョン。これは、指定したゾーンに対応している必要があります。たとえば、ゾーンが europe-west4-b の場合、リージョンは europe-west4 です。
  • IP_RANGE: SSH ファイアウォール ルールに使用する VPC ネットワーク外の IP アドレスの範囲。すべての IPv4 ソースまたは IPv6 ソースではなく、アクセスを許可する必要がある特定の IP アドレス範囲を指定することをおすすめします。0.0.0.0/0 または ::/0 をソース範囲として使用しないでください。これにより、Google Cloudの外部にあるソースを含むすべての IPv4 または IPv6 ソースからのトラフィックが許可されます。

RDMA 対応インスタンスを作成する

次の手順では、最初のネットワーク インターフェースが gVNIC インターフェースとして構成され、2 番目のネットワーク インターフェースが IRDMA ネットワーク インターフェースとして構成されたインスタンスを作成する方法について説明します。

コンソール

  1. Google Cloud コンソールで [インスタンスの作成] ページに移動します。

    [インスタンスの作成] に移動

    プロンプトが表示されたら、プロジェクトを選択して [続行] をクリックします。

    [インスタンスの作成] ページが表示され、[マシンの構成] ペインが表示されます。

  2. [マシンの構成] ペインで、次の操作を行います。

    1. [名前] フィールドに、インスタンスの名前を指定します。詳細については、リソースの命名規則をご覧ください。
    2. 省略可: [ゾーン] フィールドで、このインスタンスのゾーンを選択します。

      RDMA ネットワーク プロファイルの設定に使用したゾーンを選択します。

    3. コンピューティング最適化マシン ファミリーを選択します。

    4. [シリーズ] 列で、[H4D] マシンシリーズを選択します。

    5. [マシンタイプ] セクションで、インスタンスのマシンタイプを選択します。

  3. 左側のナビゲーション メニューで、[OS とストレージ] をクリックします。表示された [オペレーティング システムとストレージ] ペインで、次の操作を行います。

    1. [オペレーティング システムとストレージ] セクションの下部にある [変更] をクリックします。
    2. [オペレーティング システム] リストと [バージョン] リストで、RDMA をサポートする OS の種類とバージョンを選択します。
    3. [ブートディスクの種類] が [Hyperdisk Balanced] に設定されていることを確認します。
    4. ペインの下部にある [選択] をクリックして、変更を保存します。
  4. 左側のナビゲーション メニューで、[ネットワーキング] をクリックします。表示された [ネットワーキング] ペインで、次の操作を行います。

    1. [ネットワーク インターフェース] セクションに移動します。default というラベルのネットワーク インターフェースがすでに 1 つ存在しているはずです。
    2. [ネットワーク インターフェースを追加] をクリックします。表示された [新しいネットワーク インターフェース] セクションで、次の操作を行います。
      1. [ネットワーク インターフェース カード] リストで、[IRDMA] を選択します。
      2. [ネットワーク] フィールドで、RDMA ネットワーク プロファイルを含む VPC ネットワークを選択します。
      3. 省略可: [サブネットワーク] リストで、インスタンスが使用するサブネットを選択します。
      4. [IP スタックタイプ] フィールドが [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 コマンドで、GVNIC インターフェース用と IRDMA インターフェース用の 2 つ以上の --network-interface フラグを使用します。必要に応じて、残りのコマンド オプションをカスタマイズできます。

    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: 省略可。イメージを含むイメージ プロジェクトプレビュー期間中は、カスタム イメージまたは HPC VM イメージを使用します。
    • IMAGE: 省略可。次のいずれかを指定します。
      • OS イメージの特定のバージョン。例: hpc-rocky-linux-8-v20250721
      • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。これにより、非推奨ではない最新の OS イメージからインスタンスが作成されます。たとえば、family/hpc-rocky-linux-8 を指定すると、Compute Engine は HPC Rocky Linux 8 イメージ ファミリーの最新バージョンの OS イメージを使用してインスタンスを作成します。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
    • SIZE: 省略可。新しいディスクのサイズ。この値は整数である必要があります。デフォルトの測定単位は GiB です。
    • NETWORK_NAME: 省略可。ネットワークの名前
    • SUBNET_NAME: ネットワーク インターフェースに使用するサブネットの名前。ネットワーク内のサブネットの一覧を表示するには、gcloud compute networks subnets list コマンドを使用します。

      GVNIC ネットワーク インターフェースの場合、network フラグと subnet フラグを省略して、代わりに 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: RDMA ネットワーク プロファイルで作成したネットワークの名前。

    • RDMA_SUBNET_NAME: RDMA ネットワーク内のサブネットの名前。

REST

RDMA を使用するように構成されたインスタンスを作成するには、instances.insert メソッドPOST リクエストを送信します。少なくとも 2 つのネットワーク構成(gVNIC インターフェース用と IRDMA インターフェース用)を含む networkInterfaces オブジェクトを含めます。必要に応じて、インスタンスの残りのプロパティをカスタマイズできます。

リクエストのデータを使用する前に、次のように置き換えます。

  • 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 ネットワーク インターフェースの場合、network プロパティと subnet プロパティを省略して、代わりに default ネットワークを使用できます。

  • INTERNAL_IPV4_ADDRESS: 省略可。コンピューティング インスタンスがターゲット サブネットで使用する内部 IPv4 アドレス。特定の IP アドレスが不要な場合は、このフラグを省略します。
  • EXTERNAL_IPV4_ADDRESS: 省略可。ネットワーク インターフェースで使用する静的外部 IPv4 アドレス。外部 IPv4 アドレスは予約済みである必要があります。
  • RDMA_NETWORK_NAME: RDMA ネットワーク プロファイルで作成したネットワークの名前
  • RDMA_SUBNET_NAME: RDMA ネットワーク内のサブネットの名前

HTTP メソッドと URL:

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

次のステップ