このチュートリアルでは、互いに独立した多数のハイパフォーマンス コンピューティング(HPC)仮想マシン(VM)インスタンスを作成する方法について説明します。インスタンスは H4D HPC 最適化マシンタイプを使用し、予約済みの容量ブロックで実行されます。このチュートリアルでは、Cloud RDMA を使用するように H4D インスタンスを構成する方法についても説明します。
このチュートリアルは、相互接続された HPC インスタンスのクラスタの作成に関心のある HPC エンジニア、プラットフォーム管理者、オペレーター、データと MPI のスペシャリストを対象としています。結果のインスタンスは、インスタンス管理やジョブ スケジューリングにオーケストレーターを使用しません。
目標
- デプロイ用に容量ブロックを予約します。
- 省略可: 同じブロックまたはサブブロックに VM を作成しない場合は、プレースメント ポリシーを作成します。
- Virtual Private Cloud ネットワークを作成します。
- RDMA 対応インスタンスを一括作成する。
- クリーンアップする。
費用
このチュートリアルでは、以下を含む、 Google Cloudの課金対象となるコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable compute.googleapis.com
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable compute.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/compute.instanceAdmin.v1,roles/compute.networkAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
- 非高密度デプロイの場合: Compute Engine インスタンスのプロビジョニング モデル
- 高密度デプロイの場合: 使用オプションを選択して容量を取得する
アカウント チームに連絡し、次の情報を提供して、Google が将来の予約リクエストのドラフトを作成できるようにします。
プロジェクト番号: アカウント チームがリクエストを作成し、Compute Engine が容量をプロビジョニングするプロジェクトの番号。プロジェクト番号を確認する方法については、Resource Manager ドキュメントのプロジェクト名、番号、ID を確認するをご覧ください。
マシンタイプ: H4D HPC 最適化マシンタイプのいずれか
合計数: 予約する VM の合計数。予約できるのは、2 の倍数の VM のみです。ブロックサイズとブロックあたりの VM 数は、マシンタイプと可用性によって異なります。リクエストの詳細については、アカウント チームにお問い合わせください。
ゾーン: 容量を予約するゾーン。H4D マシンシリーズで使用可能なリージョンとゾーンを確認するには、使用可能なリージョンとゾーンを参照し、[マシンシリーズを選択] リストで
H4D
を選択します。開始時間: 予約期間の開始時間。開始時間を RFC 3339 タイムスタンプの形式で指定します。
YYYY-MM-DDTHH:MM:SSOFFSET
次のように置き換えます。
YYYY-MM-DD
: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-
)で区切った形式の日付。HH:MM:SS
: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:
)で区切った形式の時刻。OFFSET
: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は-08:00
を指定します。オフセットを使用しない場合は、Z
を指定します。
終了時間: 予約期間の終了時間。RFC 3339 タイムスタンプの形式で指定します。
共有タイプ: 自動作成された予約を使用できるのが自分のプロジェクトのみか(
LOCAL
)、他のプロジェクトも予約を使用できるか(SPECIFIC_PROJECTS
)。予約済み容量を組織内の他のプロジェクトと共有する手順は次のとおりです。
まだ確認していない場合は、Google がリクエストを作成するプロジェクトで共有予約の作成が許可されていることを確認します。
予約済み容量を共有するプロジェクトの番号を指定します。組織内で最大 100 個のプロジェクトを指定できます。
予約名: 予約した容量を配信するために Compute Engine が自動的に作成する予約の名前。Compute Engine は、明示的にターゲット設定された予約のみを作成します。
コミットメント名: 予約期間が 1 年以上の場合は、リソースベースのコミットメントを購入して、予約済みリソースに関連付ける必要があります。1 年間または 3 年間のプランでコミットメントを購入できます。予約した容量を他のプロジェクトと共有する場合、それらのプロジェクトが割引を受けるのは、容量を予約したプロジェクトと同じ Cloud 請求先アカウントを使用している場合のみです。詳細については、リソースベースのコミットメントで CUD の共有を有効にするをご覧ください。
Google が将来の予約リクエストの下書きを作成し、アカウント チームから連絡があります。
下書きリクエストを確認します。予約リクエストを確認する際は、次の点に注意してください。
- 予約済み容量は、指定した開始日時以降にのみ使用できます。
指定した終了時間に達すると、Compute Engine は次の処理を行います。
- 自動作成された予約を削除します。
- 予約を使用している VM を停止または削除します。実行されるアクションは、VM の作成時に指定した終了アクションに基づきます。
予約リクエストを送信した後に、予約容量を共有するかどうかを変更することはできません。
将来の予約リクエストの下書きを確認するには、次のいずれかのオプションを選択します。
コンソール
Google Cloud コンソールで、[予約] ページに移動します。
[将来の予約] タブをクリックします。[将来の予約] テーブルには、プロジェクト内の将来の予約リクエストがそれぞれ一覧表示されます。表の各列はプロパティを表します。
[名前] 列で、Google が作成した下書きリクエストの名前をクリックします。将来の予約リクエストの詳細が表示されたページが開きます。
[基本情報] セクションで、[日付] や [共有タイプ] などのリクエストの詳細が正しいことを確認します。また、コミットメントをリクエストした場合は、コミットメントが指定されていることを確認します。
これらの詳細情報に誤りがある場合は、アカウント チームにお問い合わせください。
gcloud
プロジェクトの将来の予約リクエストのリストを表示するには、
--filter
フラグをPROCUREMENT_STATUS=DRAFTING
に設定してgcloud beta compute future-reservations list
コマンドを使用します。gcloud beta compute future-reservations list --filter=PROCUREMENT_STATUS=DRAFTING
コマンド出力で、アカウント チームに提供した名前の予約リクエストを探します。
下書きリクエストの詳細を表示するには、
gcloud beta compute future-reservations describe
コマンドを使用します。gcloud beta compute future-reservations describe FUTURE_RESERVATION_NAME \ --zone=ZONE
次のように置き換えます。
FUTURE_RESERVATION_NAME
: 将来の予約リクエストのドラフトの名前。ZONE
: Google がリクエストを作成したゾーン。
出力は次のようになります。
autoCreatedReservationsDeleteTime: '2026-02-10T19:20:00Z' creationTimestamp: '2025-11-27T11:14:58.305-08:00' deploymentType: DENSE id: '7979651787097007552' kind: compute#futureReservation name: example-draft-request planningStatus: DRAFT reservationName: example-reservation schedulingType: INDEPENDENT selfLink: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/example-draft-request selfLinkWithId: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/7979651787097007552 specificReservationRequired: true specificSkuProperties: instanceProperties: localSsds: - diskSizeGb: '375' interface: NVME ... machineType: h4d-highmem-192-lssd totalCount: '2' status: autoCreatedReservations: - https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/reservations/example-reservation fulfilledCount: '2' lockTime: '2026-01-27T19:15:00Z' procurementStatus: DRAFTING timeWindow: endTime: '2026-02-10T19:20:00Z' startTime: '2026-01-27T19:20:00Z' zone: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b
コマンド出力で、予約期間や共有タイプなどのリクエストの詳細が正しいことを確認します。また、コミットメントを購入した場合は、それが指定されていることを確認します。
詳細情報が間違っている場合は、アカウント チームにお問い合わせください。
REST
プロジェクト内の将来の予約リクエストのリストを表示するには、ベータ版の
futureReservations.list
メソッドにGET
リクエストを送信します。リクエスト URL にfilter
クエリ パラメータを含め、status.procurementStatus=DRAFTING
に設定します。GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations?filter=status.procurementStatus=DRAFTING
次のように置き換えます。
PROJECT_ID
: Google が下書きの将来の予約リクエストを作成したプロジェクトの ID。ZONE
: リクエストが存在するゾーン。
リクエストの出力で、アカウント チームに提供した名前の予約リクエストを探します。
下書きリクエストの詳細を表示するには、ベータ版
futureReservations.get
メソッドにGET
リクエストを送信します。GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME
FUTURE_RESERVATION_NAME
は、下書きの将来の予約リクエストの名前に置き換えます。出力は次のようになります。
{ "specificSkuProperties": { "instanceProperties": { "machineType": "h4d-highmem-192-lssd", "localSsds": [ { "diskSizeGb": "375", "interface": "NVME" }, ... ] }, "totalCount": "2" }, "kind": "compute#futureReservation", "id": "7979651787097007552", "creationTimestamp": "2025-11-27T11:14:58.305-08:00", "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/example-draft-request", "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/7979651787097007552", "zone": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b", "name": "example-draft-request", "timeWindow": { "startTime": "2026-01-27T19:20:00Z", "endTime": "2026-02-10T19:20:00Z" }, "status": { "procurementStatus": "DRAFTING", "lockTime": "2026-01-27T19:15:00Z" }, "planningStatus": "DRAFT", "specificReservationRequired": true, "reservationName": "example-reservation", "deploymentType": "DENSE", "schedulingType": "INDEPENDENT", "autoCreatedReservationsDeleteTime": "2026-02-10T19:20:00Z" }
出力で、予約期間や共有タイプなどのリクエストの詳細が正しいことを確認します。また、コミットメントをリクエストした場合は、コミットメントが指定されていることを確認します。
詳細情報が間違っている場合は、アカウント チームにお問い合わせください。
内容に問題がない場合は、予約リクエストを送信します。リクエストの開始時刻より前にリクエストを送信する必要があります。
将来の予約リクエストの下書きを送信するには、次のいずれかのオプションを選択します。
コンソール
Google Cloud コンソールで、[予約] ページに移動します。
[将来の予約] タブをクリックします。
[名前] 列で、Google が作成した下書きリクエストの名前をクリックします。
[送信] をクリックします。
gcloud
審査を受けるために下書きリクエストを送信するには、
--planning-status
フラグをSUBMITTED
に設定してgcloud beta compute future-reservations update
コマンドを使用します。gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \ --planning-status=SUBMITTED \ --zone=ZONE
REST
審査を受けるために下書きリクエストを送信するには、ベータ版の
futureReservations.update
メソッドにPATCH
リクエストを送信します。リクエスト URL にupdateMask
クエリ パラメータを含め、planningStatus
に設定します。PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=planningStatus { "name": "FUTURE_RESERVATION_NAME", "planningStatus": "SUBMITTED" }
Google Cloud が送信されたリクエストをすぐに承認します。
Compute Engine は、リクエストされたリソースを使用して空の予約を作成します。
予約を表示するには、AI Hypercomputer のドキュメントで予約済み容量を表示するをご覧ください。
POLICY_NAME
: コンパクト プレースメント ポリシーの名前MAX_DISTANCE
: VM インスタンス間の最大距離構成。VM を隣接するブロックに配置するには3
を指定し、VM を同じブロックに配置するには2
を指定します。VM の配置はベスト エフォートで行われます。REGION
: プレースメント ポリシーを作成するリージョン。使用するマシンタイプが使用可能なリージョンを指定します。利用可能なリージョンについては、利用可能なリージョンとゾーンをご覧ください。PROJECT_ID
: プロジェクト IDREGION
: プレースメント ポリシーを作成するリージョン。使用するマシンタイプが使用可能なリージョンを指定します。利用可能なリージョンについては、利用可能なリージョンとゾーンをご覧ください。POLICY_NAME
: コンパクト プレースメント ポリシーの名前MAX_DISTANCE
: VM インスタンス間の最大距離構成。VM を隣接するブロックに配置するには3
を指定し、VM を同じブロックに配置するには2
を指定します。VM の配置はベスト エフォートで行われます。- NIC タイプ
GVNIC
: 通常の VM-VM 間通信と VM-インターネット間通信の TCP/IP トラフィックとインターネット トラフィックにgve
ドライバを使用します。 - NIC タイプ
IRDMA
: インスタンス間の RDMA ネットワーク通信に IDPF/iRDMA ドライバを使用します - 各ネットワーク インターフェースは、それぞれ異なる Virtual Private Cloud ネットワークに接続する必要があります。
- IRDMA ネットワーク インターフェースを構成するには、まず、インスタンスと同じリージョンとゾーンに Falcon RDMA ネットワーク プロファイルを使用して VPC ネットワークを作成する必要があります。
- GVNIC ネットワーク インターフェースの場合、ネットワークまたはサブネットを指定しないと、Compute Engine はデフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットを使用します。
- サブネットを指定してもネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
- ネットワークを指定する場合は、サブネットを指定する必要があります。また、サブネットは同じネットワークに属している必要があります。そうしなければ、インスタンスの作成は失敗します。
GVNIC
ネットワーク インターフェースのホスト ネットワークを作成するには、VPC ネットワークの作成と管理をご覧ください。GVNIC
ネットワーク インターフェースを 1 つだけ構成する場合は、デフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットを使用できます。IRDMA
ネットワーク インターフェースのネットワークを作成するには、RDMA ネットワーク プロファイルを使用して VPC ネットワークを作成するをご覧ください。RDMA ネットワークの最大伝送単位(MTU)のデフォルト値(8896
)を使用します。省略可: スクリプトを実行する前に、Falcon VPC ネットワーク プロファイルを一覧表示して、使用可能なプロファイルがあることを確認します。Falcon VPC ネットワーク プロファイルは、すべてのゾーンで使用できるわけではありません。
gcloud beta compute network-profiles list --filter=falcon
次のコードをコピーして、Linux シェル ウィンドウで実行します。
GVNIC_NAME_PREFIX
: GVNIC NIC タイプを使用する標準の VPC ネットワークとサブネットに使用する名前の接頭辞。REGION
: ネットワークを作成するリージョン。これは、Falcon VPC の作成時に--network-profile
フラグに指定されたゾーンに対応している必要があります。たとえば、ゾーンをeurope-west4-b
として指定した場合、リージョンはeurope-west4
になります。IP_RANGE
: SSH ファイアウォール ルールに使用する VPC ネットワーク外の IP アドレスの範囲。すべての IPv4 ソースまたは IPv6 ソースではなく、アクセスを許可する必要がある特定の IP アドレス範囲を指定することをおすすめします。0.0.0.0/0
または::/0
をソース範囲として使用しないでください。これにより、Google Cloudの外部にあるソースを含むすべての IPv4 または IPv6 ソースからのトラフィックが許可されます。RDMA_NAME_PREFIX
: IRDMA NIC タイプを使用する VPC ネットワークとサブネットに使用する名前の接頭辞。ZONE
: ネットワークとコンピューティング インスタンスを作成するゾーン。us-central1-a
またはeurope-west4-b
を使用します。- Cloud RDMA ネットワーク インターフェースを持つインスタンスでは、ホスト メンテナンス イベント中にライブ マイグレーションを使用できません。メンテナンス イベント中に終了するようにインスタンスを構成する必要があります。
- RDMA ネットワーク インターフェースと Falcon RDMA ネットワーク プロファイルを持つ VPC ネットワークでは、IPv4 アドレスのみを使用できます。
- Cloud RDMA を使用して HPC 最適化インスタンスを作成できるのは、H4D マシンシリーズのみです。
NAME_PATTERN
: インスタンスの名前パターン。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前のインスタンスが--count
フラグで指定された数まで生成されます。COUNT
: 作成するインスタンスの数。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。H4D マシンタイプのいずれかを使用します(例:h4d-highmem-192-lssd
)。IMAGE_FAMILY
: 使用する OS イメージのイメージ ファミリー(例:rocky-linux-9-optimized-gcp
)。サポートされている OS イメージの一覧については、サポートされているオペレーティング システムをご覧ください。IRDMA インターフェースをサポートする OS イメージ バージョンを選択します。IMAGE_PROJECT
: OS イメージのプロジェクト ID(例:rocky-linux-cloud
)。RESERVATION
: この値には、次のいずれかを指定できます。- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
h4d-highmem-exfr-prod
など)を指定します。 - インスタンスを特定のブロックに配置し、コンパクト プレースメント ポリシーを使用しない場合は、
RESERVATION_NAME/reservationBlocks/
RESERVATION_BLOCK_NAME, for example,
h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1` 形式で予約ブロック名を指定します。
予約名または使用可能な予約ブロックを表示するには、容量を表示するをご覧ください。
- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
REGION
: 使用するマシンタイプが使用可能なリージョン(europe-west1
など)を指定します。利用可能なリージョンについては、利用可能なリージョンとゾーンをご覧ください。DISK_SIZE
: 省略可。ブートディスクのサイズ(GiB)。値は整数で指定してください。GVNIC_NAME_PREFIX
: GVNIC インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。GVNIC ネットワーク インターフェースの場合、
network
フラグとsubnet
フラグを省略して、代わりにdefault
ネットワークを使用できます。STACK_TYPE
: 省略可。GVNIC ネットワーク インターフェースのスタックタイプ。STACK_TYPE
は、IPV4_ONLY
またはIPV4_IPV6
のいずれかにする必要があります。デフォルト値はIPV4_ONLY
です。EXTERNAL_IPV4_ADDRESS
: 省略可。ネットワーク インターフェースで使用する静的外部 IPv4 アドレス。外部 IPv4 アドレスは予約済みである必要があります。次のいずれかを行います。- サブネットの有効な IPv4 アドレスを指定します。
- ネットワーク インターフェースで外部 IP アドレスを使用しない場合は、代わりにフラグ
no-address
を使用します。 - インターフェースでエフェメラル外部 IP アドレスを受信する場合は、
address=''
を指定します。
外部 IPv6 アドレスを指定するには、代わりに
--external-ipv6-address
フラグを使用します。RDMA_NAME_PREFIX
: IRDMA インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。- 少なくとも 2 つのネットワーク構成(gVNIC ネットワーク インターフェース用と RDMA ネットワーク インターフェース用)を含む
networkInterfaces
オブジェクトを含めます。 - コンパクト プレースメント ポリシーを使用する場合は、リクエスト本文に
resourcePolicies
オブジェクトも追加します。 - インスタンスの作成時に予約済み容量ブロックを使用するには、
provisioningModel
をRESERVATION_BOUND
に設定します。 - 必要に応じて、インスタンスの残りのプロパティをカスタマイズできます。
リクエスト本文の次の部分を置き換えます。
PROJECT_ID
: インスタンスを作成するプロジェクトのプロジェクト ID。ZONE
: 使用するマシンタイプが使用可能なゾーンを指定します。コンパクト プレースメント ポリシーを使用している場合は、コンパクト プレースメント ポリシーと同じリージョン内のゾーンを使用します。H4D マシンタイプを利用できるリージョンについては、利用可能なリージョンとゾーンをご覧ください。NAME_PATTERN
: インスタンスの名前パターン。たとえば、名前パターンにvm-#
を使用すると、vm-1
やvm-2
といった名前のインスタンスがcount
フィールドで指定された数まで生成されます。COUNT
: 作成するインスタンスの数。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。H4D マシンタイプのいずれかを使用します(例:h4d-highmem-192-lssd
)。DISK_SIZE
: ブートディスクのサイズ(GiB)。IMAGE_PROJECT
: OS イメージのプロジェクト ID(例:debian-cloud
)。IMAGE_FAMILY
: 使用する OS イメージのイメージ ファミリー(例:rocky-linux-9-optimized-gcp
)。サポートされている OS イメージの一覧については、サポートされているオペレーティング システムをご覧ください。IRDMA インターフェースをサポートする OS イメージ バージョンを選択します。GVNIC_NAME_PREFIX
: GVNIC インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞GVNIC ネットワーク インターフェースの場合、
network
フィールドとsubnetwork
フィールドを省略して、代わりにdefault
ネットワークを使用できます。EXTERNAL_IPV4_ADDRESS
: 省略可。ネットワーク インターフェースで使用する静的外部 IPv4 アドレス。外部 IPv4 アドレスは予約済みである必要があります。RDMA_NAME_PREFIX
: IRDMA インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。RESERVATION
: この値には、次のいずれかを指定できます。- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
h4d-highmem-exfr-prod
など)を指定します。 - インスタンスを特定のブロックに配置し、コンパクト プレースメント ポリシーを使用しない場合は、予約ブロック名を
RESERVATION_NAME/reservationBlocks/
RESERVATION_BLOCK_NAME, for example,
h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1` として指定します。
予約名または使用可能な予約ブロックを表示するには、容量を表示するをご覧ください。
- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
省略可: コンパクト プレースメント ポリシーを使用している場合は、リクエスト本文の
...
を次のフィールドに置き換えます。"resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ],
次のように置き換えます。
PROJECT_ID
: コンパクト プレースメント ポリシーのプロジェクト ID。REGION
: コンパクト プレースメント ポリシーのリージョン。POLICY_NAME
: コンパクト プレースメント ポリシーの名前。
リクエストを送信します。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
このチュートリアルで作成した VM インスタンスを含む行を選択します。
[
削除] をクリックし、確認のため [削除] をクリックします。プレースメント ポリシーを削除するには、
gcloud compute resource-policies delete
コマンドを使用します。gcloud compute resource-policies delete POLICY_NAME \ --region=REGION
次のように置き換えます。
POLICY_NAME
: プレースメント ポリシーの名前REGION
: プレースメント ポリシーが配置されているリージョン
- 詳細については、VM の一括作成についてをご覧ください。
- Linux VM に接続する。
- Cloud RDMA を使用して H4D VM で MPI アプリケーションを設定してスケーリングする。
デプロイ用に容量ブロックを予約する
このドキュメントでは、アカウント チームに将来の予約リクエストの作成を依頼して、容量のブロックを予約する方法について説明します。この予約タイプを使用して、VM インスタンスの高密度デプロイの容量を取得します。すべての使用オプションの概要については、以下をご覧ください。
このアクションを使用すると、選択した特定の日時から始まる定義済みの期間に容量ブロックを予約できます。リクエストに基づいて、将来の予約リクエストのドラフトが作成されます。この下書きリクエストを確認して送信し、 Google Cloud が承認すると、Compute Engine は空の予約を自動的に作成(自動作成)します。次に、選択した開始時刻に、Compute Engine はリクエストされた容量を自動作成された予約にプロビジョニングします。予約期間が終了するまで、予約を使用して仮想マシン(VM)インスタンスを作成できます。
将来の予約リクエスト プロセスの一環として、Google は予約済みリソースの割り当てを管理します。割り当てをリクエストする必要はありません。承認された将来の予約の開始時刻に、予約されたリソースの割り当てが不足している場合、Google は割り当てを増やします。
容量ブロックを予約する手順は次のとおりです。
省略可: プレースメント ポリシーを作成する
VM をできるだけ近づけて配置する場合は、プレースメント ポリシーを使用します。ただし、VM を特定のブロックに配置する場合は、この手順をスキップして、VM の一括作成時に必要なブロックの名前を指定します。
Cloud RDMA を使用して通信するインスタンスは、単一のゾーンに配置する必要があります。より厳密には、単一のクラスタ ファブリック内に配置する必要があります。コンパクト プレースメント ポリシーを作成し、最大距離値を指定して、ゾーン内の最小コンパクトさを設定できます。最大距離値を指定する場合、コンパクト プレースメント ポリシーを割り当てることができるインスタンスの数には上限があり、選択する値によって上限が異なります。
コンパクト プレースメント ポリシーを作成するには、次のいずれかのオプションを選択します。
gcloud
コンパクト プレースメント ポリシーを作成するには、gcloud beta compute resource-policies create group-placement
コマンドを使用します。
gcloud beta compute resource-policies create group-placement POLICY_NAME \
--collocation=collocated \
--max-distance=MAX_DISTANCE \
--region=REGION
次のように置き換えます。
REST
コンパクト プレースメント ポリシーを作成するには、beta.resourcePolicies.insert
メソッドに POST
リクエストを送信します。リクエストの本文に、COLLOCATED
に設定された collocation
フィールドと、maxDistance
フィールドを含めます。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
{
"name": "POLICY_NAME",
"groupPlacementPolicy": {
"collocation": "COLLOCATED",
"maxDistance": "MAX_DISTANCE"
}
}
次のように置き換えます。
Virtual Private Cloud ネットワークを作成する
RDMA 対応インスタンスには、少なくとも 2 つのネットワーク インターフェース(NIC)が必要です。
Cloud RDMA を使用するインスタンスには、IRDMA
インターフェースを 1 つだけ設定できます。最大 8 個の追加の GVNIC
ネットワーク インターフェースを追加して、インスタンスごとに合計 10 個の NIC を使用できます。
インスタンスのネットワーク インターフェースを構成する際の次のルールを確認します。
インスタンスで使用する Falcon Virtual Private Cloud(VPC)ネットワークを設定するには、ドキュメントに記載されている手順に沿って操作するか、提供されているスクリプトを使用します。
手順ガイド
ネットワークを作成するには、次の操作を行います。
スクリプト
インスタンスごとに最大 9 個の GVNIC
ネットワーク インターフェースと 1 個の IRDMA
ネットワーク インターフェースを作成できます。各ネットワーク インターフェースは、別々のネットワークに接続する必要があります。ネットワークを作成するには、次のスクリプトを使用します。このスクリプトは、GVNIC
用に 2 つのネットワークを作成し、Falcon VPC ネットワーク プロファイルを使用する IRDMA
用に 1 つのネットワークを作成します。
#!/bin/bash
# Create standard VPC (networks and subnets) for the two GVNIC interfaces
for N in $(seq 0 1); do
gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
--subnet-mode=custom
gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
--network=GVNIC_NAME_PREFIX-net-$N \
--region=<var>REGION</var> \
--range=10.$N.0.0/16
gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
--network=GVNIC_NAME_PREFIX-net-$N \
--action=ALLOW \
--rules=tcp:0-65535,udp:0-65535,icmp \
--source-ranges=10.0.0.0/8
done
# 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 a firewall rule for the external IP address for the
# first GVNIC network 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 a network for the RDMA over Falcon network interface
gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \
--network-profile=ZONE-vpc-falcon \
--subnet-mode custom
# Create a subnet for the RDMA network
gcloud beta compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
--network=RDMA_NAME_PREFIX-irdma \
--region=REGION \
--range=10.2.0.0/16
# offset to avoid overlap with GVNIC subnet ranges
次のように置き換えます。
RDMA 対応インスタンスを一括作成する
Cloud RDMA で H4D インスタンスを作成する前に、次の制限事項を確認してください。
次の手順では、最初の 2 つのネットワーク インターフェースが GVNIC インターフェースとして構成され、3 番目のネットワーク インターフェースが IRDMA ネットワーク インターフェースとして構成された RDMA 対応インスタンスを一括で作成する方法を示します。
gcloud
3 つの --network-interface
フラグ(GVNIC インターフェース用に 2 つ、IRDMA インターフェース用に 1 つ)を指定して、gcloud compute instances create
コマンドを使用します。コンパクト プレースメント ポリシーを使用することを選択した場合は、--resource-policies=POLICY_NAME
フラグも追加します。POLICY_NAME
は、コンパクト プレースメント ポリシーの名前に置き換えます。必要に応じて、残りのインスタンス オプションをカスタマイズできます。
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--count=COUNT \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image=project= IMAGE_PROJECT \
--reservation-affinity=specific \
--reservation=RESERVATION \
--provisioning-model=RESERVATION_BOUND \
--instance-termination=action=DELETE \
--maintenance-policy=TERMINATE \
--region=REGION \
--boot-disk-type=hyperdisk-balanced \
--boot-disk-size=DISK_SIZE \
--scopes=cloud-platform \
--network-interface=nic-type=GVNIC, \
network=GVNIC_NAME_PREFIX-net-0, \
subnet=GVNIC_NAME_PREFIX-sub-0, \
stack-type=STACK_TYPE, \
address=EXTERNAL_IPV4_ADDRESS \
--network-interface=nic-type=GVNIC, \
network=GVNIC_NAME_PREFIX-net-1, \
subnet=GVNIC_NAME_PREFIX-sub-1, no-address \
--network-interface=nic-type=IRDMA, \
network=RDMA_NAME_PREFIX-irdma, \
subnet=RDMA_NAME_PREFIX-irdma-sub, \
stack-type=IPV4_ONLY, no-address
次のように置き換えます。
REST
RDMA 対応インスタンスを一括作成するには、次の設定で beta instances.bulkInsert
メソッドに POST
リクエストを送信します。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
{
"namePattern":"NAME_PATTERN",
"count":"COUNT",
"instanceProperties":{
"machineType":"MACHINE_TYPE",
"disks":[
{
"boot":true,
"initializeParams":{
"diskSizeGb":"DISK_SIZE",
"diskType":"hyperdisk-balanced",
"sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
},
"mode":"READ_WRITE",
"type":"PERSISTENT"
}
],
"networkInterfaces": [
{
"network": "GVNIC_NAME_PREFIX-net-0",
"subnetwork": "GVNIC_NAME_PREFIX-sub-0",
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT",
"name": "External IP",
"natIP": "EXTERNAL_IPV4_ADDRESS"
}
],
"stackType": "IPV4_ONLY",
"nicType": "GVNIC",
},
{
"network": "GVNIC_NAME_PREFIX-net-1",
"subnetwork": "GVNIC_NAME_PREFIX-sub-1",
"stackType": "IPV4_ONLY",
"nicType": "GVNIC",
},
{
"network": "RDMA_NAME_PREFIX-irdma",
"subnetwork": "RDMA_NAME_PREFIX-irdma-sub",
"stackType": "IPV4_ONLY",
"nicType": "IRDMA",
}
],
"reservationAffinity":{
"consumeReservationType":"SPECIFIC_RESERVATION",
"key":"compute.googleapis.com/reservation-name",
"values":[
"RESERVATION"
],
"scheduling":{
"provisioningModel":"RESERVATION_BOUND",
"instanceTerminationAction":"DELETE",
"onHostMaintenance": "TERMINATE",
"automaticRestart":true
}
},
...
}
}
次の手順を行います。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID