Membuat instance Confidential VM dengan GPU

Untuk menggunakan GPU dengan Confidential VM, Anda harus membuat instance Confidential VM menggunakan model penyediaan spot atau flex-start berdasarkan jenis mesin a3-highgpu-1g dan menggunakan Intel TDX. Setelah membuat instance VM, Anda kemudian mengaktifkan mode confidential computing pada GPU yang terpasang.

Untuk membuat instance VM menggunakan model spot atau flex-start, lakukan hal berikut:

Sebelum memulai

  • Untuk memastikan Anda memiliki kuota GPU yang cukup untuk resource yang Anda minta, periksa kuota GPU Anda. Untuk instance Confidential VM dengan GPU, minta kuota GPU preemptible untuk menggunakan resource tersebut. Saat meminta kuota GPU, Anda harus meminta kuota untuk model GPU yang ingin dibuat di setiap region, dan kuota global tambahan (GPUs (all regions)) untuk jumlah total GPU dari semua jenis di semua region.

  • Untuk memahami penggunaan kuota, baca artikel VM GPU dan kuota alokasi preemptible.

  • Jangan flash firmware GPU instance Confidential VM dengan GPU yang terpasang. Operasi ini dapat menyebabkan ketidakstabilan dan potensi error pada sistem.

Model spot

gcloud

Untuk membuat instance VM Spot yang dioptimalkan akselerator dengan gcloud CLI, gunakan sub-perintah instances create dengan flag --provisioning-model.

  gcloud compute instances create INSTANCE_NAME \
      --provisioning-model=SPOT \
      --confidential-compute-type=TDX \
      --machine-type=a3-highgpu-1g \
      --maintenance-policy=TERMINATE \
      --zone=ZONE_NAME \
      --image-project=IMAGE_PROJECT \
      --image-family=IMAGE_FAMILY_NAME \
      --boot-disk-size=30G

Berikan nilai berikut:

  • INSTANCE_NAME: Nama instance VM baru.

  • IMAGE_PROJECT: Project yang berisi image sistem operasi yang didukung. Sebaiknya gunakan project gambar ubuntu-os-cloud untuk image Ubuntu. Anda dapat secara opsional menggunakan project image confidential-vm-images untuk image Container-Optimized OS.

  • IMAGE_FAMILY_NAME: Kelompok untuk image sistem operasi yang didukung Confidential VM. Saat menggunakan project image ubuntu-os-cloud, sebaiknya gunakan kelompok image ubuntu-2204-lts. Untuk image Container-Optimized OS dari project confidential-vm-images, gunakan kelompok image cos-tdx-113-lts.

  • ZONE_NAME: Zona yang didukung untuk membuat VM.

REST

Untuk membuat instance Spot VM, kirim permintaan POST berikut dengan konten isi yang sesuai.

Metode HTTP dan URL:

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

Meminta isi JSON:

  {
    "name": "INSTANCE_NAME",
    "confidentialInstanceConfig": {
      "confidentialInstanceType": "TDX"
    },
    "machineType": "zones/ZONE_NAME/machineTypes/a3-highgpu-1g",
    "scheduling": {
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "SPOT"
    },
    "disks": [
      {
        "autoDelete": true,
        "boot": true,
        "index": 0,
        "initializeParams": {
          "diskSizeGb": "30",
          "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
        },
        "kind": "compute#attachedDisk",
        "mode": "READ_WRITE",
        "type": "PERSISTENT"
      }
    ],
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT",
            "kind": "compute#accessConfig",
            "networkTier": "PREMIUM"
          }
        ],
        "kind": "compute#networkInterface",
        "name": "nic0",
        "network": "projects/PROJECT_ID/global/networks/default"
      }
    ]
  }

Berikan nilai berikut:

  • INSTANCE_NAME: Nama template instance VM baru.

  • IMAGE_PROJECT: Project yang berisi image sistem operasi yang didukung. Sebaiknya gunakan project gambar ubuntu-os-cloud untuk image Ubuntu. Anda dapat secara opsional menggunakan project image confidential-vm-images untuk image Container-Optimized OS.

  • IMAGE_FAMILY_NAME: Kelompok untuk image sistem operasi yang didukung Confidential VM. Saat menggunakan project image ubuntu-os-cloud, sebaiknya gunakan kelompok image ubuntu-2204-lts. Untuk image Container-Optimized OS dari project confidential-vm-images, gunakan kelompok image cos-tdx-113-lts.

  • PROJECT_ID: Opsional. ID project tempat VM dibuat.

  • ZONE_NAME: Zona yang didukung untuk membuat VM.

Model flex-start

Untuk menggunakan model mulai fleksibel, Anda harus membuat template instance terlebih dahulu, lalu membuat grup instance terkelola (MIG) menggunakan template tersebut. Kemudian, Anda dapat menambahkan instance VM GPU ke MIG menggunakan permintaan pengubahan ukuran.

Menggunakan permintaan pengubahan ukuran MIG dengan model penyediaan flex-start akan meningkatkan ketersediaan instance VM GPU. Untuk mengetahui informasi selengkapnya, lihat Tentang permintaan pengubahan ukuran di MIG.

Sebelum memulai

Lihat prasyarat untuk membuat MIG dan batasan untuk membuat permintaan perubahan ukuran di MIG.

Membuat MIG dengan instance VM GPU

Untuk membuat template instance, lalu menggunakan template tersebut untuk membuat MIG, selesaikan langkah-langkah berikut.

  1. Membuat template instance.

    gcloud

    gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --provisioning-model=FLEX_START \
        --confidential-compute-type=TDX \
        --machine-type=a3-highgpu-1g \
        --maintenance-policy=TERMINATE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY_NAME \
        --reservation-affinity=none \
        --boot-disk-size=30G \
        --instance-termination-action=DELETE \
        --max-run-duration=RUN_DURATION \
        --project=PROJECT_ID
    

    Untuk mengaktifkan Booting Aman, Anda dapat menggunakan flag --shielded-secure-boot untuk booting instance VM (opsional).

    Berikan nilai berikut:

    • INSTANCE_TEMPLATE_NAME: Nama template instance VM baru.

    • IMAGE_PROJECT: Project yang berisi image sistem operasi yang didukung. Sebaiknya gunakan project gambar ubuntu-os-cloud untuk image Ubuntu. Anda dapat secara opsional menggunakan project image confidential-vm-images untuk image Container-Optimized OS.

    • IMAGE_FAMILY_NAME: Kelompok untuk image sistem operasi yang didukung Confidential VM. Saat menggunakan project image ubuntu-os-cloud, sebaiknya gunakan kelompok image ubuntu-2204-lts. Untuk image Container-Optimized OS dari project confidential-vm-images, gunakan kelompok image cos-tdx-113-lts.

    • RUN_DURATION: Durasi yang Anda inginkan untuk menjalankan instance VM yang diminta. Anda harus memformat nilai sebagai jumlah hari, jam, menit, atau detik, diikuti dengan d, h, m, dan s. Misalnya, tentukan 30m selama 30 menit atau 1d2h3m4s untuk satu hari, dua jam, tiga menit, dan empat detik. Nilainya harus antara 10 menit dan tujuh hari.

    • PROJECT_ID: Opsional. ID project tempat VM dibuat.

    REST

    Untuk membuat template instance Confidential VM, kirim permintaan POST berikut dengan konten isi yang sesuai.

    Metode HTTP dan URL:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
    

    Meminta isi JSON:

    {
      "name": "INSTANCE_TEMPLATE_NAME",
      "properties": {
        "confidentialInstanceConfig": {
          "confidentialInstanceType": "TDX"
        },
        "machineType": "a3-highgpu-1g",
        "scheduling": {
          "instanceTerminationAction": "DELETE",
          "maxRunDuration": {
            "seconds": RUN_DURATION
          },
          "automaticRestart": true,
          "onHostMaintenance": "TERMINATE",
          "provisioningModel": "FLEX_START",
          "preemptible": false
        },
        "disks": [
          {
            "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"
            },
            "type": "PERSISTENT"
          }
        ],
        "networkInterfaces": [
          {
            "accessConfigs": [
              {
                "kind": "compute#accessConfig",
                "name": "external-nat",
                "networkTier": "PREMIUM",
                "type": "ONE_TO_ONE_NAT"
              }
            ],
            "kind": "compute#networkInterface",
            "name": "nic0",
            "network": "projects/PROJECT_ID/global/networks/default"
          }
        ],
        "reservationAffinity": {
          "consumeReservationType": "NO_RESERVATION"
        },
        "canIpForward": false
      }
    }
    

    Untuk mengaktifkan Booting Aman, Anda dapat secara opsional menyertakan objek berikut untuk booting instance VM.

    "shieldedInstanceConfig": {
      "enableIntegrityMonitoring": true,
      "enableSecureBoot": true,
      "enableVtpm": true
    }
    

    Berikan nilai berikut:

    • PROJECT_ID: Opsional. ID project tempat VM dibuat.

    • ZONE_NAME: Zona yang didukung untuk membuat MIG.

    • INSTANCE_TEMPLATE_NAME: Nama template instance VM baru.

    • IMAGE_PROJECT: Project yang berisi image sistem operasi yang didukung. Sebaiknya gunakan project gambar ubuntu-os-cloud untuk image Ubuntu. Anda dapat secara opsional menggunakan project image confidential-vm-images untuk image Container-Optimized OS.

    • IMAGE_FAMILY_NAME: Kelompok untuk image sistem operasi yang didukung Confidential VM. Saat menggunakan project image ubuntu-os-cloud, sebaiknya gunakan kelompok image ubuntu-2204-lts. Untuk image Container-Optimized OS dari project confidential-vm-images, gunakan kelompok image cos-tdx-113-lts.

    • RUN_DURATION: Durasi, dalam detik, yang Anda inginkan untuk menjalankan instance VM yang diminta. Nilai harus antara 600 dan 604800 detik, yang sesuai dengan rentang antara 10 menit dan tujuh hari.

  2. Buat MIG dan permintaan pengubahan ukuran untuk menambahkan instance VM GPU sekaligus.

  3. Mencantumkan instance yang ada di MIG.

    gcloud

    gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    Berikan nilai berikut:

    • INSTANCE_GROUP_NAME: Nama MIG.

    • ZONE_NAME: Zona yang didukung untuk mendapatkan daftar instance VM.

    • PROJECT_ID: Opsional. ID project untuk mendapatkan daftar instance VM.

    REST

    Untuk mencantumkan semua instance, kirim permintaan GET berikut.

    Metode HTTP dan URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    

    Untuk mempersempit daftar instance ke zona tertentu, kirim permintaan GET berikut.

    Metode HTTP dan URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
    

    Berikan nilai berikut:

    • ZONE_NAME: Zona yang didukung untuk mendapatkan daftar instance VM.

    • PROJECT_ID: ID project tempat daftar instance VM diambil.

Mengaktifkan mode komputasi rahasia di GPU

  1. Hubungkan ke instance VM di MIG menggunakan perintah gcloud compute ssh.

    gcloud compute ssh
    
  2. Perbarui daftar paket dan instal alat serta library yang diperlukan.

    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
    
  3. Instal driver GPU yang sesuai pada instance VM. Untuk instance VM yang mengaktifkan Booting Aman, lihat Menginstal driver GPU (VM Booting Aman). Sebaiknya gunakan versi driver nvidia-driver-575-open.

  4. Untuk mengonfigurasi komunikasi yang aman antara GPU dan driver GPU, aktifkan 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
    
  5. Aktifkan mode persistensi untuk membuat koneksi Security Protocol and Data Model (SPDM) yang aman antara GPU dan driver GPU.

    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
    
  6. Mulai ulang instance VM untuk menerapkan konfigurasi mode persistensi dan LKCA.

    sudo reboot
    
  7. (Opsional) Instal contoh CUDA berikut.

    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
    

Langkah berikutnya

Pelajari cara memverifikasi bahwa mode rahasia diaktifkan di GPU.