Confidential VM で GPU を使用するには、a3-highgpu-1g マシンタイプに基づいてスポットまたは flex-start プロビジョニング モデルを使用して Confidential VM インスタンスを作成し、Intel TDX を使用する必要があります。VM インスタンスを作成したら、接続された GPU で Confidential Computing モードを有効にします。
Spot モデルまたは Flex Start モデルを使用して VM インスタンスを作成するには、次の操作を行います。
スポットモデルを使用するには、アクセラレータ最適化 Spot VM インスタンスを作成します。詳細な手順については、スポットモデルをご覧ください。
Flex Start モデルを使用するには、マネージド インスタンス グループ(MIG)を作成します。詳細な手順については、Flex Start モデルをご覧ください。
スポットモデル
gcloud
gcloud CLI を使用してアクセラレータ最適化 Spot VM インスタンスを作成するには、--provisioning-model
フラグを指定して instances create
サブコマンドを使用します。
gcloud compute instances create VM_NAME \
--provisioning-model=SPOT \
--image-family=IMAGE_FAMILY_NAME \
--image-project=IMAGE_PROJECT \
--machine-type=a3-highgpu-1g \
--zone=ZONE \
--maintenance-policy=TERMINATE \
--boot-disk-size=30G \
--confidential-compute-type=TDX
次の値を指定します。
VM_NAME
: 新しい VM インスタンスの名前。IMAGE_PROJECT
: サポートされているオペレーティング システム イメージを含むプロジェクト。Ubuntu イメージにはubuntu-os-cloud
イメージ プロジェクトを使用することをおすすめします。必要に応じて、Container-Optimized OS イメージにconfidential-vm-images
イメージ プロジェクトを使用できます。IMAGE_FAMILY_NAME
: Confidential VM でサポートされるオペレーティング システム イメージのファミリー。ubuntu-os-cloud
イメージ プロジェクトを使用する場合は、ubuntu-2204-lts
イメージ ファミリーを使用することをおすすめします。confidential-vm-images
プロジェクトの Container-Optimized OS イメージの場合は、cos-tdx-113-lts
イメージ ファミリーを使用します。ZONE
: VM を作成するサポートされているゾーン。
REST
Spot VM インスタンスを作成するには、適切な本文コンテンツを含む次の POST リクエストを送信します。
HTTP メソッドと URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
リクエストの本文(JSON):
{
"name": "VM_NAME",
"confidentialInstanceConfig": {
"confidentialInstanceType": "TDX"
},
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT"
},
"disks": [
{
"type": "PERSISTENT",
"autoDelete": true,
"index": 0,
"boot": true,
"kind": "compute#attachedDisk",
"mode": "READ_WRITE",
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME",
"diskSizeGb": "30"
}
}
],
"networkInterfaces": [
{
"name": "nic0",
"network": "projects/PROJECT_ID/global/networks/default",
"accessConfigs": [
{
"name": "external-nat",
"type": "ONE_TO_ONE_NAT",
"kind": "compute#accessConfig",
"networkTier": "PREMIUM"
}
],
"kind": "compute#networkInterface"
}
],
"machineType": "zones/ZONE/machineTypes/a3-highgpu-1g",
}
次の値を指定します。
VM_NAME
: 新しい VM インスタンス テンプレートの名前。IMAGE_PROJECT
: サポートされているオペレーティング システム イメージを含むプロジェクト。Ubuntu イメージにはubuntu-os-cloud
イメージ プロジェクトを使用することをおすすめします。必要に応じて、Container-Optimized OS イメージにconfidential-vm-images
イメージ プロジェクトを使用できます。IMAGE_FAMILY_NAME
: Confidential VM でサポートされるオペレーティング システム イメージのファミリー。ubuntu-os-cloud
イメージ プロジェクトを使用する場合は、ubuntu-2204-lts
イメージ ファミリーを使用することをおすすめします。confidential-vm-images
プロジェクトの Container-Optimized OS イメージの場合は、cos-tdx-113-lts
イメージ ファミリーを使用します。PROJECT_ID
: 省略可。VM を作成するプロジェクトの ID。ZONE
: VM を作成するサポートされているゾーン。
Flex Start モデル
Flex Start モデルを使用するには、インスタンス テンプレートを作成し、そのテンプレートを使用して MIG を作成します。その後、サイズ変更リクエストを使用して、GPU VM インスタンスを MIG に追加できます。
Flex Start プロビジョニング モデルで MIG サイズ変更リクエストを使用すると、GPU VM インスタンスの入手可能性が向上します。詳細については、MIG のサイズ変更リクエストについてをご覧ください。
始める前に
- リクエストするリソースに十分な GPU 割り当てがあることを確認するには、GPU 割り当てを確認します。GPU を使用する Confidential VM インスタンスの場合は、リソースを使用するためにプリエンプティブル GPU 割り当てをリクエストします。GPU 割り当てをリクエストするときは、各リージョンで作成する GPU モデルに対する割り当てに加え、すべてのリージョンにおけるすべてのタイプの GPU の合計数に対するグローバル割り当て(
GPUs (all regions)
)もリクエストする必要があります。 - 割り当ての使用量については、GPU VM とプリエンプティブルの数量に基づく割り当てをご覧ください。
- MIG を作成するための前提条件と、MIG でサイズ変更リクエストを作成する際の制限事項をご覧ください。
GPU VM インスタンスを使用して MIG を作成する
インスタンス テンプレートを作成し、そのテンプレートを使用して MIG を作成するには、次の手順を行います。
インスタンス テンプレートを作成します。
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=a3-highgpu-1g \ --image-project=IMAGE_PROJECT \ --image-family=IMAGE_FAMILY_NAME \ --maintenance-policy=TERMINATE \ --reservation-affinity=none \ --boot-disk-size=30G \ --confidential-compute-type=TDX \ --project=PROJECT_ID
セキュアブートを有効にするには、VM インスタンスの起動に
--shielded-secure-boot
フラグを使用します。次の値を指定します。
INSTANCE_TEMPLATE_NAME
: 新しい VM インスタンス テンプレートの名前。IMAGE_PROJECT
: サポートされているオペレーティング システム イメージを含むプロジェクト。Ubuntu イメージにはubuntu-os-cloud
イメージ プロジェクトを使用することをおすすめします。必要に応じて、Container-Optimized OS イメージにconfidential-vm-images
イメージ プロジェクトを使用できます。IMAGE_FAMILY_NAME
: Confidential VM でサポートされるオペレーティング システム イメージのファミリー。ubuntu-os-cloud
イメージ プロジェクトを使用する場合は、ubuntu-2204-lts
イメージ ファミリーを使用することをおすすめします。confidential-vm-images
プロジェクトの Container-Optimized OS イメージの場合は、cos-tdx-113-lts
イメージ ファミリーを使用します。PROJECT_ID
: 省略可。VM を作成するプロジェクトの ID。
REST
Confidential VM インスタンス テンプレートを作成するには、適切な本文コンテンツを含む次の POST リクエストを送信します。
HTTP メソッドと URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
リクエストの本文(JSON):
{ "name": "INSTANCE_TEMPLATE_NAME", "properties": { "confidentialInstanceConfig": { "confidentialInstanceType": "TDX" }, "scheduling": { "onHostMaintenance": "TERMINATE", "provisioningModel": "STANDARD", "automaticRestart": true, "preemptible": false }, "disks": [ { "type": "PERSISTENT", "autoDelete": true, "index": 0, "boot": true, "kind": "compute#attachedDisk", "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME", "diskSizeGb": "30" } } ], "networkInterfaces": [ { "name": "nic0", "network": "projects/PROJECT_ID/global/networks/default", "accessConfigs": [ { "name": "external-nat", "type": "ONE_TO_ONE_NAT", "kind": "compute#accessConfig", "networkTier": "PREMIUM" } ], "kind": "compute#networkInterface" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, "canIpForward": false, "machineType": "a3-highgpu-1g", "metadata": { "fingerprint": "3y_uc6s9Qvs=", "kind": "compute#metadata" } } }
セキュアブートを有効にするには、VM インスタンスの起動用に次のオブジェクトをオプションで含めることができます。
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }
次の値を指定します。
INSTANCE_TEMPLATE_NAME
: 新しい VM インスタンス テンプレートの名前。IMAGE_PROJECT
: サポートされているオペレーティング システム イメージを含むプロジェクト。Ubuntu イメージにはubuntu-os-cloud
イメージ プロジェクトを使用することをおすすめします。必要に応じて、Container-Optimized OS イメージにconfidential-vm-images
イメージ プロジェクトを使用できます。IMAGE_FAMILY_NAME
: Confidential VM でサポートされるオペレーティング システム イメージのファミリー。ubuntu-os-cloud
イメージ プロジェクトを使用する場合は、ubuntu-2204-lts
イメージ ファミリーを使用することをおすすめします。confidential-vm-images
プロジェクトの Container-Optimized OS イメージの場合は、cos-tdx-113-lts
イメージ ファミリーを使用します。PROJECT_ID
: 省略可。VM を作成するプロジェクトの ID。ZONE
: MIG を作成するサポートされているゾーン。
MIG とサイズ変更リクエストを作成して、GPU VM インスタンスを一度にすべて追加します。
MIG に存在するインスタンスを一覧表示します。
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE \ --project=PROJECT_ID
次の値を指定します。
INSTANCE_GROUP_NAME
: MIG の名前。ZONE
: VM インスタンスのリストを取得するサポートされているゾーン。PROJECT_ID
: 省略可。VM インスタンスのリストを取得するプロジェクトの ID。
REST
すべてのインスタンスを一覧表示するには、次の GET リクエストを送信します。
HTTP メソッドと URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
インスタンスのリストを特定のゾーンに絞り込むには、次の GET リクエストを送信します。
HTTP メソッドと URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE/instanceTemplates
次の値を指定します。
ZONE
: VM インスタンスのリストを取得するサポートされているゾーン。PROJECT_ID
: VM インスタンスのリストを取得するプロジェクトの ID。
GPU で Confidential Computing モードを有効にする
gcloud compute ssh コマンドを使用して、MIG の VM インスタンスに接続します。
gcloud compute ssh
パッケージ リストを更新し、必要なツールとライブラリをインストールします。
sudo apt-get update --yes sudo apt-get install linux-headers-$(uname -r) sudo apt install -y build-essential libxml2 libncurses5-dev pkg-config libvulkan1 gcc-12
VM インスタンスに適切な GPU ドライバをインストールします。セキュアブートが有効になっている VM インスタンスについては、GPU ドライバをインストールする(セキュアブート VM)をご覧ください。
nvidia-550-server-open
ドライバ バージョンを使用することをおすすめします。GPU と GPU ドライバ間の安全な通信を構成するには、Linux Kernel Crypto API(LKCA)を有効にします。
echo "install nvidia /sbin/modprobe ecdsa_generic; /sbin/modprobe ecdh; /sbin/modprobe --ignore-install nvidia" | sudo tee /etc/modprobe.d/nvidia-lkca.conf sudo update-initramfs -u
GPU と GPU ドライバ間の安全な Security Protocol and Data Model(SPDM)接続を確保するには、永続モードを有効にします。
sudo test -f /usr/lib/systemd/system/nvidia-persistenced.service && sudo sed -i "s/no-persistence-mode/uvm-persistence-mode/g" /usr/lib/systemd/system/nvidia-persistenced.service sudo systemctl daemon-reload
VM インスタンスを再起動して、LKCA と永続モードの構成を適用します。
sudo reboot
(省略可)次の CUDA サンプルをインストールします。
wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.5.tar.gz tar xzvf cuda-samples.tar.gz
次のステップ
- GPU で情報保護モードが有効になっていることを確認する方法を学習する。