יצירת מכונה וירטואלית חסויה עם GPU

כדי להשתמש ב-GPU עם מכונות וירטואליות מסוג Confidential VM, צריך ליצור מכונה וירטואלית באמצעות סוג מכונה נתמך ומודל הקצאת משאבים של מכונה. אחרי שיוצרים את המכונה הווירטואלית, מפעילים את מצב Confidential Computing ב-GPU המצורף.

מכונות וירטואליות (VM) חסויות עם GPUs של NVIDIA זמינות בסוגי המכונות הבאים:

  • סוג מכונה A3 High: מעבדי GPU של NVIDIA H100 עם Intel TDX. יש תמיכה במודלים של הקצאת משאבים לפי דרישה ושל הקצאת משאבים גמישה.

  • סוג מכונת G4 (תצוגה מקדימה): NVIDIA RTX PRO 6000 עם AMD SEV. תמיכה במודלים סטנדרטיים (לפי דרישה), במודלים של הקצאת משאבים נקודתית ובמודלים של הקצאת משאבים עם התחלה גמישה, וגם בהזמנות.

לפני שיוצרים מכונת VM חסויה עם GPU, צריך לוודא שיש מספיק מכסת GPU. מידע נוסף זמין במאמר בנושא דרישות מכסת GPU.

יצירת מכונה וירטואלית חסויה עם GPU

כדי ליצור מופע של מכונה וירטואלית חסויה עם GPU מצורף, משתמשים באחד ממודלי ההקצאה הבאים:

מודל רגיל (על פי דרישה) או מודל ספוט

gcloud

כדי ליצור מכונה וירטואלית רגילה (על פי דרישה) או VM במודל Spot שעברה אופטימיזציה להאצה באמצעות ה-CLI של gcloud, משתמשים בפקודת המשנה instances create עם הדגל --provisioning-model.

gcloud compute instances create INSTANCE_NAME \
    --provisioning-model=PROVISIONING_MODEL \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --maintenance-policy=TERMINATE \
    --zone=ZONE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY_NAME \
    --boot-disk-size=30G

כדי להפעיל הפעלה מאובטחת, אפשר להשתמש בדגל --shielded-secure-boot לאתחול של מכונות וירטואליות.

מספקים את הערכים הבאים:

  • INSTANCE_NAME: השם של המופע החדש של המכונה הווירטואלית.

  • PROVISIONING_MODEL: מודל הקצאת המשאבים שנתמך על ידי סוג המכונה. צריך לבחור אחת מהאפשרויות:

    • סוג מכונה A3 High: SPOT למופעים של VM במודל Spot.

    • סוג מכונה G4 (גרסת Preview): ‏ STANDARD למכונות וירטואליות רגילות (על פי דרישה) או SPOT ל-VM במודל Spot. אם לא מציינים ערך, ברירת המחדל היא STANDARD.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. צריך לבחור אחת מהאפשרויות:

    • סוג המכונה A3 High (a3-highgpu-1g): TDX

    • סוג מכונה G4 (g4-standard-48): SEV

  • MACHINE_TYPE_NAME: סוג מכונת ה-VM. בוחרים אחת מהאפשרויות הבאות:

  • ZONE_NAME: האזור הנתמך שבו רוצים ליצור את המכונה הווירטואלית.

  • IMAGE_PROJECT: הפרויקט שמכיל את קובץ אימג' של המערכת הנתמכת. צריך לבחור אחת מהאפשרויות:

    • סוג המכונה A3 High: ubuntu-os-cloud לתמונות של Ubuntu או confidential-vm-images לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

    • סוג מכונה G4 (תצוגה מקדימה): ubuntu-os-cloud לתמונות של Ubuntu או cos-cloud לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

  • IMAGE_FAMILY_NAME: המשפחה של תמונת מערכת ההפעלה שנתמכת על ידי Confidential VM. בוחרים את משפחת התמונות בהתאם לסוג המכונה:

    • סוג מכונה A3 High:

      • ubuntu-2204-lts לפרויקטים של תמונות Ubuntu.

      • cos-tdx-113-lts לפרויקטים של קובצי אימג' של מערכת הפעלה שמותאמת לקונטיינרים.

    • סוג מכונה G4 (תצוגה מקדימה):

      • ubuntu-2404-lts-amd64 לפרויקטים של תמונות Ubuntu.

      • cos-125-lts לפרויקטים של תמונות של מערכת הפעלה שמותאמת לקונטיינרים.

REST

כדי ליצור מכונה וירטואלית רגילה (על פי דרישה) או VM במודל Spot, שולחים את בקשת ה-POST הבאה עם תוכן הגוף המתאים.

משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:

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

משתמשים בתוכן הבא של בקשת JSON:

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE_NAME",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
  },
  "scheduling": {
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true,
    "provisioningModel": "PROVISIONING_MODEL"
  },
  "disks": [
    {
      "boot": true,
      "autoDelete": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY",
        "diskSizeGb": "30"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

מספקים את הערכים הבאים:

  • PROJECT_ID: אופציונלי. מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.

  • ZONE: האזור הנתמך שבו רוצים ליצור את המכונה הווירטואלית.

  • INSTANCE_NAME: השם של המופע החדש של המכונה הווירטואלית.

  • MACHINE_TYPE_NAME: סוג המכונה הווירטואלית. בוחרים באחת מהאפשרויות הבאות:

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. צריך לבחור אחת מהאפשרויות:

    • סוג המכונה A3 High (a3-highgpu-1g): TDX

    • סוג מכונה G4 (g4-standard-48): SEV

  • PROVISIONING_MODEL: מודל הקצאת המשאבים שנתמך על ידי סדרת המכונות. צריך לבחור אחת מהאפשרויות:

    • סוג מכונה A3 High: ‏SPOT למופעים של VM במודל Spot.

    • סוג מכונה G4 (גרסת Preview): ‏ STANDARD למכונות VM רגילות (על פי דרישה) או SPOT למכונות VM מסוג Spot. אם לא מציינים ערך, ברירת המחדל היא STANDARD.

  • IMAGE_PROJECT: הפרויקט שמכיל את קובץ אימג' של המערכת הנתמכת. צריך לבחור אחת מהאפשרויות:

    • סוג המכונה A3 High: ubuntu-os-cloud לתמונות של Ubuntu או confidential-vm-images לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

    • סוג מכונה G4 (תצוגה מקדימה): ubuntu-os-cloud לתמונות של Ubuntu או cos-cloud לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

  • IMAGE_FAMILY: המשפחה של תמונת מערכת ההפעלה שנתמכת על ידי Confidential VM. בוחרים את משפחת התמונות בהתאם לסוג המכונה:

    • סוג מכונה A3 High:

      • ubuntu-2204-lts לפרויקטים של תמונות Ubuntu.

      • cos-tdx-113-lts לפרויקטים של תמונות של מערכת הפעלה שמותאמת לקונטיינרים.

    • סוג מכונה G4 (תצוגה מקדימה):

      • ubuntu-2404-lts-amd64 לפרויקטים של תמונות Ubuntu.

      • cos-125-lts לפרויקטים של תמונות של מערכת הפעלה שמותאמת לקונטיינרים.

מודל Flex-start

כדי להשתמש במודל התחלה גמישה (Flex-start), צריך קודם ליצור תבנית של הגדרות מכונה, ואז להשתמש בתבנית הזו כדי ליצור קבוצת מופעי מכונה מנוהלים (MIG). לאחר מכן תוכלו להוסיף מכונות וירטואליות עם GPU לקבוצת ה-MIG באמצעות בקשות לשינוי גודל.

שימוש בבקשה לשינוי גודל של MIG עם מודל הקצאת המשאבים של flex-start משפר את הזמינות של מכונות וירטואליות עם GPU. מידע נוסף זמין במאמר מידע על בקשות לשינוי גודל בקבוצת MIG.

לפני שמתחילים

יצירת קבוצת מופעי מכונה מנוהלים (MIG) עם מכונות וירטואליות של GPU

כדי ליצור תבנית של הגדרות מכונה, ואז להשתמש בתבנית כדי ליצור קבוצת מופעים מנוהלת (MIG), מבצעים את השלבים הבאים.

  1. יוצרים תבנית של הגדרות מכונה.

    gcloud

    gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --provisioning-model=FLEX_START \
        --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
        --machine-type=MACHINE_TYPE_NAME \
        --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
    

    מספקים את הערכים הבאים:

    • INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה חדשה.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. צריך לבחור אחת מהאפשרויות:

      • סוג המכונה A3 High (a3-highgpu-1g): TDX

      • סוג מכונה G4 (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: סוג מכונת ה-VM. בוחרים אחת מהאפשרויות הבאות:

    • IMAGE_PROJECT: הפרויקט שמכיל את קובץ אימג' של המערכת הנתמכת. צריך לבחור אחת מהאפשרויות:

      • סוג המכונה A3 High: ubuntu-os-cloud לתמונות של Ubuntu או confidential-vm-images לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

      • סוג מכונה G4 (תצוגה מקדימה): ubuntu-os-cloud לתמונות של Ubuntu או cos-cloud לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

    • IMAGE_FAMILY_NAME: שם המשפחה של תמונת מערכת ההפעלה שנתמכת על ידי מכונה וירטואלית חסויה שבה רוצים להשתמש. בוחרים את שם המשפחה של התמונה על סמך סוג המכונה:

      • סוג מכונה A3 High:

        • ubuntu-2204-lts לפרויקטים של תמונות Ubuntu.

        • cos-tdx-113-lts לפרויקטים של קובצי אימג' של מערכת הפעלה שמותאמת לקונטיינרים.

      • סוג מכונה G4 (תצוגה מקדימה):

        • ubuntu-2404-lts-amd64 לפרויקטים של תמונות Ubuntu.

        • cos-125-lts לפרויקטים של תמונות של מערכת הפעלה שמותאמת לקונטיינרים.

    • RUN_DURATION: משך הזמן שבו רוצים שהמופעים של המכונות הווירטואליות יפעלו. צריך להזין את הערך כמספר הימים, השעות, הדקות או השניות ואחריו את התווים d, h, m ו-s, בהתאמה. לדוגמה: 6d8h44m.

    • PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.

    REST

    כדי ליצור תבנית של הגדרות מכונה של Confidential VM, שולחים את בקשת ה-POST הבאה עם תוכן הבקשה המתאים.

    משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:

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

    משתמשים בתוכן הבא של בקשת JSON:

    {
      "name": "INSTANCE_TEMPLATE_NAME",
      "properties": {
        "confidentialInstanceConfig": {
          "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
        },
        "machineType": "MACHINE_TYPE_NAME",
        "scheduling": {
          "instanceTerminationAction": "DELETE",
          "maxRunDuration": {
            "seconds": "RUN_DURATION_IN_SECONDS"
          },
          "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
      }
    }
    

    כדי להפעיל את האתחול המאובטח, אפשר לכלול את האובייקט הבא לאתחולים של מכונות וירטואליות.

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

    מספקים את הערכים הבאים:

    • PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את התבנית.

    • REGION: האזור שבו רוצים ליצור את התבנית.

    • INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה חדשה.

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שרוצים להשתמש בה. צריך לבחור אחת מהאפשרויות:

      • סוג המכונה A3 High (a3-highgpu-1g): TDX

      • סוג מכונה G4 (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: סוג מכונת ה-VM. בוחרים אחת מהאפשרויות הבאות:

    • RUN_DURATION_IN_SECONDS: משך הזמן, בשניות, שבו רוצים שהמכונות הווירטואליות המבוקשות יפעלו. הערך חייב להיות בין 600 ל-604800 שניות.

    • IMAGE_PROJECT: הפרויקט שמכיל את קובץ אימג' של המערכת הנתמכת. צריך לבחור אחת מהאפשרויות:

      • סוג המכונה A3 High: ubuntu-os-cloud לתמונות של Ubuntu או confidential-vm-images לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

      • סוג מכונה G4 (תצוגה מקדימה): ubuntu-os-cloud לתמונות של Ubuntu או cos-cloud לתמונות של מערכת הפעלה שמותאמת לקונטיינרים.

    • IMAGE_FAMILY_NAME: שם המשפחה של תמונת מערכת ההפעלה שנתמכת על ידי מכונה וירטואלית חסויה שבה רוצים להשתמש. בוחרים את שם המשפחה של התמונה על סמך סוג המכונה:

      • סוג מכונה A3 High:

        • ubuntu-2204-lts לפרויקטים של תמונות Ubuntu.

        • cos-tdx-113-lts לפרויקטים של תמונות של מערכת הפעלה שמותאמת לקונטיינרים.

      • סוג מכונה G4 (תצוגה מקדימה):

        • ubuntu-2404-lts-amd64 לפרויקטים של תמונות Ubuntu.

        • cos-125-lts לפרויקטים של תמונות של מערכת הפעלה שמותאמת לקונטיינרים.

  2. יוצרים קבוצת MIG ושולחים בקשה לשינוי הגודל כדי להוסיף מכונות וירטואליות עם GPU בבת אחת.

  3. הצגת רשימת המכונות שקיימות ב-MIG.

    gcloud

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

    מספקים את הערכים הבאים:

    • INSTANCE_GROUP_NAME: השם של ה-MIG.

    • ZONE_NAME: האזור הנתמך שממנו רוצים לקבל רשימה של מופעים של מכונות וירטואליות.

    • PROJECT_ID: אופציונלי. המזהה של הפרויקט שממנו רוצים לקבל רשימה של מכונות וירטואליות.

    REST

    כדי להציג רשימה של כל התבניות, שולחים את בקשת ה-GET הבאה.

    משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:

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

    כדי לצמצם את רשימת המכונות לאזור ספציפי, שולחים את בקשת ה-GET הבאה.

    משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:

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

    מספקים את הערכים הבאים:

    • ZONE_NAME: האזור הנתמך שממנו רוצים לקבל רשימה של מופעים של מכונות וירטואליות.

    • PROJECT_ID: מזהה הפרויקט שממנו רוצים לקבל רשימה של מופעים של מכונות וירטואליות.

שימוש בהזמנות עם מכונות וירטואליות מסוג Confidential VM

אתם יכולים להשתמש בהזמנות כדי לוודא שיש לכם קיבולת למכונות וירטואליות מסוג Confidential VM רק עם סוג המכונה G4 ‏ (Preview).

כדי להשתמש בהזמנה עבור מופע Confidential VM:

  1. יוצרים הזמנה רגילה באזור הנתמך. אתם יכולים לשלוט באופן שבו מופעלת ההזמנה במופעים באמצעות הדגל --require-specific-reservation במהלך יצירת ההזמנה.

  2. יוצרים מכונת Confidential VM כדי להשתמש בהזמנה. כשיוצרים את מכונת ה-VM, כוללים את הדגל --confidential-compute-type=SEV כדי להפוך אותה למכונת Confidential VM. אופן השימוש של המכונה הזו בהזמנה תלוי בהגדרות הזיקה של ההזמנה.

בדוגמאות הבאות מוסבר איך להשתמש בהזמנות עם מופעים של Confidential VM. השיטה לשימוש בהזמנה תלויה באופן שבו ההזמנה נוצרה:

  • שימוש אוטומטי: אם יוצרים הזמנה בלי הדגל --require-specific-reservation, אפשר ליצור מכונה וירטואלית מסוג G4 Confidential VM עם מאפיינים תואמים (כמו סוג המכונה או האזור) כדי להשתמש בהזמנה באופן אוטומטי.

  • צריכה ספציפית: אם נוצרה הזמנה עם הדגל --require-specific-reservation, צריך לטרגט את ההזמנה באמצעות הדגלים --reservation-affinity=specific ו---reservation=RESERVATION_NAME כשיוצרים את המופע:

    gcloud compute instances create INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE_NAME \
        --machine-type=g4-standard-48 \
        --confidential-compute-type=SEV \
        --image-project=ubuntu-os-cloud \
        --image-family=ubuntu-2404-lts-amd64 \
        --reservation-affinity=specific \
        --reservation=RESERVATION_NAME
    

    מספקים את הערכים הבאים:

    • INSTANCE_NAME: השם של המופע החדש של המכונה הווירטואלית.

    • PROJECT_ID: אופציונלי. מזהה הפרויקט שבו רוצים ליצור את המכונה הווירטואלית.

    • ZONE_NAME: האזור הנתמך שבו רוצים ליצור את המכונה הווירטואלית.

    • RESERVATION_NAME: השם של ההזמנה.

כדי להבין איך מכונות וירטואליות צורכות הזמנות ואיך פועלת זיקה, אפשר לעיין במאמר בנושא צריכת הזמנות.

הפעלה של מצב מחשוב סודי ב-GPU

  1. מתחברים למכונה וירטואלית ב-MIG באמצעות הפקודה gcloud compute ssh.

    gcloud compute ssh
    
  2. מעדכנים את רשימת החבילות ומתקינים את הכלים והספריות הנדרשים.

    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. מתקינים את מנהלי ההתקנים (דרייברים) המתאימים של ה-GPU במכונה הווירטואלית. במכונות וירטואליות שמופעל בהן אתחול מאובטח, אפשר לעיין במאמר בנושא התקנת מנהלי התקנים של GPU (מכונות וירטואליות עם אתחול מאובטח). מומלץ להשתמש במנהלי התקנים של מודול ליבת NVIDIA בגרסה 580 ואילך.

  4. כדי להגדיר תקשורת מאובטחת בין ה-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
    
  5. מפעילים את מצב ההתמדה כדי ליצור חיבור מאובטח של פרוטוקול אבטחה ומודל נתונים (SPDM) בין ה-GPU לבין מנהל ההתקן של ה-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. מפעילים מחדש את מכונת ה-VM כדי להחיל את ההגדרות של LKCA ומצב ההתמדה.

    sudo reboot
    
  7. מתחברים למכונה וירטואלית ב-MIG באמצעות הפקודה gcloud compute ssh.

    gcloud compute ssh
    
  8. (אופציונלי) מתקינים את דוגמאות ה-CUDA שתומכות בגרסת מנהל ההתקן שדרושה לכם.

    wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.9.tar.gz
    tar xzvf cuda-samples.tar.gz
    

תמחור

במהלך תקופת התצוגה המקדימה, לא נגבים תשלומים נוספים על מכונות וירטואליות חסויות מסוג G4. התשלומים האלה כוללים את התשלום הנוסף על Confidential Computing ואת דמי הרישיון של NVIDIA. עדיין חלים חיובים רגילים על משאבי Compute Engine הבסיסיים, כמו מכונות מסוג G4, יחידות GPU ואחסון. התשלומים הנוספים האלה על Confidential Computing יחולו אחרי שתקופת התצוגה המקדימה תסתיים ותהיה זמינות כללית (GA). פרטים על התמחור זמינים במאמר תמחור של מכונות וירטואליות חסויות.

המאמרים הבאים