כדי להשתמש בGPU עם Confidential VMs, צריך ליצור מכונה וירטואלית באמצעות סוג מכונה נתמך ומודל הקצאה של מכונה. אחרי שיוצרים את מכונת ה-VM, מפעילים את מצב Confidential Computing ב-GPU המצורף.
מכונות וירטואליות (VM) חסויות עם מעבדי GPU של NVIDIA זמינות בסוגי המכונות הבאים:
מכונה מסוג A3 High: מעבדי GPU מסוג NVIDIA H100 עם Intel TDX. תמיכה במודלים של הקצאת משאבים מסוג Spot ו-Flex-start.
מכונה מסוג G4: NVIDIA RTX PRO 6000 עם AMD SEV. תמיכה במודלים של הקצאה רגילה (על פי דרישה), ספוט והתחלה גמישה (Flex-start), והזמנות.
כשמשתמשים ב-GPU מסוג NVIDIA RTX Pro 6000 עם מכונות וירטואליות מסוג Confidential G4, משלמים באופן אוטומטי דמי רישיון על תוכנת המחשב והשירותים של NVIDIA Confidential Computing. לפרטים נוספים, קראו את המאמר תמחור של Confidential Computing עם GPUs.
לפני שיוצרים מכונה של Confidential VM עם GPU, צריך לוודא שיש מספיק מכסת GPU. למידע נוסף, ראו מכסות.
יצירת Confidential VM עם GPU
כדי ליצור מכונה וירטואלית של Confidential VM עם GPU מצורף, משתמשים באחד ממודלי ההקצאה הבאים:
Standard (on-demand): יצירת מכונה וירטואלית רגילה (על פי דרישה) עם אופטימיזציה למאיצים. המודל הזה זמין רק למכונות מסוג G4. במאמר מודל רגיל (על פי דרישה) או מודל Spot מוסבר איך עושים את זה.
Spot: יצירת מכונה וירטואלית במודל Spot עם אופטימיזציה למאיצים, לסוגי המכונות A3 High או G4. מודל רגיל (על פי דרישה) או מודל Spot
Flex-start: יוצרים קבוצת מופעי מכונה מנוהלים (MIG) למכונות מסוג A3 High או G4. איך משתמשים במודל "התחלה גמישה"?
מודל רגיל (על פי דרישה) או מודל ספוט
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למכונות וירטואליות במודל Spot.סוג מכונה G4:
STANDARDלמכונות וירטואליות רגילות (על פי דרישה) אוSPOTלמכונות וירטואליות במודל Spot. אם לא מציינים ערך, ערך ברירת המחדל הואSTANDARD.
CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שבה רוצים להשתמש. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High (
a3-highgpu-1g):TDXמכונה מסוג G4 (
g4-standard-48):SEV
MACHINE_TYPE_NAME: סוג המכונה הווירטואלית. בוחרים אחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
ZONE_NAME: האזור הנתמך שבו יוצרים את המכונה הווירטואלית.
IMAGE_PROJECT: הפרויקט שמכיל את התמונה של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
IMAGE_FAMILY_NAME: משפחת התמונות של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
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: סוג המכונה הווירטואלית. בוחרים אחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
CONFIDENTIAL_COMPUTING_TECHNOLOGY: סוג הטכנולוגיה של Confidential Computing שבה רוצים להשתמש. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High (
a3-highgpu-1g):TDXמכונה מסוג G4 (
g4-standard-48):SEV
PROVISIONING_MODEL: מודל ההקצאה שנתמך בסדרת המכונות. צריך לבחור אחת מהאפשרויות:סוג המכונה A3 High:
SPOTלמכונות וירטואליות במודל Spot.סוג מכונה G4:
STANDARDלמכונות וירטואליות רגילות (על פי דרישה) אוSPOTלמכונות וירטואליות במודל Spot. אם לא מציינים ערך, ערך ברירת המחדל הואSTANDARD.
IMAGE_PROJECT: הפרויקט שמכיל את התמונה של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
IMAGE_FAMILY: משפחת התמונות של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
מודל Flex-start
כדי להשתמש במודל Flex-start, קודם יוצרים תבנית של הגדרות מכונה ואז משתמשים בה כדי ליצור קבוצת מופעי מכונה מנוהלים (MIG). אחרי זה תוכלו להוסיף מכונות וירטואליות עם GPU ל-MIG באמצעות בקשות לשינוי כמות.
שימוש בבקשה לשינוי כמות ב-MIG עם מודל ההקצאה "התחלה גמישה" משפר את הזמינות של מכונות וירטואליות עם GPU. מידע נוסף זמין במאמר מידע על בקשות לשינוי כמות ב-MIG.
לפני שמתחילים
- כדי ליצור MIG, קראו את הדרישות המוקדמות של MIG.
- כדי ליצור בקשה לשינוי כמות ב-MIG, קראו את המגבלות של בקשות לשינוי כמות.
יצירת קבוצת MIG עם מכונות וירטואליות של GPU
כדי ליצור תבנית של הגדרות מכונה, ולאחר מכן להשתמש בתבנית ליצירת קבוצת MIG, השלימו את השלבים הבאים.
יוצרים תבנית של הגדרות מכונה.
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 \ --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: סוג המכונה הווירטואלית. בוחרים אחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
IMAGE_PROJECT: הפרויקט שמכיל את התמונה של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
IMAGE_FAMILY_NAME: משפחת קובצי האימג' של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU שבהם רוצים להשתמש.
RUN_DURATION: משך הזמן שבו אתם רוצים שהמכונות הווירטואליות המבוקשות יפעלו. צריך להזין את הערך כמספר של ימים, שעות, דקות או שניות, ואחריוd,h,mו-s, בהתאמה. לדוגמה:6d8h44m.
PROJECT_ID: מזהה הפרויקט שבו יוצרים את המכונה הווירטואלית.
REST
כדי ליצור תבנית של הגדרות מכונה של Confidential VMs, שולחים את בקשת ה-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" } ], "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: סוג המכונה הווירטואלית. בוחרים אחת מהאפשרויות הבאות:a3-highgpu-1gg4-standard-48
RUN_DURATION_IN_SECONDS: משך הזמן, בשניות, שבו אתם רוצים שהמכונות הווירטואליות המבוקשות יפעלו. הערך צריך להיות בין600ל-604800שניות.
IMAGE_PROJECT: הפרויקט שמכיל את התמונה של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU.
IMAGE_FAMILY_NAME: משפחת קובצי האימג' של מערכת ההפעלה שנתמכת ב-Confidential VM ל-GPU שבהם רוצים להשתמש.
יוצרים MIG ובקשה לשינוי כמות כדי להוסיף מכונות וירטואליות של GPU בבת אחת.
מציגים את המכונות שקיימות ב-MIG.
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_IDמספקים את הערכים הבאים:
INSTANCE_GROUP_NAME: השם של קבוצת המכונות המנוהלת.
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 VMs רק עם סוג המכונה G4.
כדי להשתמש בהזמנה ל-Confidential VM instance:
יוצרים הזמנה רגילה באזור הנתמך. כדי לקבוע איך המכונות יצרכו את המקום השמור, אתם יכולים להשתמש בדגל
--require-specific-reservationכשאתם יוצרים את המקום השמור.יצירת מכונה וירטואלית של Confidential 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: שם ההזמנה.
במאמר צריכת הזמנות מוסבר איך מכונות וירטואליות צורכות הזמנות ואיך פועלת הזיקה.
הפעלת Confidential Computing ב-GPU
מתחברים למכונה וירטואלית בקבוצת המכונות המנוהלת באמצעות הפקודה gcloud compute ssh.
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מתקינים את מנהלי ההתקנים המתאימים של ה-GPU במכונה הווירטואלית. במכונות וירטואליות שמופעל בהן אתחול מאובטח, קראו את המאמר התקנת מנהלי התקנים של GPU (מכונות וירטואליות עם אתחול מאובטח). אנחנו ממליצים להשתמש בגרסה 580 ומעלה של מנהלי ההתקנים של מודול הליבה (kernel) הפתוח של NVIDIA.
כדי להגדיר תקשורת מאובטחת בין ה-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מפעילים את מצב ההתמדה כדי ליצור חיבור מאובטח של פרוטוקול אבטחה ומודל נתונים (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מפעילים מחדש את המכונה הווירטואלית כדי להחיל את ההגדרות של LKCA ומצב ההתמדה.
sudo rebootמתחברים למכונה וירטואלית בקבוצת המכונות המנוהלת באמצעות הפקודה gcloud compute ssh.
gcloud compute ssh(אופציונלי) מתקינים את דוגמאות ה-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
המאמרים הבאים
במאמר מכונות וירטואליות של GPU ומכסות הקצאה שניתנות להפסקה לפני הזמן מוסבר איך המכסות מנוצלות.